向量化是 RAG 里最便宜的一环——百万 token 只要两三分钱。真正容易算错的是分块数和存储量:重叠会让块数明显增加,而向量存储的占用随维度线性上涨。
-
分块数量
-
总 token 数
-
嵌入成本(美元)
-
向量存储(MB)
| 模型 | 维度 | 嵌入成本 | 存储占用 |
|---|
分块数量 = ⌈文档字符数 ÷ (分块大小 − 重叠)⌉(重叠越大会显著增加块数);总 token = 分块数量 × 分块大小 ÷ 每 token 字符数;成本 = 总 token ÷ 1e6 × 单价;存储 = 分块数 × 重复索引次数 × 维度 × 4 字节(float32)。
向量化便宜,但分块容易算错
把文档切块、逐块转成向量,是 RAG 的第一个步骤。成本低到可以忽略:text-embedding-3-small 每百万 token 只要 $0.02,一千万字的文档全量索引也就几毛钱。
但分块数很容易被低估,因为重叠在悄悄放大它。假设块大小 500 字符、重叠 50 字符,实际每块只前进 450 字符——同样一千万字,块数从 2 万涨到 2.2 万,多出 11%。重叠是必要的(避免答案被切断在块边界),但要清楚它有成本。
块大小怎么选
| 块大小 | 适合 | 取舍 |
|---|---|---|
| 200–300 字符 | 问答、FAQ、短定义 | 检索精准但上下文碎片化,易丢信息 |
| 400–600 字符 | 通用文档(推荐) | 精准度与上下文完整度的平衡点 |
| 800–1200 字符 | 技术文档、长论述 | 上下文完整但检索噪声增加 |
重叠通常取块大小的 10%–20%。低于 10% 容易在边界丢答案,高于 20% 则成本上升而收益递减。
存储比嵌入更值得关注
嵌入是一次性支出,存储是长期成本。向量以 float32 保存时,每个维度占 4 字节:1536 维的向量就是 6 KB 一个。200 万个块约 12 GB——如果用 3072 维的大模型,直接翻倍到 24 GB。
三个降低存储的做法:
- 用 3-small 而不是 3-large:前者在多数检索任务上已够用,维度只有一半,单价还便宜 6.5 倍。
- 开维度裁剪:text-embedding-3 系列支持通过参数把 1536 维截断到 512 或 256,精度损失有限,存储立减三分之二。
- 量化存储:把 float32 转成 int8,存储降到四分之一,召回率通常只掉 1% 以内。
最后提醒:模型换了就要全部重跑。向量不跨模型通用,一旦从 3-small 换到 3-large,历史数据必须重新嵌入,这笔一次性开销要提前算进迁移成本。所以第一次选模型时就该想清楚规模上限。
你可能还想问
向量化成本怎么估算?
按输入 token 数计费:总 token ≈ 文本总量 ÷ 每 token 字符数,再乘单价;重跑全量数据前先估算,避免账单超预期。
怎么降低向量化成本?
去重与去噪(页眉页脚、重复段落)、只向量化必要字段、按需分批处理;模型升级后不一定全量重算,可只更新增量与变化部分。
批量接口有什么限制?
常见单批条数与总 token 上限、并发限制与速率限制;建议实现重试与断点续跑,长任务中途失败不必从头再来。
速查在线工具箱