余弦、点积和距离:选择嵌入模型期望的度量
比较三个相似度计算在小向量上的表现,观察归一化何时改变排序。
本文内容
简明答案
使用嵌入模型推荐的相似度度量和预处理方式。余弦相似度比较方向,点积也反映向量大小,欧氏距离衡量分离程度。对于单位向量,余弦和点积一致,且平方欧氏距离等于2减去两倍余弦。这种等价性需要归一化;它不能使任意服务分数互换。更改索引前请检查文档和查询向量。
从嵌入契约开始
记录模型标识符、修订版本、向量维度和推荐相似度度量。查询和文档嵌入必须属于兼容的表示;维度相等本身不能证明兼容性。某些检索模型使用不同的查询和文档指令,因此兼容性不一定意味着输入格式相同。一致地应用记录的预处理,并将其与索引配置一起保留。
区分方向和大小
对于非零向量q和x,余弦是它们的点积除以长度乘积。任一向量的正缩放不改变余弦。点积没有这种不变性:使向量变长可能增加其分数,即使方向不变。决定长度在此特定模型中是否携带有用信息,而不是将归一化视为普遍无害的清理。
手动计算三种排名
考虑构造的向量q=(1,0)、a=(2,0)和b=(1,1)。它们与q的点积分别为2和1,因此点积将a排在第一。余弦分别为1和约0.707,也将a排在第一。原始欧氏距离均为1,产生平局。这个算术示例展示了不同度量行为;它不是测量的检索结果,也不是某种度量更准确的证据。
理解单位向量等价性
归一化后,a变为(1,0),b变为约(0.707,0.707),q保持(1,0)。它们与q的距离分别为0和约0.765。对于两个单位向量,展开平方距离得到1+1-2倍点积。因此在这些假设下的精确算术中,最小化距离和最大化余弦产生相同排序。近似索引和平局处理仍可能产生不同的返回候选集。
在索引前拒绝无效向量
零向量不能通过除法归一化为单位长度,且当任一长度为零时余弦未定义。非有限值和不一致维度也应视为数据或管道问题。定义此类记录是被拒绝、隔离还是重试。静默地将每个无效向量替换为零会创建新表示,而不确立嵌入模型或搜索服务是否支持它。
解释服务返回的分数
API可以将距离或相似度转换为其自身的排名分数。例如,Azure AI Search记录的是转换后的余弦分数,而不是将原始余弦作为其搜索分数返回。因此从其他服务或手工计算复制的阈值可能是错误的。阅读实际查询模式的分数定义,包括混合检索是否组合多个排名。
在有意义的查询上评估变更
在切换生产度量之前,使用显式相关性判断比较一小组代表性查询。隔离度量变更时保持文档、模型和预处理固定。如果使用近似索引,区分候选召回问题和评分问题。记录缺失的相关文档和意外的高排名结果,而不是将视觉上更大的分数解释为质量改进。
将归一化与索引一起版本化
更改归一化会更改存储的向量,可能需要重建索引。仅归一化查询而保持不兼容的文档表示不变不是通用的迁移策略。将模型修订、度量和归一化设置一起保存,以便后续部署能重现表示。验证实际选择模型的模型卡片;一个归一化嵌入模型的推荐不能确立所有模型的规则。
检查清单
- 使用兼容的查询和文档表示。
- 确认模型特定的度量推荐。
- 在文档策略下拒绝零向量和非有限向量。
- 阅读实际服务分数定义。
- 将小向量值视为说明性算术。
适用范围
等价性适用于非零单位向量的精确算术。近似索引、量化、混合排名和服务分数转换可能影响返回结果。本指南不确立特定语料库的检索准确性。