RAG系统搭完了,prompt写好了,embedding模型选好了,然后呢?
卡在向量库这一步了。
我见过太多人——上周有个朋友问我:"Milvus和Pinecone到底选哪个?"我说看你需求。他又问:"那到底哪个好?"我说看你预算。他急了:"你就告诉我选哪个!"
好吧,今天我把话说清楚。
Pinecone——云端SaaS,省心但贵
Pinecone是闭源SaaS,你不用部署,注册账号就能用。
优势:
坑:
贵。是真贵。
我去年搭了个原型,100万条768维向量,月费大概70。换成Milvus自建,同等规模一台4核8G的ECS就搞定了,月成本不到15。
还有一个——数据得传到美国服务器。如果你的业务涉及数据合规(比如国内金融、政务),Pinecone直接pass。
(说实话我一开始也觉得Pinecone很香,直到看到账单……)
适合: 原型验证、小团队不想招运维、数据无合规要求。
Milvus——国产开源,功能最全但学习曲线陡
Milvus是Zilliz(国内团队)开源的,CNCF毕业项目。国内用得多,文档中文齐全。
优势:
坑:
学习曲线——是真的陡。
你第一次部署Milvus,etcd + MinIO + Milvus三个组件docker-compose起来,配置文件看懵。我第一次部署花了大半天,还踩了etcd版本不兼容的坑。
而且Milvus的版本迭代太快了。2.3到2.4到2.5,API改了好几次。我项目里用的2.3 SDK,升级到2.5之后collection创建方式都变了。
⚠️ 踩坑提醒: Milvus 2.4+默认用Sparse+Dense混合检索,如果你之前的项目用纯Dense,升级后需要重建collection。别问我怎么知道的。
适合: 国内团队、需要私有化部署、数据量大(亿级以上)、有运维能力。
Qdrant——Rust写的,性能炸裂但生态小
Qdrant是这三个里我最意外的。Rust写的,性能确实猛。
优势:
坑:
生态小。这是最大的问题。
LangChain有集成,但文档不如Milvus详细。出了问题搜StackOverflow,中文资料更少——我上次搜"Qdrant 中文分词",有用的结果不超过3篇。
还有一个:社区版(开源)不支持分布式。你要扩到多节点,得买Qdrant Cloud或者自己魔改。
(懂的都懂,单机版性能再炸,数据量上去了也得考虑横向扩展。)
适合: 中小规模(1000万以内)、追求极致性能、英文项目为主。
Weaviate——老牌选手,模块化设计
Weaviate是德国团队做的,2026年了还在持续迭代。
优势:
坑:
重。
Weaviate是Java写的(不对,是Go写的,我记岔了——但部署体验确实重),启动慢,内存占用比Qdrant高不少。
国内社区几乎没人用。出了问题你得去GitHub Discussions或者Discord问,英文交流。
适合: 英文项目、需要混合检索、不想自己管理embedding。
选型决策表
维度 | Pinecone | Milvus | Qdrant | Weaviate |
|---|---|---|---|---|
部署方式 | SaaS | 自建/云托管 | 自建/云托管 | 自建/云托管 |
数据合规 | ❌ 数据出境 | ✅ 可私有化 | ✅ 可私有化 | ✅ 可私有化 |
运维成本 | 零 | 高 | 低 | 中 |
性能 | 中上 | 中上 | 高 | 中 |
生态集成 | 好 | 最好(国内) | 一般 | 好 |
学习曲线 | 低 | 高 | 中 | 中 |
价格(100万向量/月) | ~$70 | ~$15(ECS) | ~$10(ECS) | ~$20(ECS) |
适合规模 | 中小 | 大(亿级) | 中小 | 中大 |
如果是我,我选什么?
分三种情况:
情况1:你在国内做项目,数据不能出境。
选Milvus。没得选。Qdrant也行但生态太小,出问题没人帮你。
情况2:你做个原型/demo,赶紧上线。
选Pinecone。$70一个月买个省心,等用户量上来了再迁移。迁移成本没你想的那么大——向量数据导出来重新insert一遍就行了。
情况3:你认真做个长期项目,追求性价比。
我个人的选择是Qdrant。部署简单,性能好,单机扛得住几百万向量。生态小?自己踩坑自己写文档呗。
说真的,向量库选型没有标准答案。你的数据量、预算、团队能力、合规要求,每个变量都会改变结论。但有一点是确定的——别选了之后又纠结,先用起来,跑三个月再复盘。
你的RAG项目用的哪个向量库?踩过最大的坑是什么?评论区聊聊,我挨个看。
💡 一句话带走:国内私有化选Milvus,原型验证选Pinecone,追求性价比选Qdrant。