长上下文 RAG 的 AI API 成本不能只看用户问题长度。真正决定账单的是每次请求带入多少检索内容、保留多少历史对话、输出多长答案,以及这些 token 是否能被缓存或复用。
为什么长上下文 RAG 更容易超预算
普通聊天应用的一次请求,输入通常由系统提示词、用户问题和少量上下文组成。RAG 应用会额外加入检索片段、引用说明、工具返回结果和历史对话。上下文窗口越大,团队越容易把更多材料塞进请求里,成本也会随之上涨。
一个常见误区是认为“模型支持 128K 或 200K 上下文,就可以放心放更多文档”。实际上,上下文窗口只是上限,不是预算建议。每多放 10,000 个输入 token,都会在每次请求里重复计费,除非这些内容能稳定命中缓存。
如果你还没有建立基础估算表,可以先参考 Token 预算模板,再把 RAG 场景拆成单独预算行。更具体的 RAG 预算可以继续对照 RAG 聊天机器人成本估算,再确定月度请求和上下文假设。
先拆一次 RAG 请求的成本结构
一次长上下文 RAG 请求通常包含:
| 成本项 | 说明 | 是否容易增长 |
|---|---|---|
| 系统提示词 | 固定角色、规则、回答格式 | 中等 |
| 用户问题 | 用户本轮输入 | 低 |
| 检索片段 | 从知识库召回的文档内容 | 高 |
| 历史对话 | 多轮问答累计上下文 | 高 |
| 引用和格式要求 | 引用编号、来源、结构化输出要求 | 中等 |
| 模型输出 | 最终回答内容 | 高 |
| 重试请求 | 超时、格式错误、召回失败后的再次调用 | 中等 |
成本估算时,不要只记录“平均问题长度”。更有价值的是记录平均检索片段数、平均片段 token、平均历史轮数、平均输出 token 和失败重试率。
用分层公式估算月度成本
可以先用这个结构估算单次请求:
单次输入 token = 固定提示词 + 用户问题 + 检索片段 + 历史对话 + 格式要求
单次输出 token = 平均回答长度
单次成本 = 输入 token 成本 + 输出 token 成本
月成本 = 单次成本 × 每日请求量 × 30 × 重试系数
如果启用了 prompt caching,还要把固定部分和动态部分分开:
输入成本 = 动态输入 token × 输入单价 + 缓存读取 token × 缓存读取单价
系统提示词和固定工具说明通常适合缓存,检索片段和用户问题通常变化较大,不能默认全部按缓存价计算。缓存收益可以结合 提示词缓存预算检查清单 单独估算。
重点控制检索片段,而不是只换便宜模型
RAG 成本最容易失控的地方是检索策略。top-k 从 4 提到 10,chunk 从 500 token 提到 1,500 token,单次输入就可能增长数倍。模型单价再便宜,也抵不过每次请求都塞入过长上下文。
上线前建议做三组压测:
- 短上下文:少量片段,只回答高置信问题。
- 标准上下文:默认 top-k 和 chunk 长度。
- 长上下文:覆盖复杂问题和多文档引用。
每组记录回答质量、平均输入 token、平均输出 token 和无答案比例。然后在 文本模型成本计算器 里分别估算,不要只用一个平均值代表所有用户。
历史对话要有截断策略
多轮 RAG 聊天最容易被忽略的是历史对话。用户连续追问 8 到 10 轮时,如果每轮都带完整历史和新检索片段,成本会快速累积。
更稳的做法是:
- 只保留最近几轮原始对话。
- 把更早内容压缩成摘要。
- 对低价值寒暄和确认语不进入长期上下文。
- 对复杂任务设置单独的长上下文模式。
- 对免费用户和付费用户使用不同上下文预算。
这类策略不会直接出现在模型价格表里,但会显著影响真实账单。
示例:企业文档问答的月度估算
假设一个企业文档问答应用有如下数据:
| 指标 | 假设值 |
|---|---|
| 每日请求量 | 2,000 |
| 固定提示词 | 1,200 token |
| 平均检索内容 | 8,000 token |
| 平均历史对话 | 2,000 token |
| 平均输出 | 900 token |
| 失败重试率 | 8% |
这意味着一次请求可能接近 12,000 输入 token 和 900 输出 token。即使单次看起来不贵,乘以 2,000 次日请求和 30 天后,月度预算也会明显高于普通聊天机器人。
如果把平均检索内容从 8,000 token 降到 4,000 token,月成本可能比更换模型还明显。RAG 优化通常应该先从上下文长度、召回质量和缓存拆分开始,而不是只比较模型单价。
上线前检查清单
发布长上下文 RAG 前,至少确认:
- 是否限制最大检索片段数。
- 是否限制单个片段最大长度。
- 是否记录每次请求的输入和输出 token。
- 是否区分普通问题和复杂问题的上下文预算。
- 是否有历史对话截断或摘要策略。
- 是否单独估算失败重试和格式修复调用。
- 是否把固定提示词和动态检索内容分开计算缓存收益。
最后再把核心场景填入 AI API 上线前月度预算指南 或 价格表 做统一复核。长上下文 RAG 的预算重点不是“能不能放更多内容”,而是“每次多放的内容是否真的提高答案质量”。