相似度度量:余弦、内积与欧氏距离

02-嵌入与向量检索 核心 约 15 分钟 #余弦相似度#内积#欧氏距离#归一化 更新 2026-10-02
当前状态:未学
本文基于模型知识整理(生成时未联网核对),关键结论建议对照经典文献复核。

一句话定义

向量检索用三种基本度量比较嵌入:余弦相似度(比方向)、内积(比方向加长度,常被推荐系统用于注入流行度)、欧氏/L2 距离(比绝对位置);向量归一化后三者排序等价——选错度量或漏归一化是检索"莫名变差"的经典原因。

为什么重要

度量与训练方式、索引类型必须配套:训练时用内积优化的模型拿余弦查询可能排序错乱,索引(如 IVF-PQ)按特定度量构建后不可混用。这类配置错误不会报错,只会让结果悄悄变差,是最阴险的一类 bug。

前置知识

kp-007、基础向量代数。

核心概念

  • 余弦相似度 cos(θ) = (a·b)/(‖a‖‖b‖):只比方向,消除向量长度(文本长度、词频规模)影响;信息检索默认选项。
  • 内积(dot product) a·b = ‖a‖‖b‖cos(θ):长度参与排序;训练目标若为内积(很多对比学习模型如此),则推理也必须用内积。
  • 欧氏距离(L2) ‖a−b‖:比绝对位置;归一化后与余弦单调等价(d² = 2−2cosθ)。
  • 归一化(L2 normalization):把向量缩放到单位长度;此后内积 = 余弦、L2 排序与余弦一致——这是让三种度量统一的最常用手段。

原理与机制

度量与训练目标的一致性:对比学习训练时的打分函数定义了向量空间的几何结构。若训练用 cosine,查询时用内积,未被归一化的向量长度差异会污染排序;反之亦然。工程铁律:先读模型卡确认训练度量与是否已归一化,再选索引度量;拿不准就全部归一化后统一用内积/余弦。

三种度量的适用差异:

  • 检索(RAG):余弦或归一化内积——关注语义方向,长度信息是噪音。
  • 推荐/广告:内积——长度常编码"流行度/热度",是有用信号。
  • 聚类/去重:欧氏——关注绝对距离的簇结构。

与索引的绑定:HNSW/IVF 等索引在构建时指定度量(distance metric),不同度量的近邻图/量化器不同,建好后的索引不能换度量查询(部分库支持同库多度量,需显式选择)。PQ 量化误差也与度量相关(内积量化有非负性处理差异)。

公式或模型

  • 余弦:cos(a,b) = a·b / (‖a‖·‖b‖) ∈ [−1, 1]
  • 归一化后:a·b = cos(a,b),且 ‖a−b‖² = 2 − 2·cos(a,b)(排序等价的数学根据)

直观类比

比较两个人兴趣是否相投:余弦只看兴趣方向(都爱科技与音乐即相似,不管热情强度);内积还看投入程度(更狂热的人排名靠前);欧氏则连"兴趣清单的具体位置"都比。图书馆找相似书要排除"书写得多长"的影响——所以先归一化再比方向。

实例或案例

  • 事故样本:从模型 A(输出已归一化)换到模型 B(未归一化),检索代码沿用内积,长文档块向量范数大、系统性霸榜 top-k——症状是"长块全命中、短答案查不到"。归一化后恢复。
  • 推荐场景反例:刻意用未归一化内积让爆款内容获得曝光加权——度量选择是业务决策而非纯技术决策。

常见误区

  • 误区一:"余弦永远是对的"。训练目标为内积的模型按余弦查询同样错配;跟模型走,不跟习惯走。
  • 误区二:"阈值可以跨模型复用"。不同模型相似度分布完全不同,0.8 在 A 模型是高相关在 B 模型可能稀松平常;阈值必须基于自有分布重新标定(kp-016 的评测数据)。
  • 误区三:"度量只影响排序不影响召回结构"。IVF 的聚类、HNSW 的图都按度量构建,混用度量等于在错误的几何里找近邻。

与其他知识点的关系

  • kp-007:训练目标决定几何结构。
  • kp-009:索引构建与度量绑定。
  • kp-010:混合检索中向量分数与 BM25 分数要分别归一/融合(RRF 免调参)。

自测题

  1. 为什么归一化后内积、余弦、L2 排序等价?

答:归一化后 ‖a‖=‖b‖=1,内积即余弦;而 ‖a−b‖² = 2−2cos(a,b) 是余弦的单调递减函数,故三者给出相同排序。

  1. 什么场景应故意不归一化用内积?

答:向量范数携带业务信号时(如推荐中的流行度/热度加权),长度参与排序是特性而非缺陷。

  1. 换度量时为什么必须重建索引?

答:HNSW 近邻图与 IVF 聚类都按指定度量的几何构建,换度量即在错误的邻域结构上检索,结果不可信。

延伸阅读

  • Malkov & Yashunin, HNSW 论文(§ 度量与实现)。
  • 各向量库文档:distance metrics 章节(Pinecone/Qdrant/Milvus/faiss)。
  • Robertson & Zaragoza, BM25(对照:词频权重思想与向量长度的取舍异同)。