RAG 与数据指南
一个 RAG 问题要花多少钱:发送多少片段
估算一个 RAG 问题中的 token,按实时价格查看 1,000 和 100,000 个问题的成本,并选择适合你预算的片段数量。

你的文档聊天机器人运行正常,第一张账单来了,却比这些问题应得的费用更高。几乎每个 RAG 配置中,钱都花在同一个地方:你在每个问题前粘贴的检索片段。一个 RAG 问题的成本包括输入侧的问题、指令和 N 个片段的 token,以及输出侧的简短回答。片段是你可控的部分,每个片段都会给每一次请求增加相同数量的 token。
本指南统计一次请求,按实时价格计算 1,000 次和 100,000 次请求的费用,并展示将 top-k 从 3 调到 10 时会发生什么变化。检索本身(你的向量存储、你的分块)留在你这边;只有最终的生成调用会发到模型 API。如果你对输入和输出计费还不熟悉,请先阅读输入与输出 token。
一次 RAG 请求包含什么#
假设你在公司文档上运行一个支持机器人。客户问:“如何重置双因素登录?”,你的检索器返回五个最佳段落,然后你把以下内容发给模型:
- 一个系统提示:“只根据上下文回答。如果上下文中没有,就说明没有。”——加上格式规则后大约 300 token;
- 问题加上一点聊天上下文——大约 200 token;
- 5 个片段,每个约 500 token——5 × 500 = 2,500 token;
- 回答:两三个短段落——输出约 300 token。
输入侧是 2,500 + 300 + 200 = 3,000 token,输出侧约 300。这些是作者对典型支持机器人的假设;请换成你自己的数字。下面所有内容都以这一次请求为单位。
快速看清结构:片段大约占整个输入的五分之六,而输入是回答的十倍。自己估算一下:
猜数字
上面的请求发送多少输入 token?
你的猜测
010,000
显示答案
答案: 3,000
3,000:5 个片段 × 500 = 2,500,加上系统提示的 300 和问题的 200。片段占主导。
1,000 个问题要花多少钱#
一次请求太小,感觉不到,所以要放大。输入 3,000 token、输出 300 token 时,1,000 个问题发送 3,000,000 输入 token 并生成 300,000 输出 token。拖动下面的滑块来匹配你自己的机器人;网站会按每个模型的实时价格重新计算。
成本计算器
支持机器人的一天
每次请求的输入 token 数: 3,000 · 每次请求的输出 token 数: 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 便宜。
| 模型 | 输入 $/1M | 输出 $/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 个输入 token 和 300 个输出 token。每 100 万 token 的价格为当前价格,会随我们的资费一同变动;OpenRouter 列显示相同工作负载的参考价格。
那 100,000 个问题呢?就是 300,000,000 token 输入和 30,000,000 token 输出。在 DeepSeek-V4-Flash 上是 $7.50,在 GLM-5.3-Flash 上是 $7.20,在 MiniMax-M2.7 上是 $19.50。价格按模型固定,没有高峰时段,所以夜间批处理和白天聊天每 token 成本相同。完整价格列表见定价页面。
Top-k:每个片段增加相同数量#
第二个场景:内部 wiki 助手。有人建议:“以防万一,我们发 10 个片段而不是 3 个。”输入呈直线增长:每个片段在每次请求中都会多出 500 token。

2,000 对 5,500 token:回答长度相同,所以 wiki 助手账单的全部差异都在输入。它是否能带来更好的回答是质量问题:一旦正确段落已经在上下文中,额外片段大多只会增加噪声和成本。选择 k 的实用方法是:取一组真实问题,检查正确段落在哪个 k 出现,然后停在略高于该值的位置。
上下文窗口是另一个限制。这里三个模型对普通 top-k 都有充足空间:MiniMax-M2.7 为 180K token,DeepSeek-V4-Flash 为 380K,GLM-5.3-Flash 为 390K。输出限制不同:GLM-5.3-Flash 和 MiniMax-M2.7 每个回答最多 8,192 token,DeepSeek-V4-Flash 最多 32,768 token,如果你的回答是长报告而不是简短回复,这一点很重要。
选择你的情况
你的 RAG 场景是什么?
选择一个选项以查看答案
来自少量片段的简短回答
一个支持机器人或 FAQ,top-k 为 3–6,回答几百 token,三个模型都适合。根据你自己问题上的质量来选择,然后让上面的成本表来决定。
长回答和摘要
如果回答达到数千 token,DeepSeek-V4-Flash 允许每个回答最多 32,768 输出 token 和 380K 上下文。
每次请求包含许多文档
如果你想合并许多段落或整个章节,GLM-5.3-Flash 在三个模型中上下文最大,为 390K。
整个文档放进提示,还是四个片段#
第三个场景:合同问答。偷懒的做法是把整个 30,000 token 的 PDF 粘贴到每个问题中。检索版本发送问题、指令和四个相关片段,每个约 650 token,总共约 3,000 token。同样是 1,000 个问题,同样是 300 token 的回答:
完整文档发送的输入是十倍,30,000 ÷ 3,000 = 10,而问题相同。对于关于一个能放进上下文的文档的一次性问题,它仍然合理。对于全天回答的机器人,这是昂贵的默认做法。如果其中大量输入每次都是相同文本,请阅读提示缓存。
发送请求#
下面是生成步骤。检索部分由你负责:chunks 是你的向量存储返回的任何内容。同样的代码适用于 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 列在文档中。完整设置见文档,如果你想看一个机器人的 token 在对话中如何累加,为什么长聊天更贵涵盖了历史部分。
缩小输入的四种方法#
从 max_tokens 开始,它限制回答长度并保护你免受失控回复的影响。然后把 k 降到仍能找到正确段落的最小值。让片段更紧凑,使 500 token 承载 500 token 的含义,而不是标题和样板文字。发送前删除重复片段:两个几乎相同的段落花费两倍却只说一次。并在真实流量上用 usage 测量,因为对 500 token 片段的猜测只是猜测。要更广泛地了解 API 调用中 token 的去向,请参阅一次请求使用多少 token。
把你每次请求的 token 数输入上面的计算器,按三个模型为你的机器人定价;如果你的回答很长,DeepSeek-V4-Flash是应该首先考虑的。



