Zubnet AI学习Wiki › 余弦相似度
基础

余弦相似度

别名:余弦距离、向量相似度
一种基于两个向量之间夹角来衡量相似性的指标,忽略其大小。余弦相似度为1表示向量指向同一方向(含义相同)。0表示垂直(不相关)。-1表示方向相反。它是语义搜索、RAG和推荐系统中比较文本嵌入的标准相似性度量。

为什么重要

每次进行语义搜索、使用RAG或比较嵌入时,余弦相似度(很可能)就是决定什么是"相似"的度量标准。理解它有助于你调试检索质量、在余弦和替代方案(点积、欧几里得距离)之间做出选择,以及理解为什么某些搜索会遗漏明显的匹配项。

深度解析

公式:cos(θ) = (A · B) / (||A|| × ||B||),其中A · B是点积,||A||和||B||是向量的模(长度)。通过除以模,余弦相似度仅衡量方向——向量[1, 2, 3]与[2, 4, 6]的余弦相似度相同,因为它们指向同一方向。这种归一化是余弦在嵌入中有效的原因:方向编码含义,而大小可能因文本长度或模型特性而变化。

余弦 vs. 点积

如果嵌入已经归一化为单位长度(模为1),余弦相似度等于点积——而点积计算更快(无需除法)。大多数嵌入模型正是因此输出归一化向量。使用向量数据库时,请检查你的嵌入是否已归一化:如果是,使用点积(更快)。如果不是,使用余弦相似度(无论是否归一化都正确)。

局限性

余弦相似度平等对待所有维度,但某些嵌入维度可能比其他维度更重要。它还衡量整体方向相似性,可能遗漏细微差异。两个关于"Python编程"和"Python蛇"的句子可能具有中等偏高的余弦相似度,因为它们共享"Python"概念。更复杂的相似性度量(学习指标、交叉编码器重排序)可以以更高的计算成本捕获更精细的区别。

相关概念

← 所有术语
← 优化 偏见 →