最近在做一个企业内部知识库的AI Agent,用的是RAG方案,文档大概有几千份PDF和Word。一开始小规模测试效果还行,但把全部文档丢进去后,检索出来的片段经常跟问题不相关,甚至会把不同项目的合同内容混在一起。我试过调chunk大小、换embedding模型,但提升不明显。想请教一下大家,这种大规模文档场景下,有没有什么实用的分块策略或者检索优化技巧?比如要不要先做个粗分类再分别建索引?还是说需要改召回逻辑?希望有经验的朋友能给点具体建议,谢谢。
楼主
2026-07-19
RAG系统里文档太多时,检索效果反而变差了怎么办?
请 登录 后发表回复
全部回复
共 145 条
2楼
2026-09-17
几千份文档全塞一个索引确实容易这样,召回时相似片段互相打架。我们之前也踩过坑,后来先按业务线或文档类型做一层粗分类,再各自建索引,效果明显好不少。另外可以加个rerank模型对召回结果二次排序,合同这种敏感内容最好再加个元数据过滤。
3楼
2026-09-17
几千份文档混在一起确实容易乱召回,先按业务线粗分索引再检索会稳很多。
4楼
2026-09-17
几千份文档直接混在一起检索,embedding很容易被相似句式带偏,合同这种模板化文本尤其明显。先做一层粗分类再分索引我觉得挺靠谱,比如按项目或文档类型拆开,检索时先路由到对应子库。另外可以加个rerank模型把召回结果再过一遍,亲测比单纯调chunk管用。还见过有人用元数据过滤,把项目ID塞进检索条件里,也能避免串项目。
5楼
2026-09-20
这个问题挺典型的,文档量一上来检索质量断崖式下跌,很多时候不是embedding不行,而是索引里混了太多语义相近但业务上完全不该放一起的内容。你说的合同串项目,我第一反应就是元数据没管住,光靠向量相似度去兜,跨项目的高相似片段太容易被召回。粗分类再分别建索引我觉得是有效的,但别只分一层,最好按业务线加文档类型做两级过滤,检索时先把范围收窄。另外可以试试混合检索,BM25加向量召回再重排,纯向量在专有名词和编号上经常吃亏。还有个容易被忽略的点是chunk里要带上来源标识,比如项目名、文档标题,不然重排模型也难判断该不该留。你们现在有没有给每个chunk打结构化标签,还是全都平铺在一个大索引里?
6楼
2026-09-24
几千份文档不先做粗分类和元数据过滤,光换模型肯定白搭,试试按项目隔离索引。