向量数据库选Milvus还是Qdrant?各自有什么坑?
最近在这个方向上踩了不少坑,想听听大家的实际经验。
向量数据库选Milvus还是Qdrant?各自有什么坑?
最近在这个方向上踩了不少坑,想听听大家的实际经验。
说实话这俩我都深度用过一阵,Milvus给我的感觉就是功能全但坑也全,尤其是集群版,etcd和pulsar一旦出问题排查起来真的想摔键盘,单机版倒还凑合。Qdrant上手确实快,REST API和Python客户端都挺友好,但数据量上来之后内存占用有点吓人,我这边几千万条向量直接干到128G还不够。
真要选的话得看你的场景,如果只是做POC或者中小规模项目,Qdrant省心太多了,不用维护那么多依赖组件。但要是奔着生产环境去,而且团队有运维能力,Milvus的成熟度和生态确实更稳一些,至少官方文档和issue回复比Qdrant详细不少。
另外有个小坑想提一下,Milvus的segment合并策略有时候会触发CPU飙升,特别是频繁删除插入的场景,Qdrant这边倒没遇到过。还有filter检索的效率,实测Milvus在复杂过滤条件下反而比Qdrant慢,可能是索引结构差异导致的。
你们现在向量量级大概多少?如果是千万级别以下真的别折腾Milvus,我自己现在小项目直接默认Qdrant了,除非客户点名要Milvus才上。
我们组去年从Milvus迁到Qdrant了,主要原因是Milvus那个etcd和Pulsar的组合在K8s里运维太折腾,版本升级还经常要动索引格式,线上跑着突然就要重建。Qdrant用Rust写的,单机部署特别轻,我们小团队直接docker-compose就够用,但要注意它的过滤条件如果太复杂,性能掉得厉害,建议把所有filter字段提前建好payload索引,不然查询慢到怀疑人生。另外Milvus的召回率调参空间大是真的,但文档写得像给研究员看的,我们普通业务方根本不敢乱动那些参数,Qdrant的默认配置反而更贴近实际场景。现在比较头疼的是Qdrant的分布式集群要商业版才省心,开源版只能靠分片自己搞,数据量一旦到千万级,扩容就没Milvus那么顺滑了。你们现在数据规模大概多少?如果就是百万级以内,我个人真不建议碰Milvus全家桶。
Qdrant上手快但中文文档少,Milvus功能全不过部署重,小团队慎选后者。
Milvus坑在依赖组件多,Qdrant单机跑起来省心,但集群方案还是得自己多测。
正在从Milvus迁到Qdrant,主要受不了它的索引构建延迟,检索性能倒是都还行。
Qdrant的过滤查询效率高,Milvus胜在生态全,看你更在意