Ch13 RAG

相似度计算 (Similarity Metrics)

概述

相似度计算(Similarity Metrics)是机器学习和信息检索中的基础工具,用于量化两个向量、集合或分布之间的相似程度或距离。在向量检索、聚类、推荐系统和 RAG 等应用中,相似度度量的选择直接影响结果质量。不同的度量方法基于不同的数学假设,适用于不同的数据分布和应用场景。

距离度量 vs 相似度度量

  • 距离度量 (Distance):值越小越相似,满足非负性、对称性、三角不等式
  • 相似度度量 (Similarity):值越大越相似,通常归一化到 [-1, 1] 或 [0, 1]

主要度量方法详解

1. 欧氏距离 (Euclidean Distance)

最直观的距离度量,对应 L2 范数:

  • 优点:直观,满足度量空间所有公理
  • 缺点:受量纲影响大,高维空间下距离趋于相似(维度灾难)
  • 适用:低维数据、K-Means、KNN

2. 曼哈顿距离 (Manhattan Distance)

对应 L1 范数:

  • 优点:对异常值更鲁棒(不平方)
  • 缺点:各维度独立计算,忽略相关性
  • 适用:稀疏向量、高维离散数据

3. 余弦相似度 (Cosine Similarity)

衡量向量方向的相似性,忽略幅度:

  • 优点:不受向量长度影响,适合文本和 Embedding
  • 缺点:只考虑方向,不考虑幅度
  • 适用:文本相似度、向量检索、RAG、推荐系统

4. 点积相似度 (Dot Product)

未归一化的余弦相似度:

  • 优点:计算最简单
  • 缺点:受向量长度影响大
  • 适用:已归一化 Embedding 的快速检索

5. 杰卡德相似度 (Jaccard Similarity)

用于集合/布尔向量的相似度:

  • 优点:适合集合/布尔数据
  • 缺点:不适用于连续值
  • 适用:集合比较、文本去重、推荐系统

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

衡量线性相关程度:

  • 优点:对平移和缩放不敏感
  • 缺点:只衡量线性关系
  • 适用:协同过滤、特征选择

各度量方法对比

度量方法公式类型值域对称性三角不等式向量长度敏感高维适用性典型应用
欧氏距离距离[0, +)是是是差K-Means, KNN
曼哈顿距离距离[0, +)是是是中稀疏数据
余弦相似度相似度[-1, 1]是否否好文本检索、向量搜索
点积相似度(-, +)是否是好已归一化向量检索
杰卡德相似度相似度[0, 1]是否--集合比较
皮尔逊相关系数相似度[-1, 1]是否否中协同过滤
马氏距离距离[0, +)是是否(考虑协方差)好异常检测
切比雪夫距离距离[0, +)是是是差棋盘/网格问题
闵可夫斯基距离距离[0, +)是是是差泛化形式

选择指南

按数据类型

数据类型推荐度量原因
文本 Embedding(BERT, SBERT)余弦相似度向量方向代表语义
L2 归一化后的 Embedding点积(等价于余弦)更快的计算
图像特征向量欧氏距离 / 余弦相似度取决于特征提取方式
推荐系统隐向量点积 / 余弦相似度标准做法
稀疏 one-hot / TF-IDF余弦相似度 / 杰卡德稀疏向量适用
异常检测马氏距离 / 欧氏距离需考虑特征分布
时间序列DTW (动态时间规整)处理时间偏移

在 RAG 中的应用

RAG 系统的检索阶段通常使用余弦相似度或点积来匹配查询向量与文档向量:

# 典型 RAG 检索的相似度计算
similarity = cosine_similarity(query_embedding, document_embedding)
# 或使用点积(如果向量已 L2 归一化)
similarity = dot_product(query_embedding, document_embedding)

2026 年趋势

  1. 可学习相似度:使用 MLP 或注意力机制学习输入自适应的相似度函数
  2. 多向量相似度:ColBERT 式的 token-level 交互,介于单向量和 Cross-Encoder 之间
  3. 非线性相似度:核方法在向量检索中的应用
  4. 混合度量:组合多种相似度度量的加权结果

相关笔记

来源

关联9

知识图谱

局部图谱 · 点节点跳转