一句话定义:余弦相似度(cosine similarity)是衡量两个向量方向接近程度的指标,等于它们在多维空间夹角的余弦值,取值通常在 -1 到 1 之间,越接近 1 方向越一致,文本也就越“像”。
它怎么工作:把文本变成数字向量。比如“猫爱吃鱼”和“猫咪喜欢小鱼”,经过 embedding(嵌入/向量化)后变成两串数字。每个维度可以理解成一种潜在语义特征。把这些数字想象成从原点出发的箭头。余弦相似度不看箭头多长,只看它们指向是否一致。公式是两向量点积除以各自长度乘积。
打个生活化的比方:两个人从同一地点出发,一个走得远,一个走得近,但只要都朝东北方向,夹角就小,方向相似;一个朝东北,一个朝西南,哪怕都走了一公里,也不像。向量长度常和文本长度、词频、表达强度有关,而方向更多承载主题和语义组合。所以一句长、一句短,只要意思接近,余弦相似度仍可能很高。
和相邻概念的区别:
| 指标 | 看什么 | 对长度敏感 | 常见用途 |
|---|---|---|---|
| 余弦相似度 | 向量夹角方向 | 不敏感 | 文本语义检索、推荐、去重 |
| 欧氏距离(Euclidean distance) | 空间中两点直线距离 | 敏感 | 聚类、图像特征比较 |
| 点积(dot product) | 方向 + 长度 | 敏感 | 部分模型的内积检索 |
欧氏距离看两个箭头端点离得近不近,容易受模长影响;点积既看方向也看长度,长文档可能因为向量更长而得分更高。余弦相似度做了归一化,更公平地比较“方向”。
实际意义:搜索、RAG(AI 词典:检索增强生成">检索增强生成)、推荐、聚类、去重,背后常在做“找方向相近的向量”。对从业者来说,要注意向量最好来自同一模型和同一预处理流程;长文本截断或分段会改变结果;阈值要按业务场景调,别迷信某个固定值。对普通人来说,推荐系统说“和你像”,往往就是在比夹角。不同工具的具体实现和默认行为可能有差异,以官方页面为准。
