最近在搞一个RAG小项目,用bge-m3抽了大概80万条文本向量,之前图省事直接怼进了Elasticsearch,结果召回率一塌糊涂,TopK调到50还是经常漏掉语义相近的句子。现在想正经换个专用向量库,纠结Milvus和Qdrant。看文档感觉Milvus功能全但部署重,Qdrant轻量但怕后期数据量涨了扛不住。有没有大佬实际生产用过?主要关心两点:一是过滤+向量混合检索的延迟,二是10亿级数据下的稳定性。另外,有没有必要为了这个专门上K8s?先谢过各位了。
向量数据库选型求指路:Milvus和Qdrant到底该上哪个?
全部回复
共 45 条80万数据Qdrant完全够用,混合检索延迟很低,上K8s没必要,单机加SSD稳得很。
80万条数据其实两个都能轻松吃下,你现在纠结的10亿级场景跟当前项目阶段有点脱节了。我这边Qdrant跑过千万级,带payload过滤的混合检索P99大概在几十毫秒,关键是它的filterable HNSW索引做得比较实在,过滤字段基数高的时候不会像有些实现那样退化成暴力扫。Milvus的优势确实在超大规模和分布式这块,但你要是现在连K8s都没上,光为80万向量去搭一套etcd加对象存储的集群,运维成本可能比省下的那点召回率还贵。Elasticsearch召回差大概率不是引擎问题,而是你用的相似度算法和索引参数没调对,dense_vector默认那套跟专用库比确实吃亏。至于K8s,这个数据量单机Docker跑Qdrant完全够,等真到亿级再考虑分布式迁移也不迟,向量库这块迁移成本没你想的那么高。
两个都在生产跑过,说点实际的。80万这个量级Qdrant完全够用,混合检索延迟比Milvus低不少,部署也省心。但你要是奔着10亿去,Milvus的分布式架构确实更稳,Qdrant分片到后期运维会累。K8s不是必须的,单机Docker先跑起来,量真上来了再迁也来得及,别提前给自己上强度。
80万这个量级其实两家都能扛,但你担心的点挺实在。我这边用Qdrant跑过千万级,带payload过滤的混合检索延迟稳定在几十毫秒,它那个filterable HNSW做得确实不错,不用太怕涨量。Milvus功能多是真多,但部署和运维成本摆在那,小团队容易把自己拖进去。至于K8s,除非你后面要上集群分片或者多租户,不然单机加好SSD就够撑到千万级了。
两个都用过,Qdrant的过滤+向量混合检索确实快,单节点跑千万级没啥压力,但10亿级别就得靠集群分片了。Milvus在超大规模下的稳定性和索引管理更成熟,不过部署确实折腾,没K8s的话运维成本不低。你这80万起步量,Qdrant完全够用,后期真涨到亿级再迁也不迟。K8s不是必须的,单机加好SSD和内存先跑起来看瓶颈在哪。