向量数据库基本功能向量检索
向量相似度算法学习
本文不对算法细节描述,因为实力不允许,哈哈哈
主要学习算法实现的功能,应用场景,各自的优缺点
余弦距离
余弦距离测量两个向量之间的角度的余弦值,常用于归一化或凸集。
- 优点:主要考虑向量的方向,这使其非常适合于高维空间,例如文本比较,因为在该场景文档的长度不那么重要。
- 缺点:不适用于需要匹配向量维度的场景,例如在根据像素密度比较图像的嵌入时。如果数据没有形成凸集,可能无法提供准确的相似性度量。
余弦距离适用于文档分类、语义搜索、推荐系统以及任何涉及高维度和标准化数据的其他任务。在检索信息时,余弦距离通常用于衡量查询内容和文档向量之间的相似度,忽略它们的长度,但专注于语义含义。
欧氏距离 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是支持向量算法最多的数据库。这也是他应用场景更多的地方。