向量库迁移流程
跨向量库迁移按五步走:导出、转换、灌入、校验、切流。最容易出错的是中间三处映射:id 策略(字符串、UUID、整型范围)必须一致;距离度量语义要对齐,余弦、内积、L2 之外还要确认向量是否归一化;payload 字段名与类型要能表达原有的过滤条件。校验不能只比条数,要抽样比对内容,并用同一评测集跑 recall@k 与 MRR 确认没有掉点。
基本信息
| 五个环节 | 导出、转换、灌入、校验、切流 |
|---|---|
| id 策略 | 字符串、UUID、整型范围必须两端一致 |
| 度量语义 | 余弦、内积、L2,并确认归一化处理 |
| payload | 字段名与类型映射,保证过滤条件可表达 |
| 校验方式 | 抽样内容比对加评测集回归 |
| 窗口安排 | 增量双写,切读后观察稳定再停旧库 |
典型使用场景
- 从自建集群迁移到托管服务,减少运维投入
- 组件收敛:多套向量库合并成一套
- 成本优化:换成更省存储或更省内存的方案
- 版本不兼容导致的整体换代,只能重灌
- 分片或集群结构重构,需要重新分布数据
迁移核对清单
迁移核对清单
□ id 策略一致(字符串 / UUID / 整型范围)
□ 距离度量语义一致(余弦 vs 内积 vs L2)
□ 向量是否归一化,两端处理一致
□ payload 字段名与类型映射,过滤条件可表达
□ 全量条数与抽样内容比对通过
□ 评测集 recall@k 与 MRR 不掉点
□ 增量双写与切流回滚方案就绪环节读法
| 环节 | 关键点 | 失败表现 |
|---|---|---|
| 导出 | 向量与 payload 完整导出 | 缺字段,恢复后过滤条件失效 |
| 转换 | id 与字段映射 | id 冲突导致覆盖或数据丢失 |
| 灌入 | 批量写入与限流 | 写入中断,部分数据缺失 |
| 校验 | 抽样内容比对加评测回归 | 召回掉点,切换之后才发现 |
| 切流 | 双写、灰度与回滚 | 增量丢失,无法回退 |
迁移窗口内保持双写;校验通过后先切读流量,观察一段时间稳定再停旧库,避免一次性不可逆切换。
度量语义不一致是最隐蔽的坑:旧库用内积且向量未归一化时,迁到余弦度量的新库后排序会明显不同,而两端都不会报错。