向量距离与相似度:四种常见度量
在机器学习与信息检索中,“距离(distance)”通常表示不相似程度,“相似度(similarity)”表示相似程度。下面是四种最常用的度量方式。
1. 欧氏距离(Euclidean Distance)
定义
欧氏距离是空间中的直线距离,对应“几何直觉中的最短路径”。
对于向量 (x, y \in \mathbb{R}^n):
[ d(x,y) = \sqrt{\sum_{i=1}^{n}(x_i - y_i)^2} ]
原理直觉
- 把每个向量看作 n 维空间中的一个点
- 欧氏距离就是“点到点的直线长度”
- 强调绝对数值差异
特点
- 对尺度敏感(需要标准化)
- 常用于聚类(K-means)
2. 点积相似度(Dot Product Similarity)
定义
点积衡量两个向量的“方向一致程度 + 规模影响”:
[ s(x,y) = \sum_{i=1}^{n} x_i y_i ]
几何意义
[ x \cdot y = |x||y|\cos\theta ]
因此:
- 同方向 → 值大
- 反方向 → 负值
- 正交 → 0
直觉解释
- 越“同方向”的向量,点积越大
- 同时受向量长度影响
特点
- 不归一化时会受长度影响
- 在深度学习(attention)中非常常见
3. 曼哈顿距离(Manhattan Distance)
定义
也叫 L1 距离,表示“沿坐标轴逐步移动的距离”:
[ d(x,y) = \sum_{i=1}^{n} |x_i - y_i| ]
直觉解释
像在城市网格中走路(只能走横竖街道):
- 不走对角线
- 每一维独立累加差值
特点
- 对异常值不如欧氏距离敏感
- 在高维空间中比欧氏距离更稳定
4. 杰卡德相似度(Jaccard Similarity)
定义
用于集合或二值向量,衡量“交集 / 并集”:
[ J(A,B) = \frac{|A \cap B|}{|A \cup B|} ]
如果是二值向量:
[ J(x,y) = \frac{\text{共同为1的维度}}{\text{至少一个为1的维度}} ]
直觉解释
- 只关心“有没有”
- 不关心数值大小
特点
- 常用于文本(词集合)
- 推荐系统、标签匹配常见
- 忽略频率信息
总结对比
| 方法 | 类型 | 核心思想 | 是否受尺度影响 |
|---|---|---|---|
| 欧氏距离 | 距离 | 直线几何距离 | 是 |
| 点积 | 相似度 | 方向 + 规模 | 是 |
| 曼哈顿距离 | 距离 | 绝对差累加 | 是(较稳定) |
| 杰卡德 | 相似度 | 集合重合比例 | 否(只看0/1) |
一句话理解
- 欧氏距离:走“直线有多远”
- 曼哈顿距离:走“街区要走多少步”
- 点积:两个向量“朝不朝同一个方向用力”
- 杰卡德:两个集合“重叠比例有多高”
多维度条件组合检索
多维度条件组合检索是实现复杂查询需求的关键技术,能够将向量相似性计算与多个元数据条件结合起来,提供精细化的结果筛选。例如,在电商场景中,不仅需要基于用户输入的文本描述进行语义相似性计算,还需要同时考虑价格、品牌、评分等多个条件的约束。通过逻辑组合(如与、或、不等操作),可以灵活定义复杂查询条件。
基于元数据优先级的排序算法
基于元数据优先级的排序算法是一种综合利用多个维度数据进行结果排序的技术。其核心思想是为不同的元数据属性赋予权重,根据用户需求的优先级动态调整排序规则。例如,在商品检索场景中,可以根据用户更关注的价格、品牌或评分对结果进行综合排序。通过分配优先级权重,让语义相似性与元数据属性共同参与排序计算,最终输出符合用户偏好的排序结果。