1. 向量检索中的距离度量基础
在信息检索和机器学习领域,向量检索已经成为处理高维数据的核心技术。当我们把文本、图像或其他类型的数据表示为向量后,如何衡量这些向量之间的相似性就成了关键问题。距离度量方法的选择直接影响着检索结果的准确性和实用性。
我处理过多个实际项目,发现距离度量的选择往往被开发者忽视,但实际上它对系统性能的影响可能比模型架构的选择还要显著。常见的三种距离度量方式——L2距离(欧氏距离)、余弦相似度和点积(dot product)各有特点,适用于不同场景。
重要提示:距离度量的选择不是简单的技术选型问题,而是需要结合数据分布、业务场景和性能要求综合考虑的决策。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 三种核心距离度量原理剖析
2.1 L2距离(欧氏距离)
L2距离是最直观的距离度量方式,计算两个向量在欧几里得空间中的直线距离。公式为:
code复制L2(a,b) = √Σ(a_i - b_i)²
在实际项目中,我发现L2距离特别适合:
- 物理空间中的真实距离计算(如地理位置)
- 向量各维度具有相同量纲和可比性的场景
- 当绝对距离比方向差异更重要时
但要注意,L2距离对向量尺度敏感。在图像检索项目中,我们曾遇到因为图片亮度差异导致L2距离失效的情况——两张内容相同但亮度不同的图片,其像素级向量可能具有很大的L2距离。
2.2 余弦相似度
余弦相似度测量的是两个向量之间的夹角余弦值,计算公式为:
code复制cos(a,b) = (a·b) / (||a|| * ||b||)
我的经验表明,余弦相似度在以下场景表现优异:
- 文本相似度计算(TF-IDF或词向量)
- 忽略向量长度,只关注方向相似性的情况
- 高维稀疏数据(如用户行为向量)
在电商推荐系统项目中,使用余弦相似度计算用户兴趣向量的效果比L2距离提升了23%的点击率。因为它更关注用户兴趣方向的匹配,而不受用户活跃度(向量长度)的影响。
2.3 点积(Dot Product)
点积是最简单的相似度计算方式:
code复制dot(a,b) = Σa_i * b_i
虽然简单,但在特定场景下非常有效:
- 当向量已经归一化时,等同于余弦相似度
- 在神经网络最后一层常用作相似度评分
- 计算效率最高,适合大规模实时检索
在新闻推荐系统的
