来源:清华大学数据科学研究院数据派
本文约3000字,建议阅读5分钟
度量选择并非一次性的架构决策,而是持续存在的产品风险。
AI 搜索、RAG Pipeline 和推荐引擎底层采用的距离度量(distance metric)在数学层面定义了产品里的“相似”。
![]()
“其背后的数学原理并不复杂,但在生产环境中实现规模化并非如此。你需要为自己的使用场景选择正确的相似度度量,选择能在大规模场景下将延迟控制在 100ms 以内的算法,还要构建一套在数百万个向量中搜索时不会成为瓶颈的基础设施。”——Rini Vasan(Redis 作者)
向量 Embedding 到底是什么
理解这些度量前需要先建立一个基本概念:向量 Embedding 本质上是一组浮点数。因为模型处理的每项内容,无论是用户查询、产品描述还是基因组学记录,都会转换成这样的数值数组。
以OpenAI 的 text-embedding-3-large 模型为例它会生成包含 3,072 个数字的数组,而BERT-base 则生成 768 个。数组把语义表示为巨大坐标空间中的一个点。
相似性搜索(similarity search)要做的就是在这个空间中找出与查询点“接近”的点。“接近”的定义完全取决于所选度量;同一数据集换一种计算方式,排序结果可能截然不同。
Weaviate、Pinecone 和 Redis 工程团队都确认了同一条原则:距离度量应当匹配 Embedding 模型训练时使用的损失函数。生产级 AI 系统出现无声质量回退,最常见的原因就是违背了这条原则。
度量 1:余弦相似度(Cosine Similarity)
余弦相似度衡量的是两个向量的夹角,而非两者之间的距离。向量有多长并不参与判断,方向才是核心。可以把两个向量想成两艘驶向东北的船:一艘航行 10 英里,另一艘航行 1,000 英里,两者依旧“相似”,因为方向一致。余弦相似度采用的正是这个逻辑。
放在文本场景中,一篇文档使用“水果”30 次,另一篇只使用 10 次,两者表达的语义仍可能完全相同。它们的向量模长不同,方向却一致。余弦归一化(cosine normalization)可以减轻长度偏差,因而成了 NLP、语义搜索、文档聚类和跨语言 Embedding 比较的行业标准。
不使用余弦相似度时,模长信息会完全丢失。假设向量大小本身携带信号,例如一名高频用户评过 500 件产品,另一名低活跃用户只评过 5 件,余弦相似度仍会给两人相同权重。推荐系统会就此埋下难以察觉的产品缺陷。
度量 2:点积(Dot Product,Inner Product)
点积把方向一致程度和模长放在一起衡量:两个向量中每一对对应数字相乘,再把结果相加。
当两个向量都经过单位归一化,也就是长度被缩放到正好为 1 时,点积与余弦相似度给出的排序在数学上完全一致。
这一点会直接影响基础设施成本。点积省去了余弦公式里的归一化除法,计算开销更低;Pinecone 等生产系统也明确推荐“建立索引时归一化 Embedding,查询时使用点积”的模式。
点积风险在于如果简单理解成“更快的余弦相似度”,却忽略向量是否已经归一化。对于采用余弦损失训练但未经归一化的 Embedding,点积会混淆方向和模长,召回率随之下降,系统却未必会报错。
度量 3:欧几里得距离(Euclidean Distance,L2)
欧几里得距离就是两点之间的直线距离,类似地图上两个地点间的“直线飞行”距离。数值为 0表示向量完全相同;数值越大,差异越大。
方向和模长都会纳入计算。当特征值之间的原始差异本身有意义时,欧几里得距离通常更合适。购买 100 件商品的用户与只购买 1 件商品的用户确实不同,这项度量会直接编码差异。
它的限制出现在超高维空间里。维度达到 1,000 以上时,可能发生距离集中(distance concentration):点与点之间的成对距离逐渐收敛到同一个值,“最近”和“最远”几乎无法区分。
现代 Transformer Embedding 借助训练缓解了部分影响,但这个架构约束依然存在,应在技术评审中把它标记出来。
度量 4:曼哈顿距离(Manhattan Distance,L1)
曼哈顿距离逐维计算绝对差值再将结果求和。它就像在城市网格中行走,只能沿街区一段一段前进,不能斜穿;名称也直接取自纽约市的街道布局。
欧几里得距离会对差值求平方,某个离群维度,也就是一个极端特征值,可能被放大。曼哈顿距离不做平方运算,每个维度的贡献保持线性,所以面对偶发噪声或极端特征时更稳健。
硬件会影响实际计算速度。在支持 AVX SIMD 指令的现代 CPU 上,欧几里得距离有时反而更快:平方只需一条乘法指令,取绝对值则需要条件操作。不要预设 L1 一定更快应在目标硬件上进行基准测试。
度量 5:Jaccard 相似度(Jaccard Similarity)
Jaccard 面向集合而非几何向量。它计算两个集合的重叠元素占全部合并元素的比例,也就是交集除以并集。得分为 1.0 代表完全重叠,得分为 0 则代表没有共同元素。
可以把问题理解为:“两个购物车里有多少共同商品?”二元存在/不存在数据、标签系统、关键词重叠和大规模近重复文档检测,都适合采用 Jaccard。产品 Pipeline 如果处理稀疏二元特征向量、共现数据或标签匹配,也应把它纳入评估范围。
边界同样清楚:Jaccard 从根本上不适用于稠密浮点 Embedding。将它套在 Transformer 模型产生的连续值向量上结果没有意义。
度量 6:Pearson 相关系数(Pearson Correlation)
Pearson 相关系数可以理解为用于均值中心化向量的余弦相似度。计算方向的一致程度之前,它先从每个向量中减去平均值,排除绝对尺度和基线偏移的影响。
两名用户的电影评分可能看起来差别很大:一人总是打 7–10 分,另一人只打 1–4 分,但两人的潜在品味模式可能几乎一致。Pearson 消除个人评分风格带来的偏差,找出其中的一致性。
适用场景包括生物信息学中的基因表达比较、时间序列趋势相似度,例如股票走势和传感器读数,以及采用显式评分的协同过滤。在这些场景里,受访者的回答基线通常存在系统性差异。
大多数向量数据库没有原生实现 Pearson,因为每次查询都执行均值中心化,在大规模系统中成本太高。实际部署通常会在建立索引时预先中心化所有 Embedding,即从数据集的每个维度中减去均值,再以标准余弦相似度执行查询。
预中心化后的余弦相似度就是 Pearson 相关系数,这个方法合生产环境。
度量 7:汉明距离(Hamming Distance)
汉明距离统计两个等长向量中取值不同的位置数。用于二元向量时,可以直接执行 XOR 位运算,计算速度很快。
理解二值量化(binary quantization)之后,它在现代系统中的价值才会显现。
float32 Embedding 的每个维度占 32 位,二值量化版本则只占 1 位,内存可压缩约 32 倍。文本“Hi there”可能生成 [0.2618, 0.1175, 0.38] 这样的浮点 Embedding,量化后得到 [1, 0, 1]——存储从 3 个 32 位浮点数缩减为 3 位。
FAISS 和 Qdrant 已在生产环境采用一种组合方案:第一轮检索使用二值量化和汉明距离追求速度,随后对候选结果按余弦相似度重新排序,以保证准确率。速度与召回率可以在同一条检索链路中兼顾。
如何选择合适的度量
决策规则可以压缩成一句话:
使用与 Embedding 模型训练方式相匹配的度量,其他因素都在其后。
文档信息不足或表述含糊时,可以借助这棵决策树:
![]()
上线前应当测量什么
纸面上选定度量只是起点,还必须用实际数据和真实查询模式验证。多数团队跳过的,恰恰是这个环节。
下表列出了每种度量的计算特征、内存行为,以及生产环境中最常见的使用错误:
![]()
评估至少要覆盖三项指标:Recall@K,用来检查正确结果是否进入前 K 名;平均倒数排名(Mean Reciprocal Rank),用于判断最佳结果是否排在最前;P99 延迟,因为 Redis 工程团队把 100ms 以内视为大规模生产环境的要求。
如果两种度量得到的召回率相同,选择计算成本更低的一种。
总结
上线向量搜索功能前,有一项配置必须核对:Embedding 是否已经预归一化?
Cohere 的 embed 默认生成单位归一化向量,查询时点积和余弦相似度的数值完全相同。OpenAI 的 Embedding 文档则建议在建立索引前完成归一化。
Embedding 已预归一化:使用点积,速度更快,结果与余弦相似度相同。
来自余弦训练模型、未经归一化的 Embedding:明确使用余弦相似度,或者在建立索引时进行归一化。
来自点积训练模型、未经归一化的 Embedding:使用点积,模长属于信号的一部分。
如果数据已经归一化,就无法再观察到模长。因此,如果数据已经归一化,余弦相似度和点积度量就完全相同。
度量选择并非一次性的架构决策,而是持续存在的产品风险。团队每次更换 Embedding 模型、更新 Embedding 版本或迁移向量数据库,都要重新核对度量是否匹配。
作者:Souvik Sarkar
编辑:文婧
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.