# 向量模型迁移：重建索引时如何保住检索质量

> 更换向量模型会改变检索契约，即使向量维度恰好相同也一样。应把文档和查询都转换到新版本，用固定问题集比较相关结果，再在旧索引仍可回滚的条件下切换流量。

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

![三种带类型输入（文本、图片、视频）汇聚成一个向量块](https://keeprouter.com/editorial/blog/multimodal-embeddings-guide.png)

_把向量模型与索引版本视为同一份检索契约；切换前先回填并评估新版本。_

**直接结论：**不要只改生产 RAG 应用里的向量模型 ID。旧文档向量与旧查询向量应保持成对使用，同时从同一份源文档建立第二个向量空间。两条路径都要接受检索和答案依据评测；先切小流量，并保留旧索引直至新路径稳定。Qdrant 的[官方迁移教程](https://qdrant.tech/documentation/tutorials-operations/embedding-model-migration/)说明了并行集合与命名向量两种方式。

本文是迁移方法，不是 KeepRouter 客户效果报告。下文数量仅用于演示，当前模型价格以[实时目录](/models)为准。

## 维度相同也不代表同一个向量空间

向量由特定模型、版本、输入变换和维度设置产生；数据库集合还有距离度量与过滤器。两个模型即使输出一样长的向量，也可能把语义排在不同位置。用新查询向量去匹配旧文档向量，可能悄悄返回看似合理但错误的段落。OpenAI 的[向量指南](https://developers.openai.com/api/docs/guides/embeddings)还说明某些模型支持指定维度；缩短向量是明确的模型配置，不等于可以混用旧索引。

改流量前先写好检索契约：

| 项目 | 旧路径 | 新路径 | 通过条件 |
| --- | --- | --- | --- |
| 模型与版本 | 准确模型 ID | 目标模型 ID | 两边有文档且可调用 |
| 输入预处理 | 归一化与分块版本 | 保持或明确修改 | 保存的源数据可复现两边 |
| 向量结构 | 维度与距离 | 目标维度与距离 | 新集合接受目标向量 |
| 权限过滤 | 租户与文档 ACL | 相同有效策略 | 无越权匹配 |
| 回答阶段 | 固定模型与提示词 | 检索测试时保持固定 | 差异可归因于检索 |

## 六步迁移

1. **固定证据集。** 每种高价值意图至少保存一个问题、已知相关文档 ID、无答案问题和越权文档探针。给标签标版本，不能只问正在替换的模型来生成“标准答案”。
2. **找回源数据。** 确保能复现文档正文、媒体引用、分块 ID、删除事件和访问控制元数据。旧向量本身不足以生成新向量。
3. **建立第二个向量空间。** Qdrant 可用双集合，或在条件满足时新增命名向量。记录新维度和距离度量；旧路径继续服务。
4. **回填并双写。** 以可恢复批次重算旧记录；新建和更新文档同时写两边。删除和权限修改也必须同步，否则切换后可能重新出现旧数据。
5. **离线比较。** 同一问题分别查询旧新路径，比较必需段落召回、依据段落排名、权限泄漏、p95 检索延迟与答案依据。回答模型保持不变。
6. **灰度与观察。** 让少量用户走新索引，每件问题记录索引版本。保留旧索引、旧查询模型配置和回切开关，直到生产结果达到门槛。

Qdrant 教程特别提醒，双集合双写要处理删除与局部更新。命名向量路线可在过渡期保留旧向量，但取决于现有集合形态和数据库版本。选择实际数据库支持的方案，不能把一个厂商的步骤当成所有数据库的能力。

## 只用于演示的工作量计算

假设有 10,000 份源文档，每份平均 4 个分块，每块平均 500 个计费输入 token。回填约为 10,000 × 4 × 500 = 20,000,000 个向量输入 token，尚未计入重试、媒体处理和更新文档。若假设每百万输入 token 的费率为 R 美元，模型部分为 20 × R。还需加上向量存储、双写时长、查询流量、评测、答案生成与人工运维。短期双索引的成本可能高于这批向量请求。

[KeepRouter 模型页](/models/doubao-embedding-vision-251215)列出该目录模型的准确端点与实时客户价格。部分多模态模型使用 /v1/embeddings/multimodal，而不是 /v1/embeddings；请求形态可读[多模态指南](/zh/blog/multimodal-embeddings-guide)。进入迁移计划前，必须确认所需模型和输入类型确实已经公开。KeepRouter 不运行向量库，也不承诺每个上游专属向量参数都能透传。

## 按检索结果定义回滚信号

切换前选择相关文档已知的固定查询，比较目标 k 下的召回、无依据回答和权限过滤。整个测试过程中，查询向量要与对应文档索引配对。[Qdrant 向量迁移教程](https://qdrant.tech/documentation/tutorials-operations/embedding-model-migration/)说明了双表示迁移方法。向量数量齐全，不等于新索引已经适合承接用户。

## 用结果决定是否切换

回填数量达标只证明作业完成，不证明相关性。用经复核的问题集，在同样 top-k 下比较召回。无答案问题应继续拒答，而不是变成自信的无依据回答。权限探针必须严格：即使平均召回提高，只泄漏一条段落也不合格。比较检索器时固定回答模型；要换回答模型，就另开一次评估。[检索团队指南](/zh/built-for/retrieval-applications)说明怎样把网关记录与应用结果结合。

切换后，在应用 trace 中记录准确索引和向量模型版本。网关请求状态、token 与扣费解释 API 调用；应用的检索 trace 解释选中了哪些段落。诊断答案质量回退时，两层证据都需要。

## 常见问题

### 能用新查询模型配旧文档向量吗？

不要假设可以，即使维度相同。应从同一源文档重建并评估独立的向量空间。

### 必须建立第二个集合吗？

不一定。Qdrant 文档提供双集合与命名向量两条路径，取决于现有集合和产品版本。

### 什么情况必须阻止切换？

约定测试集中只要出现权限泄漏、必需段落漏检、无依据回答，或不能接受的延迟与成本回退，都应阻止切换。

## 参考的一手资料

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

1. [Qdrant embedding model migration](https://qdrant.tech/documentation/tutorials-operations/embedding-model-migration/)
2. [OpenAI embeddings guide](https://developers.openai.com/api/docs/guides/embeddings)
3. [KeepRouter live model catalog](https://keeprouter.com/models)
4. [KeepRouter OpenAPI](https://keeprouter.com/api/openapi.json)

## 继续阅读

- [检索与 RAG 应用](https://keeprouter.com/zh/built-for/retrieval-applications.md)
- [多模态向量：把文本、图片与视频放进同一个向量空间](https://keeprouter.com/zh/blog/multimodal-embeddings-guide.md)
- [doubao embedding vision 251215](https://keeprouter.com/models/doubao-embedding-vision-251215.md)
- [API 可观测性](https://keeprouter.com/zh/features/api-observability.md)
- [AI Gateway 对比供应商直连 API](https://keeprouter.com/zh/compare/direct-provider-apis.md)

## 找到适合任务的模型

选择服务或编写接入代码前，先确认型号可用性、输入类型与计价单位。

[比较模型与价格](https://keeprouter.com/models)

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

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

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