向量模型迁移:重建索引时如何保住检索质量
更换向量模型会改变检索契约,即使向量维度恰好相同也一样。应把文档和查询都转换到新版本,用固定问题集比较相关结果,再在旧索引仍可回滚的条件下切换流量。
发布 2026-09-28 · 更新 2026-09-29 · KeepRouter Editorial · 5 分钟阅读

直接结论:不要只改生产 RAG 应用里的向量模型 ID。旧文档向量与旧查询向量应保持成对使用,同时从同一份源文档建立第二个向量空间。两条路径都要接受检索和答案依据评测;先切小流量,并保留旧索引直至新路径稳定。Qdrant 的官方迁移教程说明了并行集合与命名向量两种方式。
本文是迁移方法,不是 KeepRouter 客户效果报告。下文数量仅用于演示,当前模型价格以实时目录为准。
维度相同也不代表同一个向量空间
向量由特定模型、版本、输入变换和维度设置产生;数据库集合还有距离度量与过滤器。两个模型即使输出一样长的向量,也可能把语义排在不同位置。用新查询向量去匹配旧文档向量,可能悄悄返回看似合理但错误的段落。OpenAI 的向量指南还说明某些模型支持指定维度;缩短向量是明确的模型配置,不等于可以混用旧索引。
改流量前先写好检索契约:
| 项目 | 旧路径 | 新路径 | 通过条件 |
|---|---|---|---|
| 模型与版本 | 准确模型 ID | 目标模型 ID | 两边有文档且可调用 |
| 输入预处理 | 归一化与分块版本 | 保持或明确修改 | 保存的源数据可复现两边 |
| 向量结构 | 维度与距离 | 目标维度与距离 | 新集合接受目标向量 |
| 权限过滤 | 租户与文档 ACL | 相同有效策略 | 无越权匹配 |
| 回答阶段 | 固定模型与提示词 | 检索测试时保持固定 | 差异可归因于检索 |
六步迁移
- 固定证据集。 每种高价值意图至少保存一个问题、已知相关文档 ID、无答案问题和越权文档探针。给标签标版本,不能只问正在替换的模型来生成“标准答案”。
- 找回源数据。 确保能复现文档正文、媒体引用、分块 ID、删除事件和访问控制元数据。旧向量本身不足以生成新向量。
- 建立第二个向量空间。 Qdrant 可用双集合,或在条件满足时新增命名向量。记录新维度和距离度量;旧路径继续服务。
- 回填并双写。 以可恢复批次重算旧记录;新建和更新文档同时写两边。删除和权限修改也必须同步,否则切换后可能重新出现旧数据。
- 离线比较。 同一问题分别查询旧新路径,比较必需段落召回、依据段落排名、权限泄漏、p95 检索延迟与答案依据。回答模型保持不变。
- 灰度与观察。 让少量用户走新索引,每件问题记录索引版本。保留旧索引、旧查询模型配置和回切开关,直到生产结果达到门槛。
Qdrant 教程特别提醒,双集合双写要处理删除与局部更新。命名向量路线可在过渡期保留旧向量,但取决于现有集合形态和数据库版本。选择实际数据库支持的方案,不能把一个厂商的步骤当成所有数据库的能力。
只用于演示的工作量计算
假设有 10,000 份源文档,每份平均 4 个分块,每块平均 500 个计费输入 token。回填约为 10,000 × 4 × 500 = 20,000,000 个向量输入 token,尚未计入重试、媒体处理和更新文档。若假设每百万输入 token 的费率为 R 美元,模型部分为 20 × R。还需加上向量存储、双写时长、查询流量、评测、答案生成与人工运维。短期双索引的成本可能高于这批向量请求。
KeepRouter 模型页列出该目录模型的准确端点与实时客户价格。部分多模态模型使用 /v1/embeddings/multimodal,而不是 /v1/embeddings;请求形态可读多模态指南。进入迁移计划前,必须确认所需模型和输入类型确实已经公开。KeepRouter 不运行向量库,也不承诺每个上游专属向量参数都能透传。
按检索结果定义回滚信号
切换前选择相关文档已知的固定查询,比较目标 k 下的召回、无依据回答和权限过滤。整个测试过程中,查询向量要与对应文档索引配对。Qdrant 向量迁移教程说明了双表示迁移方法。向量数量齐全,不等于新索引已经适合承接用户。
用结果决定是否切换
回填数量达标只证明作业完成,不证明相关性。用经复核的问题集,在同样 top-k 下比较召回。无答案问题应继续拒答,而不是变成自信的无依据回答。权限探针必须严格:即使平均召回提高,只泄漏一条段落也不合格。比较检索器时固定回答模型;要换回答模型,就另开一次评估。检索团队指南说明怎样把网关记录与应用结果结合。
切换后,在应用 trace 中记录准确索引和向量模型版本。网关请求状态、token 与扣费解释 API 调用;应用的检索 trace 解释选中了哪些段落。诊断答案质量回退时,两层证据都需要。
常见问题
能用新查询模型配旧文档向量吗?
不要假设可以,即使维度相同。应从同一源文档重建并评估独立的向量空间。
必须建立第二个集合吗?
不一定。Qdrant 文档提供双集合与命名向量两条路径,取决于现有集合和产品版本。
什么情况必须阻止切换?
约定测试集中只要出现权限泄漏、必需段落漏检、无依据回答,或不能接受的延迟与成本回退,都应阻止切换。
参考的一手资料
本文最近复核 2026-09-29
- [1] Qdrant embedding model migration
- [2] OpenAI embeddings guide
- [3] KeepRouter live model catalog
- [4] KeepRouter OpenAPI