Cosine Similarity,即余弦相似度,又叫余弦相似性。是一个中学数学的概念,即用两个向量之间的夹角余弦值代表这两个向量之间的相似度。
Cosine Similarity虽然简单,但广泛应用在AI模型中,比如CLIP计算图像embedding和文本embedding之间的相似性等。

Python实现(Pytorch版本)
import torchdef norm(t):return t / t.norm(1, keepdim=True)def cos_sim(v1, v2):v1 = norm(v1)v2 = norm(v2)return v1 @ v2.t()a = torch.Tensor([[1, 2, 3, 88]]) # 1x4
b = torch.Tensor([[1, 2, 3, 11], [4, 5, 6, 7]]) # 2x4similarity = cos_sim(a, b) # 1x2
print(similarity)
# tensor([[0.2679, 0.1768]])
在代码实现中,通常先分别计算A⃗∣A∣\vec{A} \over{\vert{A}\vert}∣A∣A、B⃗∣B∣\vec{B} \over{\vert{B}\vert}∣B∣B,再将它们乘起来得到两个向量的余弦相似度。通过上面代码,我们可以计算出向量a和b中两个向量的余弦相似度分别为0.2679、0.1768。