余弦距离、欧式距离与向量搜索

发布于 2023-01-28  647 次阅读


向量相似性度量

余弦相似性

给定两个属性向量, ,其余弦相似性 由点积和向量长度给出

给出的相似性范围从-1到1。-1意味着两个向量指向的方向正好截然相反,1表示它们的指向是完全相同的,0通常表示它们之间是独立的,而在这之间的值则表示中间的相似性或相异性。

其结果是与向量的长度无关的,余弦相似度主要度量两个向量之间的方向差异。

欧式距离

给定两个属性向量, ,其欧式距离为各个分量之间的距离求和开方

归一化

即是通过对向量的每一个值都除以向量的平方和的开方来将向量转为单位向量(模等于1)

归一化后余弦相似度与欧式距离

若向量都已进行归一化,即 都为单位向量,则

则此时A与B的余弦相似度为点积

A与B的欧式距离的平方(由于欧式距离非负所以平方不改变单调性)展开

由于欧式距离越小越相似(余弦相似度越大越相似),取欧式距离平方的相反数

此时可以看出欧式距离的平方的相反数与余弦距离同单调性,则欧式距离的相反数与余弦距离在向量都是单位向量时有同样的单调性。

而在归一化后,余弦相似度就变成了简单的点积操作(个人觉得这也是大部分双塔使用余弦相似度的原因,点积运算速度快)。

向量检索

Faiss中的索引对于距离度量方法没有特别的要求,使用milvus时最好将向量归一化之后使用点积来等价于余弦相似度。


面向ACG编程