Page 11 - 《软件学报》2026年第3期
P. 11
974 软件学报 2026 年第 37 卷第 3 期
的二值化编码等, 在牺牲一定精度的情况下获得了极高的存储和计算效率, 通过异或和 popcnt 指令可以实现硬件
级别的加速, 特别适合大规模快速检索场景, 为了弥补信息损失, 通常采用更高的维度来保持足够的区分度. (4) 属
性数据作为向量的补充, 提供了额外的结构化信息维度. 在实际检索中, 通过属性过滤与向量相似度的联合查询,
可以实现更精准的检索需求, 弥补单一向量表达在某些特定维度上的不足.
1.3 相似度度量
相似度函数被用于衡量两个向量之间的相似程度. 不同的相似度函数适用于不同的数据类型和应用场景, 下
面介绍向量数据库中使用的基本相似度函数. 表 2 是相关内容总览. 更多函数可以参考文献 [26].
表 2 不同的相似度比较
相似度量函数 值域 常用数据类型 复杂度 优点 缺点
欧氏距离 [0,+∞) 稠密向量 O(d) 几何意义直观 计算效率低
余弦相似度 [−1,+1] 稠密向量 O(d) 关注向量方向 异常值不敏感
内积 (−∞,+∞) 稠密、稀疏向量 O(d) 计算速度高 不是度量空间
汉明距离 [0,d] 二值向量 O(d/64) 位运算高效 信息损失大
Jaccard相似度 [0,1] 稀疏向量 O(m+n) 可解释性强 计算速度慢
(1) 欧氏距离
欧氏距离是最常用的相似度函数之一. 它定义为两个向量之间的平方差之和的平方根. 在实际中, 一般用平方
欧氏距离来避免开方运算. 对于两个向量 p 和 q, 其平方欧氏距离计算公式如下:
d ∑
2
δ(p,q) = (p i −q i ) .
i
欧氏距离几何意义明确, 具有平移不变性, 广泛用于向量之间的相似性度量.
(2) 余弦相似度
余弦相似度是计算两个归一化后的向量的内积, 代表两个向量之间的角度, 对向量的幅度不敏感. 余弦相似度
计算公式如下:
pq
sim(p,q) = .
∥p∥∥q∥
余弦相似度在文本向量中应用广泛. 它与欧氏距离可在归一化后进行转换, 公式如下: δ(p,q) = 2·(1− sim(p,q)).
(3) 内积
δ(p,q) = p·q. 内积的几何意义为两个向量之间的夹角余
内积是向量空间中最基本的相似度函数, 计算公式为
弦值与向量模长的乘积, 不满足度量空间要求.
(4) 汉明距离
汉明距离是用于计算两个二进制向量之间的相似度函数, 对于两个二值向量 p 和 q, 汉明距离计算公式为:
d ∑
H(p,q) = p i ⊕q i ,
i=1
其中, ⊕ 表示异或操作. 汉明距离定义为两个等长向量中对应位置元素不同的个数. 其几何意义可以直观地理解为
两点在超立方体坐标上相异维度的数量. 两个向量之间的汉明距离可以通过异或和 popcnt 实现快速计算.
(5) Jaccard 相似度
Jaccard 相似度是用于计算两个集合之间相似度的函数. 对于两个集合 p 和 q, Jaccard 相似度计算公式为:
|p∩q|
J(p,q) = .
|p∪q|
Jaccard 相似度的几何意义为两个集合的交集与并集的比值. 两个向量的相似度可以直接通过分别计算集合

