Quay lại blog

RAG & dữ liệuHướng dẫn

Một câu hỏi RAG tốn bao nhiêu: gửi bao nhiêu đoạn

Ước tính token trong một câu hỏi RAG, xem chi phí 1.000 và 100.000 câu hỏi theo giá trực tiếp, và chọn số đoạn phù hợp với ngân sách của bạn.

Bởi CheapTokens TeamĐã xuất bản 7 phút đọc

Sơ đồ: một câu hỏi và các đoạn truy xuất chảy vào mô hình, chi phí phụ thuộc vào số đoạn
Trên trang này
  1. Một yêu cầu RAG gồm những gì
  2. 1.000 câu hỏi tốn bao nhiêu
  3. Top-k: mỗi đoạn thêm cùng một lượng
  4. Toàn bộ tài liệu trong prompt, hay bốn đoạn
  5. Gửi yêu cầu
  6. Bốn cách giảm đầu vào

Chatbot tài liệu của bạn hoạt động, hóa đơn đầu tiên đến, và nó lớn hơn mức mà các câu hỏi đáng phải trả. Trong hầu hết mọi thiết lập RAG, tiền đổ vào một chỗ: các đoạn được truy xuất mà bạn dán trước mỗi câu hỏi. Một câu hỏi RAG tốn số token của câu hỏi, hướng dẫn của bạn và N đoạn ở phía đầu vào, cộng với một câu trả lời ngắn ở phía đầu ra. Các đoạn là phần bạn kiểm soát, và mỗi đoạn thêm cùng một số token vào mọi yêu cầu.

Hướng dẫn này đếm một yêu cầu, định giá 1.000 và 100.000 yêu cầu theo giá trực tiếp, và cho thấy điều gì thay đổi khi bạn chuyển top-k từ 3 lên 10. Bản thân việc truy xuất (vector store của bạn, cách chia đoạn của bạn) vẫn ở phía bạn; chỉ lệnh gọi sinh cuối cùng mới đến API mô hình. Nếu việc tính phí đầu vào và đầu ra còn mới với bạn, hãy bắt đầu với token đầu vào so với đầu ra.

Một yêu cầu RAG gồm những gì#

Giả sử bạn chạy một bot hỗ trợ trên tài liệu công ty. Một khách hàng hỏi, "Làm sao để đặt lại đăng nhập hai yếu tố?", bộ truy xuất của bạn trả về năm đoạn tốt nhất, và bạn gửi đến mô hình:

  • một system prompt: "Chỉ trả lời từ ngữ cảnh. Nếu không có, hãy nói vậy." — khoảng 300 token khi bạn thêm các quy tắc định dạng;
  • câu hỏi với một chút ngữ cảnh trò chuyện — khoảng 200 token;
  • 5 đoạn khoảng 500 token mỗi đoạn — 5 × 500 = 2.500 token;
  • câu trả lời: hai hoặc ba đoạn ngắn — khoảng 300 token đầu ra.

Phía đầu vào là 2.500 + 300 + 200 = 3.000 token, phía đầu ra khoảng 300. Đây là các giả định của tác giả cho một bot hỗ trợ điển hình; hãy thay bằng số của bạn. Mọi thứ bên dưới dùng một yêu cầu này làm đơn vị.

Cách nhanh để thấy hình dạng: các đoạn chiếm khoảng năm phần sáu toàn bộ đầu vào, và đầu vào gấp mười lần câu trả lời. Hãy tự thử ước tính:

Đoán số

Yêu cầu trên gửi bao nhiêu token đầu vào?

Hiện đáp án

Trả lời: 3.000

3.000: 5 đoạn × 500 = 2.500, cộng 300 cho system prompt và 200 cho câu hỏi. Các đoạn chiếm ưu thế.

1.000 câu hỏi tốn bao nhiêu#

Một yêu cầu quá nhỏ để cảm nhận, nên hãy nhân lên. Với 3.000 token vào và 300 ra, 1.000 câu hỏi gửi 3.000.000 token đầu vào và tạo 300.000 token đầu ra. Kéo các thanh trượt bên dưới để khớp với bot của bạn; trang sẽ tính lại theo giá trực tiếp cho mọi mô hình.

Máy tính chi phí

Một ngày của bot hỗ trợ

Token đầu vào mỗi yêu cầu: 3.000 · Token đầu ra mỗi yêu cầu: 300 · Số yêu cầu mỗi ngày: 1.000

Mô hìnhMỗi ngàyMỗi tháng
GLM-5.3-Flash$0.072$2.16
DeepSeek-V4-Flash$0.075$2.25
MiniMax-M2.7$0.195$5.85

Bảng hiển thị cùng khối lượng công việc cho cả ba mô hình, với tham chiếu OpenRouter bên cạnh. Tính tổng, gồm cả đầu vào và đầu ra, mỗi mô hình đều rẻ hơn OpenRouter ở đây.

Mô hình Mỗi yêu cầu 1.000 yêu cầu OpenRouter, 1.000 yêu cầu
GLM-5.3-Flash $0.000072 $0.072 $0.147
DeepSeek-V4-Flash $0.000075 $0.075 $0.19
MiniMax-M2.7 $0.0002 $0.195 $1.26

3.000 token đầu vào và 300 token đầu ra mỗi yêu cầu. Giá trên 1 triệu token là giá hiện hành và thay đổi cùng với biểu phí của chúng tôi; cột OpenRouter hiển thị giá tham chiếu cho cùng khối lượng công việc.

Và với 100.000 câu hỏi? Đó là 300.000.000 token vào và 30.000.000 ra. Trên DeepSeek-V4-Flash là $7.50, trên GLM-5.3-Flash là $7.20, trên MiniMax-M2.7 là $19.50. Giá cố định theo mô hình, không có giờ cao điểm, nên một lô ban đêm và một cuộc trò chuyện ban ngày tốn cùng một giá mỗi token. Xem danh sách giá đầy đủ trên trang giá.

Top-k: mỗi đoạn thêm cùng một lượng#

Đây là kịch bản thứ hai: một trợ lý wiki nội bộ. Ai đó đề xuất, "Hãy gửi 10 đoạn thay vì 3, phòng khi cần." Đầu vào tăng theo đường thẳng: mỗi đoạn là thêm 500 token trong mọi yêu cầu.

Ba đoạn so với mười: cùng câu hỏi, kích thước đầu vào khác nhau
Token đầu vào mỗi yêu cầu ở top-k 3 và top-k 10, theo giả định 500 token mỗi đoạn

2.000 so với 5.500 token: câu trả lời dài như nhau, nên toàn bộ khác biệt trong hóa đơn của trợ lý wiki là đầu vào. Việc nó có mang lại câu trả lời tốt hơn hay không là câu hỏi về chất lượng: vượt qua điểm mà đoạn đúng đã nằm trong ngữ cảnh, các đoạn thừa chủ yếu thêm nhiễu và chi phí. Một cách thực tế để chọn k là lấy một tập câu hỏi thực, kiểm tra ở k nào đoạn đúng xuất hiện, và dừng ở mức cao hơn một chút.

Cửa sổ ngữ cảnh là giới hạn khác. Cả ba mô hình ở đây đều có đủ chỗ cho top-k thông thường: 180K token cho MiniMax-M2.7, 380K cho DeepSeek-V4-Flash và 390K cho GLM-5.3-Flash. Giới hạn đầu ra khác nhau: tối đa 8.192 token mỗi câu trả lời cho GLM-5.3-Flash và MiniMax-M2.7, tối đa 32.768 cho DeepSeek-V4-Flash, điều này quan trọng nếu câu trả lời của bạn là báo cáo dài chứ không phải trả lời ngắn.

Chọn trường hợp của bạn

Trường hợp RAG của bạn là gì?

Câu trả lời ngắn từ vài đoạn

Một bot hỗ trợ hoặc FAQ với top-k 3–6 và câu trả lời vài trăm token phù hợp với cả ba mô hình. Chọn theo chất lượng trên câu hỏi của bạn, rồi để bảng chi phí ở trên quyết định.

Câu trả lời dài và tóm tắt

Nếu câu trả lời kéo dài hàng nghìn token, DeepSeek-V4-Flash cho phép tối đa 32.768 token đầu ra mỗi câu trả lời và ngữ cảnh 380K.

Nhiều tài liệu mỗi yêu cầu

Nếu bạn muốn gộp nhiều đoạn hoặc toàn bộ phần, GLM-5.3-Flash có ngữ cảnh lớn nhất trong ba mô hình, 390K.

Toàn bộ tài liệu trong prompt, hay bốn đoạn#

Kịch bản thứ ba: hỏi đáp hợp đồng. Phiên bản lười biếng dán toàn bộ PDF 30.000 token vào mọi câu hỏi. Phiên bản truy xuất gửi câu hỏi, hướng dẫn và bốn đoạn liên quan khoảng 650 token mỗi đoạn, tổng cộng khoảng 3.000 token. Cùng 1.000 câu hỏi, cùng câu trả lời 300 token:

Chi phí 1.000 câu hỏi hợp đồng trên DeepSeek-V4-Flash
  • Toàn bộ tài liệu 30.000 token trong mọi yêu cầu$0.48
  • Câu hỏi, hướng dẫn và 4 đoạn truy xuất, khoảng 3.000 token$0.075

Tài liệu đầy đủ gửi gấp mười lần đầu vào, 30.000 ÷ 3.000 = 10, cho cùng một câu hỏi. Nó vẫn hợp lý cho một câu hỏi một lần về một tài liệu vừa ngữ cảnh. Đối với một bot trả lời cả ngày, đó là mặc định đắt đỏ. Nếu phần lớn đầu vào đó là cùng một văn bản mỗi lần, hãy đọc về bộ nhớ đệm prompt.

Gửi yêu cầu#

Dưới đây là bước sinh. Phần truy xuất là của bạn: chunks là bất cứ thứ gì vector store của bạn trả về. Cùng đoạn mã hoạt động với OpenAI SDK hoặc curl thuần.

Hỏi một câu với các đoạn đã truy xuất

Python

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

bash
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?"}
    ]
  }'

Dòng cuối của ví dụ Python là dòng hữu ích. usage.prompt_tokens là đầu vào thực của bạn mỗi câu hỏi; so sánh với ước tính 3.000 và thay giả định của tôi bằng số của bạn. Dùng id mô hình đầy đủ, như trong ví dụ: deepseek-ai/DeepSeek-V4-Flash-0731. Các id được liệt kê trong tài liệu. Thiết lập đầy đủ có trong tài liệu, và nếu bạn muốn thấy token của bot cộng dồn qua một cuộc đối thoại, tại sao một cuộc trò chuyện dài tốn hơn đề cập phần lịch sử.

Bốn cách giảm đầu vào#

Bắt đầu với max_tokens, giới hạn câu trả lời và bảo vệ bạn khỏi phản hồi lan man. Sau đó giảm k xuống giá trị nhỏ nhất vẫn tìm được đoạn đúng. Làm các đoạn chặt hơn, để 500 token mang 500 token ý nghĩa chứ không phải tiêu đề và văn bản mẫu. Loại bỏ các đoạn trùng lặp trước khi gửi: hai đoạn gần giống nhau tốn gấp đôi và nói một lần. Và đo lường với usage trên lưu lượng thực, vì phỏng đoán về đoạn 500 token chỉ là phỏng đoán. Để có cái nhìn rộng hơn về nơi token đi trong một lệnh gọi API, xem một yêu cầu dùng bao nhiêu token.

Đưa số token mỗi yêu cầu của bạn vào máy tính ở trên để định giá bot trên cả ba mô hình; nếu câu trả lời của bạn dài, DeepSeek-V4-Flash là mô hình nên xem đầu tiên.