Embedding API 看似只是按输入 Token 收费,没有输出。但 RAG 项目跑几个月后,超预算的原因往往不是“查询太多”,而是切块后的文档总量、换模型后的全量重嵌入,以及向量库的存储与请求费用叠加。
本文拆开这几个成本项,给出估算顺序和降本优先级。单价会调整,以站内模型价格和厂商文档为准,本文不写死数字。
说明:OpenAI、DeepSeek 等名称是其各自权利人的商标。本文以 2026 年 10 月的常见接口形态为例,模型名、计费规则与价格可能变化,采购前请再次核对官方页面。
一、计费主体是输入 Token,不是“调用次数”
多数 Embedding 接口只对输入计费,不产生输出 Token 费用。输入就是你要向量化的文本,包括标题、正文、表格转换后的文字,也包括 HTML 标签、导航栏和多余空白。
估算时有四个放大点:
- 分词器差异:一个汉字未必等于一个 Token,不同模型的分词方式不同。不要按字数估算,先用小样本调用,读响应里的 usage 字段。
- 切块重叠:为了保留上下文,切块时常设置 10%–20% 的重叠,这部分文字会被重复计费。重叠越高,建库成本越高。
- 脏文本:页眉页脚、模板话术、重复目录如果不清洗,会按正常 Token 收费,却不带来检索价值。
- 重复建库:同一批文档在测试、预发、生产各嵌一遍,成本按环境数翻倍。
| 成本项 | 何时产生 | 计费方 | 容易漏算的地方 |
|---|---|---|---|
| 输入 Token | 文档与查询向量化 | Embedding 服务商 | 切块重叠、页眉页脚、重复索引 |
| 批量任务 | 离线全量与增量索引 | 服务商批量接口 | 是否真的享受批量折扣 |
| 重嵌入 | 换模型、改维度、改切块 | Embedding 服务商 | 全库重跑与切换期间的双份存储 |
| 向量存储 | 向量与索引落盘 | 向量数据库或云平台 | 副本、备份、索引膨胀 |
| 检索与出网 | 每次查询读取向量 | 数据库或云平台 | 跨区访问、峰值 QPS |
| 生成调用 | 检索后交给大模型 | 大模型服务商 | 常被误算进 Embedding 成本 |
最后一行值得强调:Embedding 便宜,不代表 RAG 总成本低。检索片段交给大模型生成答案,输入 Token 往往比向量化费用高得多,预算要分两段算。
二、批量接口:省单价,换时间
多数平台的批量接口按低于实时接口的价格计费,代价是任务排队、返回时间以小时计,并且可能限制可用模型和单次请求大小。批量适合首次建库、夜间增量同步、离线评测;不适合用户提问时的实时向量化。
使用前核对三件事:
- 批量任务是否单独限额,会不会与实时请求争抢配额。
- 失败或部分成功的请求是否计费,重试成本由谁承担。
- 网关是否把上游的批量折扣传递下来。不是所有网关都会传递,采购前问清楚,或用第一张账单验证。
批量不等于无限并发。上百万条一次提交容易触发限流或任务失败。按规模分批,记录每批 Token 和耗时,失败批次单独重试,避免整批重跑。
三、重嵌入:最容易被低估的一次性成本
以下变更通常要求全量重嵌入:
- 更换 embedding 模型,或模型升级导致向量空间变化。
- 修改向量维度,旧向量无法与新向量混用。
- 改变切块规则、清洗规则或文档解析方式。
- 新增语种,原模型效果不足。
重嵌入的成本不只是调用费,还包括重跑时间、新旧索引并存的存储,以及切换期的检索质量波动。知识库很大时,这笔钱可能超过此前所有查询费用之和。
降低风险的做法:
- 保留原始文本作为事实来源,向量只是派生数据,随时可以重建。
- 索引元数据里记录模型名、版本、维度和切块参数。
- 新索引建好后,用一批固定问题做对比评测,再切流量。
- 日常只对新增和修改的文档做增量嵌入,把全量重嵌入当成有计划的迁移。
四、向量存储与出网:第二张账单
向量库的计费通常看五件事:存储容量、内存规格、副本数、请求量、出网流量。按向量数量估算容量时,先算原始大小:1536 维、float32,每个向量约 6 KB;一百万条约 6 GB,再叠加索引、元数据和副本,实际占用可能是数倍。
几个常被忽略的点:
- 维度:维度越高,存储和检索计算越贵。部分模型支持降维输出,是否可用、对召回影响多大,要用自己的评测集验证。
- 副本与备份:高可用副本会成倍增加存储,备份策略也会计入账单。
- 请求量:检索次数比文档数增长得更快,按 QPS 选规格,而不是按数据量选。
- 出网:应用与数据库跨地域部署、每次查询返回大量候选、向多个环境同步向量,都会产生流量费。把应用放在同一区域,限制单次返回的候选数量,能省下不易察觉的一笔。
小规模场景用 PostgreSQL 加 pgvector 往往够用;数据量和并发上来后,再评估托管向量库是否值得溢价。
五、把月度成本估准的顺序
- 统计源文档数量、平均长度和切块参数,算出切块后的总输入 Token,而不是原文字数。
- 用最近一周的真实查询日志,统计每日查询次数和平均查询长度。
- 明确未来三个月的重嵌入计划:会不会换模型、改切块、扩语种。
- 向向量库供应商确认计费项:存储、副本、备份、请求、出网分别怎么算。
- 分别计算“建库首月”和“稳定运行月”,两笔预算不要混在一起。
- 给估算留出余量,并用第一周的真实账单校正系数。
可复用的估算框架如下。占位数字仅用于演示,单价从模型价格和向量库账单填入。
# 估算框架:数字为占位示例,不是任何厂商的真实价格
docs_tokens = 40_000_000 # 全量文档切块后的输入 Token
query_tokens = 2_000_000 # 每月查询向量化 Token
reindex_per_month = 1 # 每月全量重嵌入次数
vector_gb = 12 # 向量、索引、副本合计占用
embed_price_per_1k = 0.0 # 填入价格页中的每千 Token 单价
storage_price_per_gb = 0.0 # 填入向量库的每 GB 单价
monthly_embed = (docs_tokens * reindex_per_month + query_tokens) / 1000 * embed_price_per_1k
monthly_storage = vector_gb * storage_price_per_gb
print(monthly_embed + monthly_storage)
六、降本的顺序不要反
先治理输入,再考虑换更便宜的模型。顺序大致是:
- 清洗:去掉导航、页眉页脚、重复模板,正文抽取后再切块。
- 切块:按语义边界切,重叠比例够用即可,不要把重叠当成保险。
- 冷热分离:历史归档内容不必全部进向量库,需要时再按需嵌入。
- 查询缓存:高频且相同的问题直接复用向量,减少重复调用。
- 批量:离线索引走批量接口,实时查询走实时接口。
- 存储优化:合理选维度、评估量化、按查询量定副本。
- 模型分流:Embedding 与生成模型分开评估,别为了省向量费牺牲检索质量。
如果顺序反了,常见结局是换了略便宜的 embedding 模型,但切块重叠没降、脏文本没清、重嵌入频繁,账单几乎不动,召回还变差。
常见问题
Embedding API 为什么没有输出 Token 费用?
Embedding 输出固定长度的向量,不是生成文本,所以通常只按输入计费。少数平台可能对存储等能力单独收费,以官方文档为准。
批量接口一定比实时接口便宜吗?
通常单价更低,但要看时限、失败重试和网关是否传递折扣。需要即时返回的查询不适用,省下的单价会被等待时间抵消。
换 embedding 模型后,能不能只重嵌一部分文档?
新旧模型向量空间通常不兼容,混用会导致检索错乱。稳妥做法是全量重建,建好影子索引、评测通过后再切换;只重嵌部分文档一般不可行。
向量存储为什么可能比 Embedding 调用更贵?
因为存储按容量、副本、请求和出网持续计费,而向量化在文档不变时是一次性成本。数据量大、副本多、查询频繁时,第二张账单很容易超过第一张。
估算和实际账单对不上,先查什么?
先查切块重叠和脏文本带来的 Token 放大,再查测试环境重复建库、失败重试、批量折扣是否生效,最后核对向量库的副本与出网费用。
下一步
需要统一入口、按量计费和多种模型,可以先注册中商起航 AI 网关,用小额预算跑通一次建库和查询,再按真实用量估算。模型与价格以模型价格为准。
相关阅读:
