道家人 发表于 2024-9-28 21:04:48

个人随想-向量数据库,你到底应该选择谁?

https://img-blog.csdnimg.cn/img_convert/53daa9f2d9a4b4032e919176dae1d1d6.png
随着大模型的新起,vectorstore这1、2年也非常的火。从以前只能用chroma到现在几十种向量数据库,选都选不外来。
以我打仗过的许多公司来说,他们去选择向量数据库的时候,许多都和迷茫,不知道应该选择哪个向量数据库,甚至也不知道市面上有哪些向量数据库,甚至许多公司就随便选了一个差不多的,先用起来再说。
今天,我就抛砖引玉,以我对向量数据库的明白,来为向量数据库选型做一个对比和介绍,各人也可以聊聊你们现在用的是哪款向量数据库。
这里先不看云厂商的vectorstore,由于许多公司由于应用都在阿里云、腾讯云或者其他的云厂商,为了所谓的兼容或者减少运维成本,就直接选了dashvector或者其他的云向量数据库,我们仅来谈谈非云厂商的向量数据库。
同时我们再排除非专业做向量数据库的,比如redis,neo4j,cassandra,solr,clickhouse,elasticsearch,mongodb atlas。毕竟这些存储,不是用来专业做vectorstore的。
那么剩下来,在国内能耳熟能详的,我以为有以下几个。

[*]pinecone
[*]pgvector
[*]qdrant
[*]milvus
[*]weaviate
[*]chroma
以上排名,不分先后,文章末了,我们根据我的项目经验,给各人稍微介绍一下优劣。
vectorstore选好了,接下来,就要看看从哪些维度来对比:
我们就从以下角度来吧:
1、base
1.1 oss : 是否开源,用户是否可以私有化部署
1.2 License: 采用什么license
1.3 DevLang:开发语言用的什么
1.4 VSS Lanuch: 第一个relase版本的发布时间
2、Search
2.1 Filters:过滤的意思是,在查询的时候,是否可以根据metadata进行过滤。比如各人都会的,在我们的rag高级实战课中介绍过的self-query,就是当用户的标题过来后,我们可以先通过filters过滤掉无用的document,从而到达很好的效果。特殊是范围查询的时候,比如一个电影推荐的vectorstore,比如,用户如果问,香港的动作电影。这个时候,filters可以直接按照metadata按照地区和电影范例进行过滤。所以这个filters,一样平常的vectore,都应该支持。
2.2 Hybrid Search: hybrid search的意思是,我可以通过关键词keyword+向量搜索vector search一起进行搜索,这个在高级的rag中也常常使用,特殊是使用RRF获取更多rag的相干结果。比如在电商中,可以先搜索关键词,搜索出来的结果后,再通过品牌,价格区间,评分进行细分,与lucene类似,如果各人以前对搜索有肯定研究的话,就可以知道,这个相当于搜索结果再分组,类似与lucene、solr等搜索引擎。
2.3 facets: 与前面说的filters类似,facets也是用来过滤结果的。只是,filters是在查询前过滤,减少搜索范围。而facets用于查询结果出来以后,进一步细分或者分组。
2.4 Geo search :就是地理位置坐标的支持,从而可以快速的盘算出多个位置之间的间隔和联系。
2.5 Multi-vector:为了实现多视角查询、多模态查询、分层查询、混合语义查询,vectorstore需要支持multi-vector功能。
2.6 sparse: 有的时候,用户已经有特定需求或者已经有了现成的稀疏向量,而不需要依靠vectorstore或体系内置的算法来天生vector。.
2.7 BM25: 是否内置bm25
2.8 full-text : 是否内置全文检索,类似lucene、solr等
3、Models
3.1 Text Model: 是否内置或者插件支持类似sentence-transformers或者 huggingface等文本embedding模型。
3.2 Image Model: 是否支持图像embedding,比如CLIP.
3.3 Struct Model:是否支持struct model,比如user click,graph等。
4、Apis
4.1 langchain :是否支持langchain
4.3 llamaindex: 是否支持llamaindex
4.4 rag: 是否支持rag的全部高级功能
4.5 Recsys: 是否内置推荐体系等功能
5、ops
5.1 Managed: 是否提供云端管理
5.2 Pricing: 是否提供收费服务
5.3 in-process:应用步伐级别的
5.4 Multi renant:是否支持多租户
5.5 disk index:是否支持硬盘存储index
5.6 ephemeral index: 在没有部署的情况下, 是否可用,比如Memory的支持。
5.7 sharding:是否支持sharding 负载平衡
5.8 document维度大小:最大支持的vector dims
5.9 int8 quantization:是否支持int8量化
5.10 binary quantization: 是否支持binary量化
5.11 index type: index的范例,比如:flat,flat-bq,hns,freshdiskann等。
接下来,我们2个2个比力一下:
https://img-blog.csdnimg.cn/img_convert/179a94acd255c4d5d94350897cb04023.png
https://img-blog.csdnimg.cn/img_convert/d8c9e308d3789a9952aa40ac08e42a68.png
https://img-blog.csdnimg.cn/img_convert/0285e2899cfb7a49ab2cdef9a53cbfa9.png
https://img-blog.csdnimg.cn/img_convert/8d2eefdfe8ac9a7e6eb465465867e735.png
https://img-blog.csdnimg.cn/img_convert/44b7dd9018503cd443bf1ef8cb79aef0.png
https://img-blog.csdnimg.cn/img_convert/bbd9a2b694092ffc6e4d92dd27a91496.png
各人可以根据上面的截图,和我上面的指标介绍,按照自己的业务体系对vectorstore的功能和部署方式,来选择您以为最适合你们的vectorstore。
各人在选择向量数据库的时候,照旧需要按照自己的需求来。看看你们的业务是否需要vectorstor的一些高级功能,比如:filter,hybrid search,facets,multi-vector,sparse,bm25等等。
别的,也是特殊关键的一点,就是你的数据是否有严格的合规和安全需求,是否答应存储在云上。固然存储在云上的长处许多,但是如果你们团队对数据资产十分的看中,您也可以选择类似qdrant的vectorstore,自有存储,自有维护。
照旧那句话,各人在做向量数据库选型的时候,肯定要多对比几个产物,同时肯定要清楚公司的业务,到底需要vector提供什么样的能力,在来进行对比。
整个全部向量数据库的对比表格,如果您需要的话,私聊我,我把地点发给您。
关注我,每天带你开发一个AI应用,每周二四六直播,欢迎多多交流。
https://img-blog.csdnimg.cn/img_convert/b5f04c6f6526a9dd03276805452743d2.png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 个人随想-向量数据库,你到底应该选择谁?