最近在用LangChain搭一个私有知识库的RAG项目,文档量大概50万条,分块后embedding存到本地faiss里,结果召回率还行但响应有点慢,而且每次全量更新要重跑索引,太痛苦了。看大家都说生产环境用Milvus或者ES,但ES的kNN和向量库比到底差在哪?我需求就是中文文档检索,对精度不算极致,但更新要频繁。目前很纠结要不要从faiss迁到pgvector或者Milvus,有没有大佬聊聊实际生产中的选型经验?另外,混合检索(BM25+向量)是不是必须的?先谢过了。
楼主
2026-09-01
向量数据库和ES到底怎么选?做RAG检索被搞懵了
请 登录 后发表回复
全部回复
共 24 条
2楼
2026-09-17
50万条其实faiss扛得住,慢多半是没做index调优或者每次全量重建闹的。频繁更新的话faiss确实不友好,pgvector增量写入省心但召回一般,Milvus更新灵活性能也够,就是运维多个组件。混合检索做中文基本是刚需,BM25补关键词,向量管语义,两个一起上召回提升很明显。ES的kNN性能不如专用向量库,但你已经有ES的话省事,图省心就pgvector,要规模就Milvus。
3楼
2026-09-18
50万条其实pgvector完全扛得住,别被Milvus的排面吓到。你痛点主要是全量重建索引,换pgvector或ES都能增量写入,但ES的kNN底层还是HNSW,跟专用向量库比差在过滤和召回调优上,中文场景还得自己配分词器。混合检索我建议上,BM25兜底关键词,向量管语义,实际项目里纯向量翻车概率不低。频繁更新的话优先看写入放大和段合并开销,ES这块坑挺多的。
4楼
2026-09-19
频繁更新的话Milvus比faiss省心多了,混合检索中文场景基本是标配,光靠向量容易漏关键词。
5楼
11天前
我之前也遇到过类似问题,后来换了方案。