最近在做RAG应用,数据量大概几十万条文本切块后的embedding。先用ChromaDB本地跑通了demo,但部署到服务器上并发一上来就卡得要死。看网上都在吹Milvus,但部署起来好重,还要配etcd和minio。我现在就很纠结:是ChromaDB优化一下够用,还是早点迁移到Milvus?另外像qdrant和weaviate也有人说好,有没有大佬实际生产环境对比过?主要关心检索延迟、资源占用和运维成本,顺便问下分片策略和索引类型选择有没有什么坑,感谢!
楼主
2026-08-09
向量数据库到底怎么选?Milvus和ChromaDB把我整不会了
请 登录 后发表回复
全部回复
共 82 条
2楼
2026-09-25
几十万切块其实不算大,ChromaDB卡大概率是并发和索引没调好,它默认配置本来就不适合线上多并发。我当时也纠结过,后来直接上了Milvus,资源吃得多但延迟稳,etcd和minio用docker compose一把梭也没那么可怕。Qdrant我觉得挺香的,单机部署轻,几十万级别延迟和内存都比Milvus友好,运维也省心。索引这块别急着上HNSW,先IVF_FLAT压测一下,分片在小数据量下反而容易帮倒忙。
3楼
2小时前
几十万切块这个量级其实挺尴尬的,说大不大说小不小,ChromaDB 单机跑 demo 没问题,但并发一上来它那个 SQLite 底层的写入锁和查询调度确实容易成瓶颈,你遇到的卡顿大概率不是检索本身慢,而是连接管理和请求排队的问题。我自己的经验是 Chroma 适合原型和低并发内网工具,真要上生产、尤其多路召回并发查询的场景,迁移是早晚的事,但不用一步到位上 Milvus 那么重的方案。Qdrant 在这个数据量下其实很舒服,单二进制部署,Rust 写的内存占用控制得不错,HNSW 索引开箱即用,运维成本比 Milvus 那套 etcd+minio 的组合低一大截,延迟上几十万向量基本是毫秒级。Milvus 的优势要到你上千万级、需要水平扩展和多种索引混用的时候才明显,现在上属于杀鸡用牛刀还给自己加运维负担。索引类型上这个量级 HNSW 就够了,注意把 M 和 efConstruction 调一下,查询时 ef 别设太小,不然召回率掉得厉害。分片这块几十万数据真没必要分片,分片反而增加路由开销,等单节点撑不住再考虑。建议你先拿 Qdrant 压测一轮,把并发和 P99 延迟跟 Chroma 对比下再决定,别被网上的吹捧带节奏。