60 秒回答模板

向量检索里最常见的相似度或距离指标有余弦相似度、点积,也叫 inner product,以及欧氏距离,也就是 L2 distance,另外还有少量场景会用曼哈顿距离或汉明距离。余弦相似度看两个向量方向是否接近,会弱化向量长度影响,适合大多数语义 embedding 检索,尤其是向量已经做归一化或模型训练目标就是 cosine 的情况。点积同时受方向和模长影响,如果向量未归一化,模长可能表达置信度、热度或训练出来的强度;如果向量都做了 L2 normalize,点积和余弦排序基本等价。欧氏距离看空间距离,距离越小越相似,在一些模型训练和索引实现中常见;对归一化向量来说,L2 距离也和余弦有单调关系。工程选择上不能凭感觉,要看 embedding 模型文档或训练目标、向量是否归一化、向量数据库支持的索引 metric,以及离线评估结果。RAG 场景通常会用 cosine 或 normalized dot product,再结合 reranker、metadata filter 和阈值。常见错误是索引建的是 L2,查询却按 cosine 理解,或者换 embedding 模型后不重新评估阈值,导致召回和排序明显漂移。

考点 cosine 看方向
难度 真实面经题
回答目标 让候选人能准确比较向量检索常见 metric,并把公式含义落到归一化、模型训练目标、向量数据库配置和 RAG 召回效果上。

深入解析

01

相似度指标服务于最近邻检索

Embedding 把文本、图片或其他对象映射到向量空间,向量检索要回答的是哪些向量和 query 向量最接近。这里的接近可以用相似度表示,分数越大越相似;也可以用距离表示,数值越小越相似。选择指标会直接影响召回顺序、阈值含义和向量索引配置。

02

余弦相似度看方向

余弦相似度衡量两个向量夹角的接近程度,通常范围在 -1 到 1,越大表示方向越一致。它会弱化向量模长影响,因此适合语义 embedding 中关注语义方向的场景。很多文本向量模型推荐 cosine,或默认输出已经适合 cosine 检索。缺点是如果模长本身承载有用信息,cosine 会把这部分信息抹掉。

03

点积同时看方向和模长

点积是两个向量对应维度乘积求和,分数越大通常越相似。未归一化时,点积会受到向量长度影响,模长大的向量可能更容易排前。某些推荐或召回模型会让模长承载置信度、流行度或强度,此时 inner product 有意义。若所有向量都做 L2 归一化,点积和余弦相似度在排序上等价。

04

欧氏距离看空间距离

欧氏距离衡量两个向量在空间中的直线距离,距离越小越相似。它在一些 ANN 索引和传统向量空间任务中常见。对没有归一化的向量,L2 会同时受到方向和模长影响;对单位向量,L2 距离和余弦相似度存在单调关系,所以排序可以相互转换。面试中要特别说明距离和相似度的方向相反。

05

归一化会改变指标关系

向量是否 normalize 是选择指标的关键。如果 query 和 doc 向量都归一化到单位长度,cosine、dot product 和 L2 在排序上有明确对应关系;如果没有归一化,它们的排序可能差异很大。工程中要统一离线建库、在线查询和阈值计算的归一化策略,不能一边 normalize 一边不 normalize。

06

指标必须匹配模型和索引

向量指标最好和 embedding 模型训练或推荐使用方式一致,也要和向量数据库索引 metric 一致。例如 HNSW、IVF、PQ 等索引通常在建索引时指定 metric;建库后随意切换 metric 可能需要重建索引。换模型、换维度、换归一化方式或切换 metric 后,都要重新做召回质量和阈值评估。

07

RAG 里相似度只是第一阶段信号

RAG 检索不能只迷信一个相似度分数。实际链路还会结合 metadata filter、关键词召回、时间过滤、权限过滤、去重、多路召回、reranker 和上下文拼接。相似度指标主要影响初始候选召回,最终答案质量还取决于证据覆盖、排序、上下文长度和生成模型是否正确使用证据。

易错点

  • 把相似度和距离混为一谈,没有说明 cosine、dot 越大越相似,而 L2 越小越相似。
  • 认为 cosine、dot product、L2 在任何情况下都等价,忽略归一化前提。
  • 只背公式,不说明向量模长是否有语义以及为什么会影响排序。
  • 建索引用一个 metric,查询和阈值解释却按另一个 metric,导致工程配置不一致。
  • 换 embedding 模型后沿用旧阈值和旧索引指标,没有重新评估召回质量。
  • 在 RAG 中只看 top-k 相似度,不考虑权限过滤、reranker、去重和上下文组装。
  • 忽略高维向量的分数分布问题,把固定相似度阈值当成所有领域都通用。

面试官追问

向量归一化后,cosine 和 dot product 为什么等价?

因为 cosine 等于点积除以两个向量模长。归一化后两个模长都为 1,所以 cosine 就等于点积,按分数排序也一致。

归一化向量下,L2 和 cosine 有什么关系?

单位向量之间的 L2 距离平方等于 2 减 2 倍 cosine。因此 cosine 越大,L2 距离越小,排序是单调对应的。

为什么不能随便换相似度指标?

因为 embedding 模型的训练目标、向量分布、索引结构和阈值都和 metric 相关。随便从 cosine 换成 L2,召回顺序和阈值含义会变,可能导致相关文档召不回来或无关文档排前。

RAG 检索一般选哪个指标?

常见选择是 cosine 或 normalized dot product,但最终要看 embedding 模型说明和离线评估。文本语义检索更常用 cosine,若模型明确按 inner product 训练,就应按模型推荐配置。

相似度阈值应该怎么定?

不能拍脑袋定。要用标注 query-document 对或线上点击、采纳数据,观察正负样本分数分布,再按召回率、准确率、空召回率和下游答案质量选择阈值。换模型或 metric 后阈值要重新校准。