首页/AI/RAG 与向量库速查/余弦相似度(Cosine Similarity)
Embedding 与检索50 条

余弦相似度(Cosine Similarity)

余弦相似度衡量两个向量的方向夹角,取值区间约 [-1, 1],对向量长度不敏感;文本检索常用它,很多向量库以 1 减余弦作为距离或直接返回相似度。

RAG 与向量库速查AI更新于 2026-10-12

手写余弦相似度

手写余弦相似度
import numpy as np

def cosine(a, b):
    a, b = np.asarray(a), np.asarray(b)
    return float(a @ b / (np.linalg.norm(a) * np.linalg.norm(b)))

print(round(cosine([0.3, 0.4, 0.5], [0.1, 0.9, 0.2]), 4))
向量已归一化时,余弦相似度等于内积,可直接用点积实现,省一次除法。

易错点

  • 文本向量的余弦值常集中在较窄区间(如 0.6-0.95),不要拍脑袋定 0.9 为“相关”阈值,要在自有数据上校准
  • 余弦只看方向,话题接近但不回答问题的片段同样高分,需要重排与忠实度约束兜底

数据来源与参考

  • scikit-learn 文档(cosine_similarity)
  • Qdrant 官方文档(Distance 度量)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌