一、问题背景:为什么我要做这次对比
我们团队在做一个电商商品的多模态检索系统,需要支持「以图搜图」和「文本搜商品」两种查询。业务侧给出的硬指标是:
- 向量规模:初期 100 万条,一年内预计增长到 1000 万条
- 向量维度:图文 CLIP 模型输出 768 维,商品标题 embedding 128 维
- 查询 QPS:峰值约 50,P99 延迟要求 1000 万、需要高写入吞吐或复杂标量过滤 → 选 Milvus**。但要做好运维准备:etcd、MinIO、监控一套不能少。
- 两者都支持 HNSW,参数对齐后召回率差异在 1% 以内,性能差异主要来自工程实现和网络协议,不是算法。
- 压测前务必 flush(Milvus)/ 调 indexing_threshold(Qdrant),否则数据不可比。
- 小批量高频查询优先走 gRPC,这个优化对 Qdrant 尤其明显。
我们最终的选择是:初期用 Qdrant 单机扛 100 万级,预留迁移方案;等数据量逼近 800 万再评估迁 Milvus 集群。选型没有绝对的对错,只有和业务阶段匹配与否。希望这篇实测能帮你少走几个我踩过的坑。