# RAG 每次查询多少钱：别只计算生成 token

> 把建库、检索、生成、重试和人工复核放进同一张成本表，用可复算的示例比较每个合格答案的费用，而不只看 token 单价。

_发布 2026-09-29 · 更新 2026-09-29 · [KeepRouter Editorial](https://keeprouter.com/editorial-policy#editorial-team) · 5 分钟阅读_

![展示 token、缓存、重试、回退与归属的多模型 API 成本账本](https://keeprouter.com/editorial/blog/control-multi-model-api-costs.png)

_在明确工作量假设下，比较合格任务的完整成本。示意图，不代表厂商报价。_

RAG 每次查询的成本，包括知识库准备费用的分摊，以及检索、生成答案的费用。做业务比较时，更有意义的分母是合格答案数量。编造政策的回答即使便宜，也会产生生成、重试和修正成本。

下面把随文档规模变化的费用，与随访问量变化的费用分开。所有价格和工作量都是演算假设，不是厂商报价，也不是 KeepRouter 实测数据。

## 先把建库与问答分开

Embedding 把内容转换成检索向量。[OpenAI 向量指南](https://developers.openai.com/api/docs/guides/embeddings)和 [Gemini 向量指南](https://ai.google.dev/gemini-api/docs/embeddings)介绍了各自接口。但存在向量接口、向量单价低，都不能代表整个 RAG 系统便宜。

| 费用 | 主要驱动因素 | 记录位置 |
| --- | --- | --- |
| 解析与 OCR | 页数、格式、重复处理 | 入库任务 |
| 文档向量 | 新增和修改文档的 token | 建库与更新 |
| 向量存储 | 向量数量、副本、套餐 | 月度基础设施 |
| 查询向量 | 搜索次数及重试 | 查询记录 |
| 检索与重排 | 候选数量、重排调用 | 查询记录 |
| 答案生成 | 输入、输出及适用计费类别 | 每次模型尝试 |
| 复核与修正 | 不合格回答、人工时间 | 最终结果 |

不要每来一个问题，就重新向量化整个知识库。应持久化索引、识别变更文档，单独记录更新费用。更换 embedding 导致的全量重建，应进入迁移成本。

## 计算一个月度示例

假设客服助手每月处理 10,000 个问题。入库和文档更新分摊 20 美元，向量基础设施 30 美元，查询向量 2 美元，检索和重排 10 美元，共 62 美元。

每次生成使用 3,000 输入 token、400 个计费输出 token。假设输入每百万 1 美元，输出每百万 5 美元，则每次生成 0.005 美元。若其中 1,000 个问题各重试一次，总尝试为 11,000 次，生成费用 55 美元。

```python
questions = 10_000
extra_attempts = 1_000
attempt_cost = (3_000 * 1 + 400 * 5) / 1_000_000
generation = (questions + extra_attempts) * attempt_cost
total = 20 + 30 + 2 + 10 + generation
accepted = 9_000
print(round(total, 2))                 # 117.0 美元
print(round(total / questions, 4))     # 0.0117 / 问题
print(round(total / accepted, 4))      # 0.0130 / 合格答案
```

117 美元尚未包含人工复核和其他应用基础设施。比较完整商业成本时，应继续加入。0.013 美元不是任何产品的承诺价格，实际预算必须替换工作量、费率及计费规则。

## 优化之前定义合格答案

可以建立三个虚构文档：国内退货政策、国际退货政策、已过期促销。问题是促销结束后下单的国际订单适用什么规则。通过条件是选中当前国际政策，并引用正确文档。

再问一个资料中不存在的政策问题。合格答案应说明信息缺失，不能编造规则。调整切片长度、召回数量或模型时，始终保留这两个样本。

减少检索 token 可能降低请求费用，却恰好删掉必要证据。因此要同时记录证据覆盖与答案合格率。[LlamaIndex 接入指南](/zh/blog/llamaindex-openai-like-rag)提供了保持检索设置、仅替换生成模型的实验方法。

## 找到真正昂贵的环节

用同一个应用查询 ID 关联检索、模型尝试和最终结果。记录文档 ID、token 数量，避免把私有文档正文写进普通分析日志。拒绝答案时区分：资料缺失、检索错误、推断无依据或格式失败。

生成占大头，可以减少重复指令，或在相同证据上测试更便宜的模型。检索占大头，就检查候选数和重排频率。文档更新占大头，则检查未修改内容是否被反复处理。换聊天模型无法解决重复建库。

固定费用也要按不同流量情景计算。每月 30 美元的服务，在 1,000 次查询时分摊 0.03 美元，在 10,000 次时分摊 0.003 美元；成本分摊改变，不表示质量改变。超过容量后的套餐升级，还会让费用阶梯式上升。

## 把成本表用于选型

先用 [API 成本计算器](/tools/api-cost-calculator)计算支持的模型 token 费用，再补上入库、存储、检索和复核。计算器不等于完整 RAG 账单。从[模型目录](/models)挑候选，保持资料、提示词和验收规则一致。

在包含失败样本的小规模任务上，比总费用除以合格答案，同时观察延迟与人工介入比例。更低的 token 单价如果换来大量重试和修正，并没有让工作系统更便宜。

## 常见问题

### RAG 每次查询成本应该包含什么？

包含入库与存储分摊、查询向量、检索、重排、每次生成尝试，以及相关复核费用，并区分固定和可变成本。

### 更便宜的生成模型一定降低 RAG 成本吗？

不一定。重试、不合格答案和人工修正可能超过 token 节省，应在同一测试集比较每个合格答案的总成本。

### 文中价格是当前厂商报价吗？

不是。它们是为了演示可复算过程的假设值，预算时应换成当前价格和实际用量。

## 参考的一手资料

_本文最近复核 2026-09-29_

1. [OpenAI embeddings](https://developers.openai.com/api/docs/guides/embeddings)
2. [Gemini embeddings](https://ai.google.dev/gemini-api/docs/embeddings)

## 继续阅读

- [LlamaIndex OpenAILike：更换 LLM，保留 RAG 索引](https://keeprouter.com/zh/blog/llamaindex-openai-like-rag.md)
- [上下文超限怎么办：先核算提示词，再决定重试](https://keeprouter.com/zh/blog/context-window-exceeded-fix.md)
- [api cost calculator](https://keeprouter.com/tools/api-cost-calculator)
- [Batch API 与实时请求：什么时候批处理更划算](https://keeprouter.com/zh/blog/batch-api-vs-realtime-cost.md)

## 用你的工作量估算费用

选择型号并填写预计用量，先把估算与一条小规模真实请求对上，再扩大使用。

[估算 API 费用](https://keeprouter.com/tools/api-cost-calculator)

[创建 Key，测试免费模型](https://keeprouter.com/login?returnTo=%2Fconsole%2Fkeys%3Fmodel%3Dfree)

免费测试使用 free 模型；其他付费型号需要足够预付额度。

[全部文章](https://keeprouter.com/zh/blog.md) · [模型与价格](https://keeprouter.com/models.md)
