在一个语义搜索和检索增强生成(RAG)正在重新定义的时代,支持这些进步的支柱往往被忽视:向量数据库。如果您涉足大型语言模型、RAG或任何利用语义搜索的平台,那么你来对地方了。
对于那些在这一领域探索的人,筛选并比较领先的向量数据库是必要的。选择一个向量数据库可能很困难,需要考虑可伸缩性、延迟、成本甚至合规性。
我在比较中包含了以下向量数据库:Pinecone、Weviate、Milvus、Qdrant、Chroma、Elasticsearch和PGvector。比较背后的数据来自ANN基准测试、每个向量数据库的文档和内部基准测试,以及深入挖掘的开源GitHub存储库中的信息。
Pinecone | Weaviate | Milvus | Qdrant | Chroma | Elasticsearch | PGvector | |
---|---|---|---|---|---|---|---|
是否开源 | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ |
自助托管 | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
云管理 | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✔️ |
用于向量构建 | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
开发者体验 | 👍👍👍 | 👍👍 | 👍👍 | 👍👍 | 👍👍 | 👍 | 👍 |
社区 | 社区页面和活动 | 8k☆ GitHub,4k Slack | 23k☆ GitHub,4k Slack | 13k☆ GitHub,3k Discord | 9k☆ GitHub,6k Discord | 23k Slack | 6k☆ GitHub |
每秒查询次数(使用nytimes-256-angular文本) | 150 *适用于p2,但可以添加更多Pod | 791 | 2406 | 326 | ? | 700-100 *来自各种报告 | 141 |
延迟,毫秒(召回/百分位95(毫秒),nytimes-256-angular) | 1 *批量搜索,0.99召回,200k SBERT | 2 | 1 | 4 | ? | ? | 8 |
支持的索引类型 | ? | HNSW | 多个(总共11个) | HNSW | HNSW | HNSW | HNSW/IVFFlat |
混合搜索(即标量过滤) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
磁盘索引支持 | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ |
基于角色的访问控制 | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ |
动态段位置与静态数据分片 | ? | 静态分片 | 动态段位置 | 静态分片 | 动态段位置 | 静态分片 | - |
免费托管层 | ✅ | ✅ | ✅ | (免费自托管) | (免费自托管) | (免费自托管) | (各不相同) |
定价(50k向量@1536) | $70 | 从$25开始 | 从$65开始 | 估计$9 | 各不相同 | $95 | 各不相同 |
定价(20M向量,20M请求@768) | $227(高性能为$2074) | $1536 | 从$309开始(高性能为$2291) | 从$281开始(高性能为$820) | 各不相同 | 估计$1225 | 各不相同 |
总结
在向量数据库领域中,不同的需求有着多样的选择。比较表清晰地呈现了情况,但以下是一个简明扼要的总结,以帮助您做出决定:
-
开源和托管云:如果您倾向于开源解决方案,Weviate、Milvus和Chroma是顶尖的竞争者。尽管不是开源的,但 Pinecone 凭借其开发者体验和强大的完全托管解决方案脱颖而出。
-
性能:就每秒查询量而言,Milvus领先,紧随其后的是Weviate和Qdrant。然而,在延迟方面,Pinecone和Milvus都提供了令人印象深刻的低于2毫秒的结果。如果为Pinecone添加了多个Pod,那么可以达到更高的QPS。
-
社区实力:Milvus拥有最大的社区存在,其次是Weviate和Elasticsearch。强大的社区往往意味着更好的支持、增强和错误修复。
-
可扩展性、高级功能和安全性:对于许多企业应用程序至关重要的功能,如基于角色的访问控制,在Pinecone、Milvus和Elasticsearch中都有。在扩展方面,Milvus和Chroma提供了动态段放置功能,使它们适用于不断发展的数据集。如果您需要支持多种索引类型的数据库,Milvus支持11种不同类型的索引,这是无与伦比的。虽然混合搜索在各个数据库中都得到了很好的支持,但在磁盘索引支持方面,Elasticsearch确实有所不足。
-
定价:对于初创企业或预算有限的项目来说,Qdrant为50k向量提供的估价约为9美元,是无法匹敌的。另一方面,对于需要高性能的大型项目来说,Pinecone和Milvus提供了具有竞争力的定价层次。
总之,对于向量数据库来说,并不存在一种适合所有情况的解决方案。理想的选择取决于具体的项目需求、预算限制和个人偏好。本指南提供了一个综合的视角,希望能简化开发者的决策过程。我的选择?我正在野外测试Pinecone和Milvus,主要是因为它们的高性能、Milvus强大的社区和灵活的价格。
技术交流
技术要学会分享、交流,不建议闭门造车。一个人走的很快、一堆人可以走的更远。
建立了大模型技术交流群, 大模型学习资料、数据代码、技术交流提升, 均可加知识星球交流群获取,群友已超过2000人,添加时切记的备注方式为:来源+兴趣方向,方便找到志同道合的朋友。
方式①、微信搜索公众号:机器学习社区,后台回复:技术交流
方式②、添加微信号:mlc2060,备注:技术交流
用通俗易懂的方式讲解系列
- 用通俗易懂的方式讲解:不用再找了,这是大模型最全的面试题库
- 用通俗易懂的方式讲解:这是我见过的最适合大模型小白的 PyTorch 中文课程
- 用通俗易懂的方式讲解:一文讲透最热的大模型开发框架 LangChain
- 用通俗易懂的方式讲解:基于 LangChain + ChatGLM搭建知识本地库
- 用通俗易懂的方式讲解:基于大模型的知识问答系统全面总结
- 用通俗易懂的方式讲解:ChatGLM3 基础模型多轮对话微调)
- 用通俗易懂的方式讲解:最火的大模型训练框架 DeepSpeed 详解来了
- 用通俗易懂的方式讲解:这应该是最全的大模型训练与微调关键技术梳理
- 用通俗易懂的方式讲解:Stable Diffusion 微调及推理优化实践指南
- 用通俗易懂的方式讲解:大模型训练过程概述
- 用通俗易懂的方式讲解:专补大模型短板的RAG
- 用通俗易懂的方式讲解:大模型LLM Agent在 Text2SQL 应用上的实践
- 用通俗易懂的方式讲解:大模型 LLM RAG在 Text2SQL 上的应用实践
- 用通俗易懂的方式讲解:大模型微调方法总结
- 用通俗易懂的方式讲解:涨知识了,这篇大模型 LangChain 框架与使用示例太棒了
- 用通俗易懂的方式讲解:掌握大模型这些优化技术,优雅地进行大模型的训练和推理!