Cosine Similarity
为什么需要 Cosine Similarity
Embedding 把文本变成了向量,但你拿到两个向量后怎么判断它们"有多像"?
比如向量 A = [0.8, 0.2, 0.5],向量 B = [0.7, 0.3, 0.4],这算像还是不像?直接比大小会很麻烦——不同维度的数值量级可能差很远。
Cosine Similarity 就是解决"怎么量化向量之间的相似度"这个问题的。
什么是 Cosine Similarity
一句话定义:Cosine Similarity(余弦相似度)是衡量两个向量"方向有多接近"的指标,值越接近 1 表示越相似。
它为什么叫"余弦"?因为它的计算方式等价于计算两个向量夹角的余弦值。
类比:两个向量就像两个指向不同方向的箭头,余弦相似度看的是这两个箭头有多"指向同一个方向":
- 完全指向同一个方向 → 余弦值 = 1
- 垂直 → 余弦值 = 0
- 完全相反 → 余弦值 = -1
在 Embedding 场景里,"指向同一个方向" = "语义相近"。
怎么做:什么时候用 Cosine Similarity
适合用 Cosine Similarity 的场景:
- 语义搜索排序:按相似度高低返回文档
- 相似文本匹配:找重复内容、近似问题、相似商品
- 向量聚类:按语义相似程度分组
不适合用 Cosine Similarity 的场景:
- 精确 ID、订单号、人名匹配——这些更适合关键词检索
- 向量不是用来表示语义的时候(比如用于其他目的的向量)
常见坑:
- 相似度高不等于答案对:只代表语义接近,内容本身可能有问题
- 分数差一点有关系:在排序边界附近,微小差异也可能影响 Top 结果
记住这一句:Cosine Similarity 衡量的是向量"方向"有多接近,而不是"大小"有多接近——在 Embedding 场景里,方向接近 = 语义相近。
相关词条:Embedding · Vector Database
标签
余弦相似度cosine similarity向量相似度语义相似度