向量相似度算法种类

338 阅读3分钟

向量数据库基本功能向量检索

6bd249f37fb9ef289eb622c6a98c8224.jpeg

向量相似度算法学习

本文不对算法细节描述,因为实力不允许,哈哈哈

主要学习算法实现的功能,应用场景,各自的优缺点

余弦距离

余弦距离测量两个向量之间的角度的余弦值,常用于归一化或凸集。

  • 优点:主要考虑向量的方向,这使其非常适合于高维空间,例如文本比较,因为在该场景文档的长度不那么重要。
  • 缺点:不适用于需要匹配向量维度的场景,例如在根据像素密度比较图像的嵌入时。如果数据没有形成凸集,可能无法提供准确的相似性度量。

余弦距离适用于文档分类、语义搜索、推荐系统以及任何涉及高维度和标准化数据的其他任务。在检索信息时,余弦距离通常用于衡量查询内容和文档向量之间的相似度,忽略它们的长度,但专注于语义含义。

欧氏距离 L2

欧氏距离计算多维空间中两个向量之间的直线距离,也叫二范数。

  • 优点:直观、易于计算、对向量的大小和方向都敏感。
  • 缺点:由于“维度灾难”,可能在高维空间中表现不佳。

适用于图像识别、语音识别、手写分析等场景。

内积

内积计算向量对应分量乘积的和,也叫n范数。

  • 优点:计算速度快,能反映向量的大小和方向。
  • 缺点: 除了对向量的方向敏感,还对向量的大小敏感

内积最经典的应用在推荐系统领域。在推荐系统中,内积可用于确定用户向量和物品向量之间的相似度,帮助预测用户对某物品的兴趣。内积适用于推荐系统、协同过滤、矩阵分解。

L2平方距离

两个向量之间的欧几里得距离的平方。

  • 优点:惩罚向量元素之间的大差异,在某些情况可能有用。
  • 缺点: 平方操作可能会扭曲距离,并且对异常值敏感。

L2平方距离特别适合用于个别维度的差异问题,比如在图像处理中,比较两张图片的不同。

汉明距离

测量每个维度上向量之间的差异数量。

  • 优点:适用于比较二进制或分类数据。
  • 缺点: 不适用与连续或者数值型数据

适用场景也比较特殊,比如错误检测与纠正(分类型数据);测量两条DNA链之间的遗传距离

曼哈顿距离 L1

测量两个向量维度沿着直角轴之间的距离,也叫一范数。

  • 优点: 比欧几里得距离更能抵抗异常值。
  • 缺点:在几何意义上不如欧式距离直观。

适用于计算棋盘距离、物流规划中的最短路径问题。

向量数据库支持情况

算法描述支持的数据库
余弦距离测量两个向量之间角度的余弦值pgvector, Pinecone, Weaviate, Qdrant, Milvus, Vespa
欧几里得距离(L2)在多维空间中计算两个向量之间的直线距离pgvector, Pinecone, Qdrant, Milvus, Vespa
内积(点积)计算向量对应分量的乘积之和pgvector, Pinecone, Weaviate, Qdrant, Milvus
L2平方距离两个向量之间的欧几里得距离的平方Weaviate
汉明距离测量每个维度上向量之间的差异数Weaviate, Milvus, Vespa
曼哈顿距离沿直角轴测量两个向量维度之间的距离Weaviate

综上所述,Weaviate是支持向量算法最多的数据库。这也是他应用场景更多的地方。