当前位置:   article > 正文

向量搜索引擎对比_向量检索引擎

向量检索引擎

评价维度

性能对比:

ann-benchmarks

大数据集

NIPS在21年的比赛:Big ANN Benchmarks。数据特点:6个数据集,点规模都在1B+,向量维度在100-256;环境:QPS = 1w/1k5/2k;指标:recall@10

baseline:

TrackAlgorithmSearch MachineTarget Queries/secBIGANN-1BSSN++-1BTuring-ANNS-1BSPACEV-1BDEEP-1BText-to-Image-1B
Track 1FAISS-CPUAzure F32s_v2 32vCPUs + 64GB RAM100000.6340.7530.7030.7280.6500.069
Track 2DiskANNAzure L8s_v2 8vCPUs + 64GB RAM + 1TB SSD15000.9490.162740.9360.9010.9370.488
Track 3FAISS-GPUNVIDIA V100 + 700GB RAM20000.927TBA0.9100.8500.9420.86

获奖者:big-ann-benchmarks

结论:有提升,但基本在一个数量级上:1万QPS的时候,recall@10都在70%左右。

文本表征能力榜单

MTEB Leaderboard - a Hugging Face Space by mteb

结论:合理的文本表征维度:768

高星项目

1、Annoy

Annoy - Github,1.1w star

自己总结的特性:

1、维度低(<100)或者维度很高(>1000)时,表现比较好

2、内存占用低;多线程时可以共享内存

3、支持在硬盘上建立索引

4、原生的python支持

支持功能:几乎只支持写入、写出和查找

2、milvus

milvus github,1.9w star(涨得很快)

自己总结的特性:

1、流批一体;针对数据科学工作流,有大量的API,有现成的管理页面

2、在个人PC、集群、云上的体验一致;多平台通用,语言支持丰富(java, python, c++,go)

3、支持混合搜索:Hybrid Search

混合搜索:向量相似搜索 + 运算逻辑。例如:布尔运算(基于白名单的ID过滤、属性的比较、and or)、数学运算(+-*/**%)

4、在贝壳找房、小米等厂有实践

官方测试报告:Milvus 2.1 Benchmark Test Report

1、速度测试:CPU环境下,基于10亿条128维的数据, 在官方提供的资源配置下 , 召回1条数据,可以控制在5ms以内,召回 1000条数据,可以控制在30ms以内;

2、影响性能:频繁删除会影响性能(需要保持一致性)

3、elastic search

elastic search,6.4w star(集成了HNSW算法)

部署方案:open search

主要特点:

1、支持faiss中的hnsw算法

2、支持Boolean filter, Lucene filter

(工程反馈es的knn插件经常卡死)

4、faiss

faiss,2.2w star

主要特点:

1、支持 c++ 与 python

2、支持精确检索与模糊搜索

其他

京东的vearch:vearch,1.6k star(没什么特点)

Google的ScaNN:scann,2.9w star,(特点:集成了tensorflow serving,资源消耗大)

对比表格

支持内嵌模型内存消耗/延时支持类sql查询
milvus优秀支持过滤
chroma支持langchain单机,轻量化支持过滤
pineconeXX支持过滤
faiss不支持优秀支持过滤

pinecone:Pinecone,不开源

选择建议

milvus:功能多,支持语言多,分布式支持也不错;

潜在风险:查询性能可能达不到官方文档中的那样。

算法原理

树模型

1、KDTree

对每一维做二分,构成二叉树

2、BallTree

在一个超球面上划分,而不是矩形区域

3、Annoy(Aproximate nearest neighbor oh yeah)

也是树模型每次分叉点都是k=2的kmeans

代码实现的逻辑:随机投影到一个空间,再把空间一分为二。

图模型

1、HNSW(Hierarchcal Navigable Small World graphs)

Step1:建立有“高速公路机制的图”

Step2:从随机点查找,不断接近query点,直到比邻居点都接近query

HNSW - Github

能落地的

annoy、hnsw是可以在实际业务中落地的算法,其中bert/sentence-bert+hnsw的组合会有不错的召回效果。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/610194
推荐阅读
相关标签
  

闽ICP备14008679号