向量相似度如何计算?
未标记
考查重点:相似度定义与向量处理一致性。余弦比较方向、内积兼受长度影响、欧氏距离比较直线距离;按 Embedding 训练约定选择,入库与查询处理一致
本题目录
参考答案
核心回答
向量相似度是按选定的度量,对查询向量与候选向量打分,再按分数取最接近的结果。文本检索中常见三种:余弦相似度看方向,内积同时受方向和长度影响,欧氏距离看空间中的直线距离。
余弦和内积通常越大越相似,欧氏距离越小越接近。选择时要看Embedding模型的训练方式和推荐度量,并让入库处理、索引和查询保持匹配;不同度量不一定得到同一排序。若两边都是单位向量,余弦与内积相等,平方欧氏距离又等于 2 - 2 × 内积,三者在精确比较同一组候选时给出等价排序。
三种常用度量怎样计算
设两个非空同维向量为 x、y,下标 i 遍历各个维度,向量长度记为 ||x|| = sqrt(Σ x_i²)。
内积:dot(x,y) = Σ x_i × y_i。 对应维度相乘后相加。它不仅反映方向,也受向量模长影响。对于固定查询,候选向量长度不同可能改变排名;内积不必限制在 [-1,1],也不是概率。
余弦:cos(x,y) = dot(x,y) / (||x|| × ||y||)。 在两个向量都非零时,去掉长度因素,只比较方向,范围为 [-1,1]。1表示同方向,0表示正交,-1表示反方向;这些首先是几何关系,不能直接把0解释成文本毫无语义关系,或把1当作事实完全相同。零向量的余弦没有这个数学定义,应由输入校验或明确的库约定处理。
欧氏距离:L2(x,y) = sqrt(Σ (x_i-y_i)²)。 衡量两点间直线距离,越小越接近。有的检索库返回平方距离,不开平方仍保持相同排序,但分数数值不同。例如Faiss的 METRIC_L2 返回平方L2,阈值也要按这个含义设置。
一个例子说明排序为什么会不同
取查询 q=(1,0),两个候选 a=(1,1)、b=(3,4):
- 内积:
q·a=1,q·b=3,因此b排名更靠前。 - 余弦:
cos(q,a)=1/√2≈0.7071,cos(q,b)=3/5=0.6,因此a排名更靠前。 - 欧氏距离:到a为1,到b为
√20≈4.4721,因此a更接近。
b的模长较大,原始内积更高;a与查询的方向更接近。这个例子展示度量差异,实际文本是否相关还取决于模型如何学习这个向量空间。
为什么归一化以后可以互相转换
把非零向量分别除以自己的模长,得到单位向量。此时分母都是1,因此余弦就等于内积。再展开平方距离:
||x-y||² = ||x||² + ||y||² - 2(x·y) = 2 - 2(x·y)。
所以最大化余弦、最大化内积与最小化平方L2得到相同的精确排名。这里要求候选也已归一化;只处理查询,并不能消除不同候选的模长差异。采用近似索引后,实际候选搜索路径还会影响召回,数学上的度量等价不意味着不同索引配置总返回完全相同的结果。
是否归一化要按模型设计选择。某些内积模型会利用模长表达信息,额外归一化会改变它原来的评分;不能为了套用余弦公式就一律预处理。
在RAG中怎样正确使用
先确认查询与文档向量来自可比较的Embedding空间,维度和模型配套方式正确。有些模型分别规定查询前缀、文档前缀或不同编码分支,不能只看维数相同就混用。
再核对接口返回的是相似度、距离、平方距离还是负距离,以及排序方向。例如一些接口用负欧氏距离作为“越大越好”的分数。检索阈值要在本模型、本数据和本度量上校准,不能把另一个系统的0.8直接复制过来。
最后用已标注问题检查相关片段能否进入候选。相似度计算与HNSW等索引搜索是两个层次:前者定义怎样比较,后者减少需要比较的候选;重排还可以进一步结合查询与片段内容判断相关性。
常见追问
余弦0.8代表有80%的概率相关吗?
不代表。它是向量夹角的函数,不是经过校准的相关概率。是否足以支持回答,要结合模型、问题类型和实际证据判断。
除了这三种,还有哪些?
还有曼哈顿距离、用于二进制表示的汉明距离等。它们适用的数据表示和检索目的不同;对稠密文本向量,应先遵循模型推荐方式,再用任务数据验证。
对应教程
- 向量数据库与Embedding实战:第5.1~5.2节介绍余弦直觉及COSINE、L2、IP的选择,本题补充可复算例子、归一化等价关系和分数解释。
参考资料
国内:JavaGuide:向量相似度和距离度量怎么选:说明余弦、内积与L2在检索中的作用,以及模型度量、索引与查询配置为什么要配合。
国内:Datawhale:大语言模型基础:依据词向量与余弦公式,说明正文中方向比较的几何含义及其不能直接代表文本语义事实的边界。
国内:wdndev:相似向量检索:参考度量与搜索算法的区分以及逐候选点积打分,说明正文中相似度定义、Top-K 和索引搜索的层级关系。
国外:Faiss:MetricType and distances:解释Faiss返回平方L2,以及怎样通过归一化把余弦搜索转成内积搜索,支持等价排序的公式推导。
国外:Sentence Transformers:Semantic Textual Similarity:依据相似度函数与 Normalize 的约定,说明正文中距离、负距离的方向及单位向量点积等于余弦的条件。
相关面经
3 篇收录题集
向量数据库与嵌入
RAG 知识库
Prompt与上下文
RAG与知识库
Tokenizer与Embedding
Embedding与向量化 「字节Seed、字节跳动、百度、腾讯、蚂蚁集团、阿里巴巴」
展开剩余 14 份题集
多模态与计算机视觉
推荐搜索与广告
机器学习基础汇编
Agent_RAG与混合检索工程
月之暗面高频面试题
大模型原理追问
数学基础高频考点
损失函数知识点
聚类学习
- 原文作者
- Yvette 明明就 本题集的 12 道原题均来自 Yvette 明明就编写的 K-means 文档。
推荐系统
- 原文作者
- Summer 其中第 1—13 题来自 Summer 编写的协同过滤文档。

