真实面经题目 · 原创解析
向量检索中常见相似度计算指标有哪些?余弦相似度、点积和欧氏距离如何选择?
这题考向量检索基础和工程选择:候选人要能解释 cosine、dot product、L2 的含义、适用前提、归一化关系,以及为什么指标要和 embedding 训练目标及索引配置一致。
真实面经题目 · 原创解析
这题考向量检索基础和工程选择:候选人要能解释 cosine、dot product、L2 的含义、适用前提、归一化关系,以及为什么指标要和 embedding 训练目标及索引配置一致。
向量检索里最常见的相似度或距离指标有余弦相似度、点积,也叫 inner product,以及欧氏距离,也就是 L2 distance,另外还有少量场景会用曼哈顿距离或汉明距离。余弦相似度看两个向量方向是否接近,会弱化向量长度影响,适合大多数语义 embedding 检索,尤其是向量已经做归一化或模型训练目标就是 cosine 的情况。点积同时受方向和模长影响,如果向量未归一化,模长可能表达置信度、热度或训练出来的强度;如果向量都做了 L2 normalize,点积和余弦排序基本等价。欧氏距离看空间距离,距离越小越相似,在一些模型训练和索引实现中常见;对归一化向量来说,L2 距离也和余弦有单调关系。工程选择上不能凭感觉,要看 embedding 模型文档或训练目标、向量是否归一化、向量数据库支持的索引 metric,以及离线评估结果。RAG 场景通常会用 cosine 或 normalized dot product,再结合 reranker、metadata filter 和阈值。常见错误是索引建的是 L2,查询却按 cosine 理解,或者换 embedding 模型后不重新评估阈值,导致召回和排序明显漂移。
Embedding 把文本、图片或其他对象映射到向量空间,向量检索要回答的是哪些向量和 query 向量最接近。这里的接近可以用相似度表示,分数越大越相似;也可以用距离表示,数值越小越相似。选择指标会直接影响召回顺序、阈值含义和向量索引配置。
余弦相似度衡量两个向量夹角的接近程度,通常范围在 -1 到 1,越大表示方向越一致。它会弱化向量模长影响,因此适合语义 embedding 中关注语义方向的场景。很多文本向量模型推荐 cosine,或默认输出已经适合 cosine 检索。缺点是如果模长本身承载有用信息,cosine 会把这部分信息抹掉。
点积是两个向量对应维度乘积求和,分数越大通常越相似。未归一化时,点积会受到向量长度影响,模长大的向量可能更容易排前。某些推荐或召回模型会让模长承载置信度、流行度或强度,此时 inner product 有意义。若所有向量都做 L2 归一化,点积和余弦相似度在排序上等价。
欧氏距离衡量两个向量在空间中的直线距离,距离越小越相似。它在一些 ANN 索引和传统向量空间任务中常见。对没有归一化的向量,L2 会同时受到方向和模长影响;对单位向量,L2 距离和余弦相似度存在单调关系,所以排序可以相互转换。面试中要特别说明距离和相似度的方向相反。
向量是否 normalize 是选择指标的关键。如果 query 和 doc 向量都归一化到单位长度,cosine、dot product 和 L2 在排序上有明确对应关系;如果没有归一化,它们的排序可能差异很大。工程中要统一离线建库、在线查询和阈值计算的归一化策略,不能一边 normalize 一边不 normalize。
向量指标最好和 embedding 模型训练或推荐使用方式一致,也要和向量数据库索引 metric 一致。例如 HNSW、IVF、PQ 等索引通常在建索引时指定 metric;建库后随意切换 metric 可能需要重建索引。换模型、换维度、换归一化方式或切换 metric 后,都要重新做召回质量和阈值评估。
RAG 检索不能只迷信一个相似度分数。实际链路还会结合 metadata filter、关键词召回、时间过滤、权限过滤、去重、多路召回、reranker 和上下文拼接。相似度指标主要影响初始候选召回,最终答案质量还取决于证据覆盖、排序、上下文长度和生成模型是否正确使用证据。
因为 cosine 等于点积除以两个向量模长。归一化后两个模长都为 1,所以 cosine 就等于点积,按分数排序也一致。
单位向量之间的 L2 距离平方等于 2 减 2 倍 cosine。因此 cosine 越大,L2 距离越小,排序是单调对应的。
因为 embedding 模型的训练目标、向量分布、索引结构和阈值都和 metric 相关。随便从 cosine 换成 L2,召回顺序和阈值含义会变,可能导致相关文档召不回来或无关文档排前。
常见选择是 cosine 或 normalized dot product,但最终要看 embedding 模型说明和离线评估。文本语义检索更常用 cosine,若模型明确按 inner product 训练,就应按模型推荐配置。
不能拍脑袋定。要用标注 query-document 对或线上点击、采纳数据,观察正负样本分数分布,再按召回率、准确率、空召回率和下游答案质量选择阈值。换模型或 metric 后阈值要重新校准。