RAG และข้อมูลคู่มือ
คำถาม RAG มีค่าใช้จ่ายเท่าไร: ควรส่งกี่ชิ้นส่วน
ประมาณการโทเคนในหนึ่งคำถาม RAG ดูค่าใช้จ่ายของ 1,000 และ 100,000 คำถามตามราคาจริง และเลือกจำนวนชิ้นส่วนที่พอดีงบประมาณของคุณ

ในหน้านี้
แชทบอทเอกสารของคุณทำงานได้ ใบแจ้งหนี้ใบแรกมาถึง และมันใหญ่กว่าที่คำถามควรจะเป็น ในเกือบทุกการตั้งค่า RAG เงินจะไปที่จุดเดียว: ชิ้นส่วนที่ดึงมา (retrieved chunks) ที่คุณวางไว้หน้าทุกคำถาม หนึ่งคำถาม RAG มีค่าใช้จ่ายเป็นโทเคนของคำถาม คำแนะนำของคุณ และ N ชิ้นส่วนทางฝั่งอินพุต บวกคำตอบสั้น ๆ ทางฝั่งเอาต์พุต ชิ้นส่วนคือส่วนที่คุณควบคุมได้ และแต่ละชิ้นจะเพิ่มจำนวนโทเคนเท่ากันในทุก ๆ คำขอ
คู่มือนี้จะนับหนึ่งคำขอ ราคา 1,000 และ 100,000 คำขอตามราคาจริง และแสดงสิ่งที่เปลี่ยนไปเมื่อคุณย้าย top-k จาก 3 เป็น 10 การดึงข้อมูลเอง (vector store, การแบ่งชิ้นส่วนของคุณ) ยังอยู่ฝั่งคุณ มีเพียงการเรียกสร้างคำตอบครั้งสุดท้ายเท่านั้นที่ไปยัง API ของโมเดล หากการคิดค่าบริการอินพุตและเอาต์พุตเป็นเรื่องใหม่สำหรับคุณ เริ่มจาก โทเคนอินพุตกับเอาต์พุต
อะไรบ้างที่อยู่ในหนึ่งคำขอ RAG#
สมมติว่าคุณรันบอทสนับสนุนบนเอกสารบริษัท ลูกค้าถามว่า "ฉันจะรีเซ็ตล็อกอินสองขั้นตอนได้อย่างไร?" ตัวดึงข้อมูลของคุณคืนข้อความที่ดีที่สุดห้าท่อน และคุณส่งสิ่งนี้ไปยังโมเดล:
- system prompt: "ตอบจากบริบทเท่านั้น หากไม่มีให้บอกว่าไม่มี" — ประมาณ 300 โทเคนเมื่อคุณเพิ่มกฎการจัดรูปแบบ;
- คำถามพร้อมบริบทแชทเล็กน้อย — ประมาณ 200 โทเคน;
- 5 ชิ้นส่วน ชิ้นละประมาณ 500 โทเคน — 5 × 500 = 2,500 โทเคน;
- คำตอบ: สองหรือสามย่อหน้าสั้น ๆ — ประมาณ 300 โทเคนออก
ฝั่งอินพุตคือ 2,500 + 300 + 200 = 3,000 โทเคน ฝั่งเอาต์พุตประมาณ 300 นี่คือสมมติฐานของผู้เขียนสำหรับบอทสนับสนุนทั่วไป เปลี่ยนเป็นตัวเลขของคุณเอง ทุกอย่างด้านล่างใช้คำขอนี้เป็นหน่วย
วิธีเร็วในการดูรูปร่าง: ชิ้นส่วนคิดเป็นประมาณห้าในหกของอินพุตทั้งหมด และอินพุตเป็นสิบเท่าของคำตอบ ลองประมาณการด้วยตัวเอง:
ทายตัวเลข
คำขอข้างต้นส่งโทเคนอินพุตกี่โทเคน?
คำตอบของคุณ
010,000
แสดงคำตอบ
คำตอบ: 3,000
3,000: 5 ชิ้นส่วน × 500 = 2,500 บวก 300 สำหรับ system prompt และ 200 สำหรับคำถาม ชิ้นส่วนครองสัดส่วนหลัก
1,000 คำถามมีค่าใช้จ่ายเท่าไร#
หนึ่งคำขอเล็กเกินกว่าจะรู้สึกได้ ดังนั้นขยายขนาด ด้วย 3,000 โทเคนเข้าและ 300 ออก 1,000 คำถามส่ง 3,000,000 โทเคนอินพุตและสร้าง 300,000 โทเคนเอาต์พุต ลากแถบเลื่อนด้านล่างให้ตรงกับบอทของคุณ เว็บไซต์จะคำนวณใหม่ตามราคาจริงสำหรับทุกโมเดล
เครื่องคำนวณค่าใช้จ่าย
หนึ่งวันของบอทสนับสนุน
โทเค็นอินพุตต่อคำขอ: 3,000 · โทเค็นเอาต์พุตต่อคำขอ: 300 · คำขอต่อวัน: 1,000
| โมเดล | ต่อวัน | ต่อเดือน |
|---|---|---|
| GLM-5.3-Flash$0.02$0.04 | $0.072 | $2.16 |
| DeepSeek-V4-Flash$0.015$0.10 | $0.075 | $2.25 |
| MiniMax-M2.7$0.05$0.15 | $0.195 | $5.85 |
ตารางแสดงภาระงานเดียวกันสำหรับทั้งสามโมเดล พร้อมข้อมูลอ้างอิง OpenRouter อยู่ข้าง ๆ เมื่อนับรวมทั้งหมด ทั้งอินพุตและเอาต์พุตรวมกัน แต่ละตัวถูกกว่า OpenRouter ในที่นี้
| โมเดล | Input $/1M | Output $/1M | ต่อคำขอ | 1,000 คำขอ | OpenRouter, 1,000 คำขอ |
|---|---|---|---|---|---|
| GLM-5.3-Flash | $0.02 | $0.04 | $0.000072 | $0.072 | $0.147 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.000075 | $0.075 | $0.19 |
| MiniMax-M2.7 | $0.05 | $0.15 | $0.0002 | $0.195 | $1.26 |
3,000 โทเค็นอินพุตและ 300 โทเค็นเอาต์พุตต่อคำขอ ราคาต่อ 1M โทเค็นเป็นราคาปัจจุบันและเปลี่ยนแปลงไปพร้อมกับอัตราค่าบริการของเรา คอลัมน์ OpenRouter แสดงราคาอ้างอิงสำหรับปริมาณงานเดียวกัน
แล้วที่ 100,000 คำถามล่ะ? นั่นคือ 300,000,000 โทเคนเข้าและ 30,000,000 ออก บน DeepSeek-V4-Flash นั่นคือ $7.50 บน GLM-5.3-Flash $7.20 บน MiniMax-M2.7 $19.50 ราคาคงที่ต่อโมเดล ไม่มีช่วงเวลาเร่งด่วน ดังนั้นแบตช์กลางคืนและแชทกลางวันมีค่าใช้จ่ายต่อโทเคนเท่ากัน ดูรายการราคาเต็มได้ที่ หน้าราคา
Top-k: ทุกชิ้นส่วนเพิ่มจำนวนเท่ากัน#
นี่คือสถานการณ์ที่สอง: ผู้ช่วยวิกิภายในองค์กร มีคนแนะนำว่า "ส่ง 10 ชิ้นส่วนแทน 3 ชิ้น เผื่อไว้" อินพุตเติบโตเป็นเส้นตรง: แต่ละชิ้นส่วนคืออีก 500 โทเคนในทุกคำขอ

2,000 เทียบกับ 5,500 โทเคน: คำตอบมีความยาวเท่ากัน ดังนั้นความแตกต่างทั้งหมดในบิลของผู้ช่วยวิกิคืออินพุต ไม่ว่ามันจะให้คำตอบที่ดีกว่าหรือไม่เป็นคำถามด้านคุณภาพ: เมื่อเลยจุดที่ข้อความที่ถูกต้องอยู่ในบริบทแล้ว ชิ้นส่วนเพิ่มเติมส่วนใหญ่เพิ่มสัญญาณรบกวนและค่าใช้จ่าย วิธีปฏิบัติในการเลือก k คือนำชุดคำถามจริงมาตรวจสอบว่า k ใดที่ข้อความที่ถูกต้องปรากฏ แล้วหยุดที่ค่าเหนือกว่านั้นเล็กน้อย
หน้าต่างบริบทคือขีดจำกัดอีกอย่าง ทั้งสามโมเดลที่นี่มีที่ว่างเพียงพอสำหรับ top-k ทั่วไป: 180K โทเคนสำหรับ MiniMax-M2.7, 380K สำหรับ DeepSeek-V4-Flash และ 390K สำหรับ GLM-5.3-Flash ขีดจำกัดเอาต์พุตแตกต่างกัน: สูงสุด 8,192 โทเคนต่อคำตอบสำหรับ GLM-5.3-Flash และ MiniMax-M2.7 สูงสุด 32,768 สำหรับ DeepSeek-V4-Flash ซึ่งสำคัญหากคำตอบของคุณเป็นรายงานยาวแทนการตอบสั้น
เลือกกรณีของคุณ
กรณี RAG ของคุณคืออะไร?
เลือกตัวเลือกเพื่อดูคำตอบ
คำตอบสั้นจากชิ้นส่วนไม่กี่ชิ้น
บอทสนับสนุนหรือ FAQ ที่มี top-k 3–6 และคำตอบไม่กี่ร้อยโทเคนเข้ากับทั้งสามโมเดล เลือกตามคุณภาพบนคำถามของคุณเอง แล้วให้ตารางค่าใช้จ่ายด้านบนตัดสิน
คำตอบยาวและสรุป
หากคำตอบยาวถึงหลายพันโทเคน DeepSeek-V4-Flash อนุญาตสูงสุด 32,768 โทเคนเอาต์พุตต่อคำตอบและบริบท 380K
เอกสารหลายฉบับต่อคำขอ
หากคุณต้องการรวมหลายท่อนหรือทั้งส่วน GLM-5.3-Flash มีบริบทใหญ่ที่สุดในสามตัวที่ 390K
เอกสารทั้งฉบับในพรอมต์ หรือสี่ชิ้นส่วน#
สถานการณ์ที่สาม: ถามตอบสัญญา เวอร์ชันขี้เกียจวาง PDF ทั้ง 30,000 โทเคนลงในทุกคำถาม เวอร์ชันดึงข้อมูลส่งคำถาม คำแนะนำ และสี่ชิ้นส่วนที่เกี่ยวข้องชิ้นละประมาณ 650 โทเคน รวมประมาณ 3,000 โทเคน 1,000 คำถามเดียวกัน คำตอบ 300 โทเคนเดียวกัน:
เอกสารเต็มส่งอินพุตสิบเท่า 30,000 ÷ 3,000 = 10 สำหรับคำถามเดียวกัน ยังสมเหตุสมผลสำหรับคำถามครั้งเดียวเกี่ยวกับเอกสารที่พอดีในบริบท สำหรับบอทที่ตอบทั้งวัน มันคือค่าเริ่มต้นที่แพง หากอินพุตจำนวนมากเป็นข้อความเดิมทุกครั้ง อ่านเกี่ยวกับ prompt caching
ส่งคำขอ#
ด้านล่างคือขั้นตอนการสร้างคำตอบ ส่วนการดึงข้อมูลเป็นของคุณ: chunks คือสิ่งที่ vector store ของคุณคืนมา โค้ดเดียวกันใช้ได้กับ OpenAI SDK หรือ curl ธรรมดา
ถามคำถามพร้อมชิ้นส่วนที่ดึงมา
Python
from openai import OpenAI
client = OpenAI(
base_url="https://api.cheaptokens.dev/v1",
api_key="YOUR_CHEAPTOKENS_KEY",
)
chunks = ["Chunk 1 text...", "Chunk 2 text...", "Chunk 3 text..."]
context = "\n\n---\n\n".join(chunks)
resp = client.chat.completions.create(
model="deepseek-ai/DeepSeek-V4-Flash-0731",
max_tokens=400,
messages=[
{"role": "system", "content": "Answer only from the context. If the answer is not there, say so."},
{"role": "user", "content": f"Context:\n{context}\n\nQuestion: How do I reset two-factor login?"},
],
)
print(resp.choices[0].message.content)
print(resp.usage.prompt_tokens, resp.usage.completion_tokens)curl
curl https://api.cheaptokens.dev/v1/chat/completions \
-H "Authorization: Bearer YOUR_CHEAPTOKENS_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-ai/DeepSeek-V4-Flash-0731",
"max_tokens": 400,
"messages": [
{"role": "system", "content": "Answer only from the context. If the answer is not there, say so."},
{"role": "user", "content": "Context:\nChunk 1...\n\nQuestion: How do I reset two-factor login?"}
]
}'บรรทัดสุดท้ายของตัวอย่าง Python คือบรรทัดที่มีประโยชน์ usage. คืออินพุตจริงของคุณต่อคำถาม เปรียบเทียบกับค่าประมาณ 3,000 และแทนที่สมมติฐานของผมด้วยตัวเลขของคุณ ใช้ id โมเดลเต็มดังในตัวอย่าง: deepseek- id ต่าง ๆ ระบุไว้ในเอกสาร การตั้งค่าเต็มอยู่ใน เอกสาร และหากคุณต้องการดูว่าโทเคนของบอทสะสมอย่างไรตลอดบทสนทนา ทำไมแชทยาวจึงมีค่าใช้จ่ายมากกว่า ครอบคลุมส่วนประวัติ
สี่วิธีลดอินพุต#
เริ่มจาก max_tokens ซึ่งจำกัดคำตอบและปกป้องคุณจากคำตอบที่หลุดควบคุม จากนั้นลด k ให้น้อยที่สุดที่ยังพบข้อความที่ถูกต้อง ทำให้ชิ้นส่วนกระชับขึ้น เพื่อให้ 500 โทเคนบรรจุความหมาย 500 โทเคน ไม่ใช่หัวเรื่องและข้อความซ้ำซาก ลบชิ้นส่วนที่ซ้ำกันก่อนส่ง: สองท่อนที่เกือบเหมือนกันมีค่าใช้จ่ายสองเท่าแต่บอกครั้งเดียว และวัดด้วย usage บนทราฟฟิกจริง เพราะการเดาเกี่ยวกับชิ้นส่วน 500 โทเคนเป็นเพียงการเดา สำหรับภาพรวมว่าโทเคนไปไหนในการเรียก API ดู หนึ่งคำขอใช้กี่โทเคน
ใส่โทเคนต่อคำขอของคุณเองลงในเครื่องคำนวณด้านบนเพื่อคิดราคาบอทของคุณบนทั้งสามโมเดล หากคำตอบของคุณยาว DeepSeek-V4-Flash คือตัวที่ควรดูก่อน



