<!-- title: 别把向量化当单次消费：RAG三笔复利税 -->
<!-- domain: cost-hacks -->

很多人算 LLM 账单算得很细——缓存、批处理、上下文裁剪、路由器，全用上了。但你只要在做 RAG（检索增强生成）、企业知识库、智能客服、语义搜索，账单上就还躺着另一条管线：**向量化与检索**。这条管线的钱，90% 的团队根本没单独算过，因为它被拆进了"embedding API 调用""向量库托管费""rerank 重排"三个小栏目里，单看每一笔都不贵。但它的本质是**订阅制 + 复利**：你的语料越大、查询越多、换模型越勤，这三笔钱就越滚越大，而且和 LLM token 不同，它们往往**无法靠缓存和批处理彻底关掉**。今天拆开这笔账，并给你五招把它翻面。

## 为什么向量化是「订阅制」而非「单次消费」

心智模型先摆正：买一次 embedding，你以为付的是"生成这串向量的钱"，实际上你同时订阅了三笔持续收费——

- **存储订阅**：向量一旦写进库，就按月占用内存/磁盘，直到你删除。维度越高，月费越高。
- **查询订阅**：每一次用户提问，都要走"查询向量化 → 召回 → 重排"整条链，按次收费。
- **迁移订阅**：哪天你想换 embedding 模型（几乎一定会换），整库必须重新向量化，等于把"一次性"成本再付一遍。

下面这张图把漏钱的三个位置标了出来：

```mermaid
flowchart LR
    subgraph WRITE["写入侧 一次性成本 但会复利"]
        D[文档集] --> C[分块 chunk]
        C -->|token数=账单基数| E[Embedding 调用]
        E --> V[(向量数据库)]
    end
    subgraph READ["查询侧 每问一次都收钱"]
        Q[用户提问] --> QE[查询向量化]
        V --> R[召回 top-k]
        QE --> R
        R --> RR[Rerank 重排]
        RR --> L[LLM 生成回答]
    end
    C -. hash缓存命中则跳过 .-> E
    V == 换模型则全量重算 税1 ==> E
    V -. 维度越高 存储加搜索越贵 税3 .-> R
    RR == 每查询都调 税2 ==> L
```
## 第一笔复利税：重新向量化税

**症状**：你从 `text-embedding-ada-002` 换到 `text-embedding-3-small`，或者从 3-small 换到 Voyage-3，再或者模型厂商悄悄升级了版本——你的**整个语料库必须重新生成一遍向量**，否则新旧向量不在同一个空间，相似度全乱。

很多人以为这只是一次性的小钱，但忽略了两件事：

1. **它会反复发生**。embedding 模型每 6–12 个月就有一代新品（MTEB 榜单一直在刷新），你不可能永远不换。
2. **迁移期的双重存储**。切库期间，旧索引和新索引要并存（为了灰度比对），向量库存储费临时翻倍，而且重算要走满一遍 API + 网络。

算一笔：一个 100 万 chunk、每 chunk 约 512 token 的知识库，约 5.12 亿 token。

- 用 `text-embedding-3-large` 重算：512 × $0.13 = **约 $67**。
- 用 Voyage `voyage-3-large`（约 $0.18/1M）重算：**约 $92**。
- 用 `text-embedding-3-small` 重算：512 × $0.02 = **约 $10**。

API 美元本身不算夸张，但如果你是**十亿级 token 语料**（大型企业、爬全网做搜索），3-large 一次重算就是 **$1300+**，一年换两代就是 **$2600 纯重算费**，外加工程师人天和停机。更扎心的是：这其中大部分 chunk 根本没变过，你却在为"同样的文本"付第二遍钱。

**翻面三招**：

- **embedding 缓存**：embedding 对（模型版本号, 输入文本哈希）是确定性的——同样的输入永远产出同样的向量。建一张 `(model_version, sha256(chunk)) -> vector` 表，重算时只对缓存未命中的 chunk 付费。迁移模型时，命中的部分直接复用旧向量？不行——不同模型向量空间不同。**但**：如果你的 chunk 没变，缓存能让你在"同一模型版本内"的任何重建（重建索引、扩容、换库）零成本。换模型时，缓存能让你**只重算增量新增的 chunk**，老 chunk 才需要走新模型。
- **增量向量化**：永远只对变化 chunk 跑 embedding。给每个文档存 `content_hash`，reindex 时 diff，只动脏数据。
- **版本锁定 + 双写灰度**：生产 embedding 锁死版本号；要升级时新版本双写、A/B 验证质量后再切流，避免"全量重算完发现新模型在你领域更差"的灾难性返工。
## 第二笔复利税：维度膨胀税

**症状**：你以为"维度越高 = 越准 = 越好"，于是无脑选 3072 维的 large 模型。但维度直接影响两笔**持续**成本：

- **存储**：每个 float32 维占 4 字节。1536 维 ≈ 6 KB/向量；3072 维 ≈ 12 KB/向量。
- **搜索**：HNSW/IVF 的相似度计算是 O(维度)。维度翻倍，每次召回的乘加运算翻倍，内存带宽翻倍。

放大数据看就触目惊心：**1 亿条向量**，1536 维 float32 = 1e8 × 1536 × 4 ≈ **572 GiB 纯向量**（还没算 HNSW 图结构开销，实际通常再 ×1.5–2）。3072 维直接干到 **1.1 TiB+**。托管向量库按内存计费（约 $0.1–0.5/GB·月），这笔月费随维度线性上涨，且**每查询都在付搜索算力的钱**。

主流 embedding 模型定价与维度对照（2026 年中水平，请以官网为准）：

| 模型 | 维度 | 价格 / 1M token | 定位 |
|------|------|----------------|------|
| OpenAI `text-embedding-3-small` | 1536 | $0.02 | 性价比基准 |
| OpenAI `text-embedding-3-large` | 3072 | $0.13 | 贵 6.5×，存储贵 2× |
| OpenAI `text-embedding-ada-002`（旧） | 1536 | $0.10 | 别再用，被 3-small 平替 |
| Voyage `voyage-3-lite` | 512 | $0.02 | 低维便宜 |
| Voyage `voyage-3` | 1024 | $0.06 | 中段 |
| Voyage `voyage-3-large` | 1024 | $0.18 | 贵但维度不高 |
| Cohere `embed-v4` | 1024 | 约 $0.10 | 多模态/多语 |
| Google `text-embedding-004/005` | 768 | 免费额度大，付费约 $0.025 | 最便宜 API 之一 |
| **BGE-M3 / nomic-embed / gte（自托管）** | 可配 | **$0** | 开源，一次性 GPU |

**翻面三招**：

1. **Matryoshka 维度截断**：OpenAI 的 3-small / 3-large 支持 `dimensions` 参数——你可以让一个 3072 维模型只返回前 768 维，质量几乎不掉，存储和搜索成本**直降 75%**。Voyage 部分模型也支持。这是 90% 开发者不知道的开关：**用着大模型的质量，付着小模型的存储费**。
2. **向量量化（quantization）**：在库层把 float32 压成 int8（scalar 量化）甚至 binary。Qdrant / Milvus / Weaviate / pgvector（`halfvec`、`bit`）都原生支持。int8 省 4× 内存，binary 省 32×，配合 rerank 兜底质量损失极小。生产里常见组合：**召回用 binary/int8 量化向量（极快、省内存），rerank 阶段再上 float32 或重打分**。
3. **自托管开源 embedding 把 API 费归零**：BGE-M3（中英多语、MTEB 中文榜常年前列，单模型同时输出 dense+sparse+ColBERT 三种向量，混合检索一站式）、nomic-embed-text、gte-large。一个 2GB 显存就能跑，首次向量化 $0、重算 $0、维度你说了算。只有当语料小、不想运维时，才值得为 API 付费。
## 第三笔复利税：rerank 重排税

**症状**：两阶段检索（先 embedding 召回 top-100，再 reranker 重排出 top-10）是质量标配。但 rerank 是**每查询都调**的 API，定价模型分歧极大，选错 provider 账单天差地别：

| Rerank 服务 | 计价方式 | 大致价格 | 100 万查询/月成本 |
|-------------|---------|---------|------------------|
| Voyage `rerank-2-lite` | 按 token | $0.02/1M token | **约 $1–5** |
| Voyage `rerank-2` | 按 token | $0.05/1M token | **约 $3–12** |
| Cohere `rerank`（生产） | **按搜索次数** | 约 $2 / 1000 次搜索 | **约 $2000** |
| bge-reranker / jina-reranker（自托管） | 免费 | $0 | **$0** |

同样 100 万查询/月，Voyage 按量计费是几美元，Cohere 按搜索次数计费能干到 **$2000**——差了近三个数量级。这不是 Cohere 不好（它质量确实强），而是**计价模型决定了它在高查询量场景下根本不划算**。很多人不看计价单位，直接接了 Cohere rerank，月底账单直接爆炸。

按 token 算的细节：每次重排 top-20 chunk × 约 256 token ≈ 5120 token/查询；100 万查询 × 5120 = 51.2 亿 token，voyage-2-lite 就是 5120 × $0.02 = **$102/月**，voyake-2 是 $256/月。可控。

**翻面三招**：

- **看计价单位再接**：高 QPS 场景优先按 token 计费（Voyage）或自托管（bge-reranker-v2-m3、jina-reranker-v2）。按搜索次数计费的只适合低量高质量场景。
- **BM25 + dense 混合检索扛掉大头**：BM25（关键词，Lucene/Elasticsearch 内置，**完全免费、零 API**）扛主力召回，dense 只做语义补充。BM25 召回质量在专业术语、产品型号、人名上往往比 dense 还准，能让你把 top-k 调小、rerank 输入减半，rerank 费用同步减半。
- **只对 top-k 重排，别喂全库**：rerank 只喂召回后的 20–50 条，绝不喂几百条。每多喂一条都是钱。
## 一张账单：原方案 vs 优化后

还是上面那个 100 万 chunk、512 token/chunk 的知识库，100 万查询/月。假设你之前的"豪华默认"配置是：3-large 向量化 + 3072 维 float32 存储托管 + Cohere rerank。

| 成本项 | 原方案 | 优化方案 | 优化后 |
|--------|--------|---------|--------|
| 首次向量化 API | 3-large：$67 | BGE-M3 自托管 | **$0** |
| 模型升级重算（年2次） | 3-large：$134/年 | 缓存+增量，老 chunk 复用 | **接近 $0** |
| 向量库存储（月） | 3072维 float32 ≈ 17 GiB，约 $3.4/月 | 768维 int8 ≈ 0.7 GiB | **约 $0.14/月** |
| 查询召回算力（月） | 3072维 HNSW，高 | 768维 int8 + BM25 | **降 75%+** |
| Rerank（100万查询/月） | Cohere 按次：**$2000** | Voyage rerank-2-lite 按token | **约 $100** |
| **月度合计** | **≈ $2003** | — | **≈ $100** |

从 **$2000/月砍到 $100/月**，省 **95%**，而检索质量在混合检索 + rerank 兜底下基本持平甚至更好（因为 BM25 补回了 dense 在术语上的短板）。最大的那 $2000 单笔，纯粹是"选错 rerank 计价单位"造成的——这就是典型的认知差。

> 说明：以上价格为 2026 年中的公开定价水位，各厂商会不定期调整，迁移前请以官方 pricing 页为准。
## 信息差总结：你知道的 vs 别人不知道的

| 维度 | 大多数人以为 | 信息差真相 |
|------|-------------|-----------|
| 向量化成本性质 | 一次性消费 | 订阅制 + 复利（存储、查询、迁移三笔持续费） |
| 换 embedding 模型 | 点一下就行 | 整库重算 + 迁移期双倍存储，需版本锁定+缓存兜底 |
| 维度选择 | 越高越准越好 | 维度直接 ×存储 ×搜索，可用 Matryoshka 截断拿质量省存储 |
| 向量存储 | 当成普通数据库 | float32→int8/binary 量化可省 4–32× 内存 |
| Rerank | 接个 API 就行 | 计价单位（按token vs 按搜索）决定账单差 200×，高 QPS 必自托管 |
| BM25 | 过时技术 | 免费且在术语/型号/人名上强于 dense，混合检索省钱主力 |
| 开源 embedding | 不如闭源 | BGE-M3 中英榜单顶级，自托管 API 费归零 |
## 行动指南

按你的预算对号入座：

1. **个人/小团队（月预算 < $50）**：embedding 用 BGE-M3 自托管（或 Google text-embedding-004 免费额度），向量库用 pgvector / Qdrant 自建，召回走 BM25+dense 混合，rerank 用 bge-reranker 自托管。**整条管线几乎零 API 费**。
2. **中型团队（月预算 $50–500）**：embedding 用 OpenAI `text-embedding-3-small`（$0.02/1M，最省心的闭源）并开启 `dimensions` 截断到 768；向量库开 int8 量化；rerank 用 Voyage `rerank-2-lite` 按量计费。**质量与成本平衡点**。
3. **高 QPS 生产（月查询 > 100 万）**：**绝对避开按搜索次数计费的 rerank**；embedding 重算必须上缓存 + 增量 + 版本锁定；存储全量走量化；BM25 扛主力召回。
4. **所有人立刻能做的三件事**：① 给 chunk 加 `content_hash`，重建只算增量；② 建 embedding 缓存表，永不重复算同一文本；③ 把 rerank 喂入量从"全召回"压到 top-20–50。

记住一句话：**LLM 的钱省在 token，RAG 的钱省在"别让同一串向量被付费两次"。**

## 参考来源

- [OpenAI Embeddings 官方指南（含 dimensions 截断说明）](https://platform.openai.com/docs/guides/embeddings)
- [OpenAI API 定价页](https://platform.openai.com/docs/pricing)
- [MTEB Embedding 模型排行榜（选模型前必看）](https://huggingface.co/spaces/mteb/leaderboard)
- [Voyage AI 文档（embedding 与 rerank 按量计价）](https://docs.voyageai.com/)
- [Cohere 定价页（Rerank 按搜索次数计费，注意与按 token 的差异）](https://cohere.com/pricing)
> 本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵**爱卫生**（微信ID: gprshome201101）维护。
> 聚焦5G/6G核心网、3GPP标准、AI工具实战。知识星球「51学通信」提供深度技术答疑和行业洞察。
**完成摘要（What was done）**

**下一步计划（What's next）**

- 优先级1：本轮因联网受限，价格数字基于公开定价水位。建议 7/18 配额恢复后用 WebSearch 复核 rerank 计价（尤其 Cohere 按次 vs Voyage 按 token）、Voyage voyage-3-large 单价、Google embedding 付费档，确认无偏差。
- 优先级2：如需配套实操，可后续出"自托管 BGE-M3 + pgvector 量化 + bge-reranker"最小可运行示例（含 docker-compose 与维度截断代码）。
- 优先级3：下一轮（Round 5）切到 `trending`（社区热议），可挖掘 Reddit r/LocalLLaMA / HN 上关于"向量库托管费爆表""rerank 计价争议"的真实讨论，与本轮形成呼应。

**注意事项**

- 风险：文中价格会随厂商调整变动，已在正文加"以官网为准"声明；rerank 按 token vs 按搜索次数的差异在不同地区/套餐下可能有折扣，迁移前务必实测。
- 数据时效：受联网配额限制未能逐项实时校验，关键数字均为公开稳定水位，复核点已在"下一步"列出。

> [!tip] 51学通信知识星球
> **星主：爱卫生**（微信：gprshome201101）——公众号「51学通信」创办者，19 年通信行业运维与讲师经验，著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书（各大电商平台有售）。
> **星球定位**：深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域，主打运维岗位与信令分析。
> **当前规模**：5200 篇主题 / 990 个回答，198 元/年。
> **加入福利**：加入星球后请加爱卫生微信，拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题，另有群内分享。
> **AI 加持**：51学通信知识星球已作为 skill 接入 WorkBuddy，使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例，做总结、找文档和 PPT 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
