最近在试着用LlamaIndex跑本地部署的Qwen2.5,想给公司内部搭个文档问答系统。但实际测试发现,直接让模型回答专业文档经常胡编,于是打算用RAG方案,先向量化存储PDF和Markdown文件,检索相关片段再喂给模型。现在卡在向量数据库选择上:Chroma看起来轻量但担心数据量大了性能不行;Milvus功能全但部署又感觉太重;还看到Qdrant和Weaviate,也不知道在中文文档上的检索效果有没有区别。有没有实际在本地搭过RAG的老哥分享下经验?主要是想兼顾易用性和检索精度,最好是能直接集成LlamaIndex的,别太折腾。先谢过!
部署开源大模型想用向量数据库做外挂知识库,该选哪个?
全部回复
共 1 条正好我也在折腾这事,看到你这帖子必须得唠两句。我用过Chroma和Qdrant,简单说下感受。
Chroma本地小规模测试确实香,pip装完就能跑,LlamaIndex集成基本零配置。但我试过塞了大概两万份PDF切片(主要是技术文档和合同),查询延迟明显上来了,而且索引构建时内存占用涨得挺快。如果你公司文档量不大(几千份以内),只是内部团队用用,Chroma完全够用,别被“性能不行”吓退,毕竟省心啊。
Qdrant我后来换的,主要看中它原生支持中文分词和BM25混合检索,这对专业文档问答挺关键。我用Qwen2.5做生成时,发现纯向量检索容易漏掉一些关键术语的精确匹配(比如“违约责任”这种),加了稀疏向量后准确率能提一截。部署也比Milvus轻多了,docker-compose一行搞定,官方还给了一个快速启动的配置文件。不过Qdrant的Python客户端API和LlamaIndex的集成需要稍微看下文档,但比Weaviate简单——Weaviate那个GraphQL查询语法我至今没整明白。
Milvus除非你们有专门的运维团队,否则真不推荐自己搭。我同事在公司服务器上试过,光调参数就花了两天,最后跑起来还经常报错。现在云上的Zilliz倒是省事,但你们要是本地部署就算了。
中文检索效果上,我觉得差距主要不在向量数据库本身,而在你用的embedding模型。试试BAAI/bge-base-zh-v1.5或者m3e-base,比OpenAI那个text-embedding-ada-002在中文场景下稳定得多。另外可以把文档切片大小调成256-512 token,太长了检索噪声大,太短了上下文不连贯。
最后提醒一句:先拿500份文档跑通全链路再批量导入,不然调参调到怀疑人生。有啥问题随时回,我踩过的坑应该能帮你省点时间。