news 2026/9/29 22:06:25

程序员应该熟悉的概念(9)向量相似度(vector similarity)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
程序员应该熟悉的概念(9)向量相似度(vector similarity)

在之前的文章 嵌入和语义检索 中,我们了解了把文本变成向量的方法,由于这些向量相当于将文本做了分类:语义相近的距离越近,所以这些向量就可以很方便的应用于语义检索场景了。

比较向量相似度(vector similarity)的常见算法主要分为两大类:

1️⃣基于“角度/方向”的度量
2️⃣基于“距离/差异”的度量

下面我们系统的整理一下。


一、基于“方向”的相似度算法(常用于语义相似度)

这些方法关注向量间的夹角或方向一致性,而不太关心长度。

1.余弦相似度(Cosine Similarity)

  • 公式:
    cosine-sim ( A , B ) = A ⋅ B ∣ ∣ A ∣ ∣ , ∣ ∣ B ∣ ∣ \text{cosine-sim}(A, B) = \frac{A \cdot B}{||A|| , ||B||}cosine-sim(A,B)=∣∣A∣∣,∣∣B∣∣A⋅B​

  • 值域:[-1, 1]
    越接近 1,表示两个向量方向越相似。

  • 特点:
    忽略向量的大小,只看“方向”是否一致。

  • 应用:
    文本嵌入、语义搜索、推荐系统(例如BERT、Word2Vec后常用)。


2.点积(Dot Product)

  • 公式:
    A ⋅ B = ∑ i A i B i A \cdot B = \sum_i A_i B_iA⋅B=i∑​Ai​Bi​

  • 几何意义:
    点积的几何意义本质是将一个向量投影到另一个向量上,再计算投影长度与被投影向量长度的乘积,它直接关联向量的方向关系。
    点积的另一个计算公式为:A ⃗ ⋅ B ⃗ = ∣ A ⃗ ∣ ⋅ ∣ B ⃗ ∣ ⋅ cos ⁡ θ \vec{A} \cdot \vec{B} = |\vec{A}| \cdot |\vec{B}| \cdot \cos\thetaA⋅B=∣A∣⋅∣B∣⋅cosθ,其中θ \thetaθ是两个向量的夹角,这个公式直接体现了其几何意义,可拆解为两步:

    1. 计算向量B ⃗ \vec{B}B在向量A ⃗ \vec{A}A方向上的投影长度,即∣ B ⃗ ∣ ⋅ cos ⁡ θ |\vec{B}| \cdot \cos\theta∣B∣⋅cosθ;
    2. 将这个投影长度与向量A ⃗ \vec{A}A的自身长度∣ A ⃗ ∣ |\vec{A}|∣A∣相乘,得到点积结果。

    反过来,也可以理解为向量A ⃗ \vec{A}A在B ⃗ \vec{B}B方向上的投影长度乘以∣ B ⃗ ∣ |\vec{B}|∣B∣,结果完全相同。

    数学真是太神奇了,使用不同的方法计算,正确结果只有一个。

点积

  • 衍生意义:判断向量方向关系:
    点积的正负和大小,能直接反映两个向量的方向关联,这是其几何意义的重要应用:
  • A ⃗ ⋅ B ⃗ > 0 \vec{A} \cdot \vec{B} > 0A⋅B>0:cos ⁡ θ > 0 \cos\theta > 0cosθ>0,夹角θ < 9 0 ∘ \theta < 90^\circθ<90∘,两个向量方向大致相同(锐角或同向);
  • A ⃗ ⋅ B ⃗ = 0 \vec{A} \cdot \vec{B} = 0A⋅B=0:cos ⁡ θ = 0 \cos\theta = 0cosθ=0,夹角θ = 9 0 ∘ \theta = 90^\circθ=90∘,两个向量垂直(正交);
  • A ⃗ ⋅ B ⃗ < 0 \vec{A} \cdot \vec{B} < 0A⋅B<0:cos ⁡ θ < 0 \cos\theta < 0cosθ<0,夹角θ > 9 0 ∘ \theta > 90^\circθ>90∘,两个向量方向大致相反(钝角或反向)。
  • 特点:
    向量越长、方向越相近,点积越大。
    若向量已归一化,则点积 = 余弦相似度。
  • 应用:
    在神经网络、注意力机制(attention score)中常用。

3.皮尔逊相关系数(Pearson Correlation)

  • 公式:
    r ( A , B ) = ∑ i ( A i − A ˉ ) ( B i − B ˉ ) ∑ i ( A i − A ˉ ) 2 ∑ i ( B i − B ˉ ) 2 r(A, B) = \frac{\sum_i (A_i - \bar{A})(B_i - \bar{B})}{\sqrt{\sum_i (A_i - \bar{A})^2} \sqrt{\sum_i (B_i - \bar{B})^2}}r(A,B)=∑i​(Ai​−Aˉ)2​∑i​(Bi​−Bˉ)2​∑i​(Ai​−Aˉ)(Bi​−Bˉ)​
  • 特点:
    衡量线性相关性,与余弦相似度相似,但会去除平均值影响。
  • 应用:
    用户行为相似度、推荐系统协同过滤。

二、基于“距离”的相似度算法(越小越相似)

这些算法测量两个向量的“距离”,常用于数值特征。

4.欧氏距离(Euclidean Distance)

  • 公式:
    d ( A , B ) = ∑ i ( A i − B i ) 2 d(A, B) = \sqrt{\sum_i (A_i - B_i)^2}d(A,B)=i∑​(Ai​−Bi​)2​

  • 几何意义:
    欧氏距离的几何意义本质是n维空间中两个点之间的“直线距离”,是平面几何中两点间距离公式在高维空间的直接推广。

    从二维到高维的直观理解:
    欧氏距离的核心是“直线最短”,在不同维度空间中表现为具体的直线距离:

  • 二维空间:平面上两点( x 1 , y 1 ) (x_1,y_1)(x1​,y1​)和( x 2 , y 2 ) (x_2,y_2)(x2​,y2​)之间的直线距离,公式为( x 2 − x 1 ) 2 + ( y 2 − y 1 ) 2 \sqrt{(x_2-x_1)^2 + (y_2-y_1)^2}(x2​−x1​)2+(y2​−y1​)2​,对应勾股定理中斜边的长度。

欧氏距离

  • 三维空间:立体空间中两点( x 1 , y 1 , z 1 ) (x_1,y_1,z_1)(x1​,y1​,z1​)和( x 2 , y 2 , z 2 ) (x_2,y_2,z_2)(x2​,y2​,z2​)之间的直线距离,公式扩展为( x 2 − x 1 ) 2 + ( y 2 − y 1 ) 2 + ( z 2 − z 1 ) 2 \sqrt{(x_2-x_1)^2 + (y_2-y_1)^2 + (z_2-z_1)^2}(x2​−x1​)2+(y2​−y1​)2+(z2​−z1​)2​。
  • n维空间:对于抽象的n维数据点(如机器学习中的特征向量),欧氏距离同样表示两点沿各维度坐标差值构成的“超空间直线长度”,公式为∑ i = 1 n ( x i 2 − x i 1 ) 2 \sqrt{\sum_{i=1}^n (x_{i2}-x_{i1})^2}∑i=1n​(xi2​−xi1​)2​。
  • 特点:
    直观、最常见。距离越小越相似(如两个用户的偏好特征、两个样本的属性)。
  • 应用:
    聚类(KMeans)、图像向量检索。

5.曼哈顿距离(Manhattan Distance)

  • 公式:
    d ( A , B ) = ∑ i ∣ A i − B i ∣ d(A, B) = \sum_i |A_i - B_i|d(A,B)=i∑​∣Ai​−Bi​∣
  • 特点:
    对异常值更鲁棒,适合稀疏向量。
  • 应用:
    特征稀疏的场景(如词袋模型)。

6.闵可夫斯基距离(Minkowski Distance)

  • 公式:
    d ( A , B ) = ( ∑ i ∣ A i − B i ∣ p ) 1 / p d(A, B) = \left( \sum_i |A_i - B_i|^p \right)^{1/p}d(A,B)=(i∑​∣Ai​−Bi​∣p)1/p
  • 特点:
    欧氏距离(p=2)和曼哈顿距离(p=1)的泛化形式。

7.切比雪夫距离(Chebyshev Distance)

  • 公式:
    d ( A , B ) = max ⁡ i ∣ A i − B i ∣ d(A, B) = \max_i |A_i - B_i|d(A,B)=imax​∣Ai​−Bi​∣
  • 特点:
    只关心最大差异的维度。

实际应用推荐

应用场景推荐算法
文本语义相似度余弦相似度、欧氏距离、点积
图像特征匹配欧氏距离、余弦相似度
用户行为相似度皮尔逊相关系数
稀疏特征向量曼哈顿距离

总结

在语义检索(semantic retrieval)领域,最常用的相似度比较算法是:余弦相似度(使用最广泛、最经典的语义相似度算法)、欧氏距离、点积。
在语义检索系统(如基于 BERT / BGE / SimCSE / OpenAI Embedding)的实现里:

算法常见用途备注
余弦相似度文本语义检索、RAG系统默认标准
欧氏距离向量数据库内部优化距离越小越相似
点积相似度注意力机制、嵌入匹配速度快,常见于模型内部

🪐感谢观看,祝好运🪐

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/29 19:06:47

10、GNU和UNIX命令使用指南

GNU和UNIX命令使用指南 在GNU和UNIX系统中,命令行操作是一项重要技能。下面将详细介绍命令行的自动补全、变量使用、历史记录管理以及进程控制等方面的知识。 命令行自动补全 在bash中,当你不是在输入第一个单词(命令)时,bash会查找与你所输入内容匹配的文件名。如果只有…

作者头像 李华
网站建设 2026/9/29 13:14:59

16、SSH 客户端与服务器的端口转发配置指南

SSH 客户端与服务器的端口转发配置指南 1. SSH 客户端本地端口转发 SSH 客户端本地端口转发允许将本地端口的流量转发到远程服务器的指定端口。以下是不同命令行客户端的配置方法。 1.1 命令行客户端配置 OpenSSH、SSH Communications 和 VanDyke Software 都提供了用于 SS…

作者头像 李华
网站建设 2026/9/30 12:44:14

科研突破新引擎:书匠策AI期刊论文助手如何重构学术创作生态?

在科研工作者日均处理30篇文献、撰写5000字论文的常态下&#xff0c;学术生产力工具的革新已从"效率提升"转向"范式变革"。书匠策AI以认知智能为核心&#xff0c;通过构建"文献理解-逻辑构建-质量把控"的全链条智能支持系统&#xff0c;正在重新…

作者头像 李华
网站建设 2026/9/30 11:24:11

2、深入了解 SSH:功能、优势与架构

深入了解 SSH:功能、优势与架构 1. SSH 基础概述 Secure Shell(SSH)是用于保障两个实体间通信安全的程序。它采用客户端/服务器架构,SSH 客户端可在所有版本的 Windows、不同的 Unix 系统以及各种 Macintosh 操作系统上使用,能连接到 SSH 服务器,这些服务器可以是如 Su…

作者头像 李华
网站建设 2026/9/30 7:27:38

从选题焦虑到逻辑闭环:本科毕业论文写作困境的智能破局新路径

每年春夏之交&#xff0c;高校校园里总弥漫着一种独特的“低气压”——不是考试周&#xff0c;不是实习季&#xff0c;而是本科毕业论文的攻坚期。对许多本科生而言&#xff0c;这可能是人生中第一次独立完成一篇结构完整、逻辑自洽、格式规范的学术写作。然而&#xff0c;缺乏…

作者头像 李华