最近在做RAG项目,数据量大概几百万条文本embedding,现在用faiss本地跑,但内存快扛不住了,而且每次全量更新索引特别慢。看了一圈像Milvus、Qdrant、Weaviate这些,感觉各有说法,有点选择困难。我的场景主要是知识库问答,查询并发不高,但希望支持增量更新和过滤条件(比如按文档类别过滤)。另外部署上不想太复杂,最好Docker能搞定。有没有用过的朋友聊聊实际体验?特别是数据量上去之后,这几个在性能、资源占用和稳定性上差别大吗?如果不想折腾,是不是直接用pgvector也够用?
向量数据库这么多,RAG场景到底该选哪个?求过来人指点
全部回复
共 26 条几百万条embedding用faiss确实容易卡内存,我之前也踩过这个坑。后来换了Qdrant,Docker起一个单节点很省事,增量更新和payload过滤都挺顺,资源占用比Milvus轻不少。不过你要是查询并发真不高,pgvector其实也够用,就是过滤条件复杂了之后性能会有点拉胯。建议先拿Qdrant试一周,不行再换Milvus也不迟。
几百万条pgvector够用了,过滤和增量都省心,别折腾集群。
几百万条用pgvector完全够,过滤和增量都省心,别折腾集群了。
几百万条embedding还要增量更新和过滤,faiss确实会越来越难受,全量重建索引那个等待时间很折磨人。你这个量级和查询并发,我觉得Milvus和Qdrant都能扛,但Milvus组件多,etcd、minio一堆依赖,Docker跑起来资源占用不小,除非上集群不然有点重。Qdrant我实际用过,单机Docker部署很清爽,payload过滤和增量写入都挺顺手,几百万向量内存占用也还能接受。Weaviate功能全但概念多,学习成本偏高,小团队容易踩坑。如果过滤条件不算复杂、并发也不高,pgvector真不是不能打,省一套运维,数据一致性还省心,就是索引建得慢、召回调参空间小一点。建议你先拿真实数据在Qdrant和pgvector上各压一遍,重点看增量写入延迟和过滤后的召回,别只看benchmark。
几百万条embedding用faiss本地跑确实容易卡内存,我之前也踩过这个坑。后来换Qdrant感觉挺省心的,Docker一键起,增量更新和payload过滤都支持得不错,资源占用也比Milvus轻不少。你们查询并发不高的话,其实pgvector也够用,就是过滤条件复杂了之后性能会有点拉胯。建议先拿Qdrant试水,迁移成本不高,真不够再考虑Milvus。
几百万条embedding还要增量更新和过滤,faiss确实不太适合了。我去年从faiss迁到Qdrant,Docker一条命令起服务,增量插入和payload过滤都很顺手,内存占用也比想象中低。Milvus功能更全但组件多,部署维护成本高一些,看你团队有没有精力折腾。如果并发不高又不想引入新组件,pgvector其实也能扛住几百万量级,就是过滤加向量混合查询时性能会明显掉,得自己权衡。