赞
踩
性能对比:
大数据集
NIPS在21年的比赛:Big ANN Benchmarks。数据特点:6个数据集,点规模都在1B+,向量维度在100-256;环境:QPS = 1w/1k5/2k;指标:recall@10
baseline:
Track | Algorithm | Search Machine | Target Queries/sec | BIGANN-1B | SSN++-1B | Turing-ANNS-1B | SPACEV-1B | DEEP-1B | Text-to-Image-1B |
---|---|---|---|---|---|---|---|---|---|
Track 1 | FAISS-CPU | Azure F32s_v2 32vCPUs + 64GB RAM | 10000 | 0.634 | 0.753 | 0.703 | 0.728 | 0.650 | 0.069 |
Track 2 | DiskANN | Azure L8s_v2 8vCPUs + 64GB RAM + 1TB SSD | 1500 | 0.949 | 0.16274 | 0.936 | 0.901 | 0.937 | 0.488 |
Track 3 | FAISS-GPU | NVIDIA V100 + 700GB RAM | 2000 | 0.927 | TBA | 0.910 | 0.850 | 0.942 | 0.86 |
结论:有提升,但基本在一个数量级上: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 | 单机,轻量化 | 支持过滤 |
pinecone | X | X | 支持过滤 |
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
annoy、hnsw是可以在实际业务中落地的算法,其中bert/sentence-bert+hnsw的组合会有不错的召回效果。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。