度量为什么要统一
度量(余弦、内积、欧氏)要与模型的用法和索引配置匹配:索引按某种度量构建,查询就要用同一种方式打分,评测脚本也必须一致。不一致时流程照样跑通、也不报错,只是排序悄悄变差,属于最难排查的一类问题。切换度量通常需要重建索引,因为索引结构本身就是按该度量组织的。
基本信息
| 常见默认 | 文本向量用余弦,或归一化后的内积 |
|---|---|
| 库差异 | 部分库同时支持余弦、内积与欧氏;关系型扩展用算子显式选择 |
| 一致性范围 | 入库、查询、索引、评测四处必须一致 |
| 切换代价 | 通常需要重建索引 |
一致性检查清单
一致性检查清单
索引构建时的度量:______
查询端计算方式:______
评测脚本的相似度函数:______
(三者不一致时,评测结论与线上行为不符)使用要点
- 先看模型文档对度量的建议,多数文本检索模型推荐余弦或归一化内积
- 归一化后余弦与内积等价,可先用内积简化实现,但要保证两侧都归一化
- 欧氏距离对长度敏感,用未归一化的向量时会受文本长度影响
- 把度量写进索引配置与文档,交接时不依赖口头约定
- 更换向量模型时同步复核度量,两者是绑定关系
度量对照
| 度量 | 计算与含义 | 常见注意点 |
|---|---|---|
| 余弦 | 方向夹角,长度无关 | 文本向量默认选择 |
| 内积 | 方向与长度共同决定 | 归一化后等价于余弦 |
| 欧氏 | 绝对距离 | 适合未归一化的稠密特征 |
| 混合度量 | 不同字段用不同度量 | 增加排查复杂度,慎用 |
常见问题
- 迁移向量库时把度量默认值改了,检索质量下降但无告警
- 评测脚本用余弦、线上配内积且未归一化,评测结论无法迁移
- 更换度量后未重建索引,返回结果异常但报错为零
- 同一集合里不同字段用不同度量,排查时容易看错配置
迁移向量库时度量不一致是最常见的静默错误:流程能跑通,但检索质量悄悄变差,务必把度量纳入上线检查清单。