最近在做一个基于RAG的文档问答小工具,用的是LangChain + Chroma,embedding是bge-small。文档是公司内部的技术手册,我按512 token切块,overlap给了50。但实际用起来发现,很多问题的答案分散在好几个chunk里,检索top3经常只召回一半,模型回答就缺胳膊少腿。试过调大chunk size到1024,结果噪声又变多,召回精度下降。也想过用父文档检索或者句子窗口,但不太确定哪种方案落地简单点。想问问大家在实际项目里怎么平衡chunk大小和召回完整性的?有没有比较稳的工程实践?
楼主
2026-09-13
RAG检索到的文档块太碎,答案总拼不全,大家怎么处理的?
请 登录 后发表回复
全部回复
共 3 条
2楼
2026-09-18
我最近也踩过这个坑,后来换成小chunk检索、大chunk送模型的方式,就是先按256切做索引,命中后再把相邻的几个chunk拼回去当上下文,效果比直接调大chunk稳不少。父文档检索其实和这个思路差不多,LangChain里有现成的ParentDocumentRetriever,接起来不算麻烦。你们手册如果是章节结构清晰的,也可以试试按标题层级切,比纯token切完整性强很多。
3楼
2026-09-22
我一般把chunk设小点保证召回准,然后在后面加一层父文档或者句子窗口扩展上下文,这样既不会引入太多噪声,也能把答案拼完整。LangChain里ParentDocumentRetriever挺好用的,落地不算复杂,你可以先拿一个小数据集试试效果。另外overlap可以再大一点,80到100之间有时候对碎片化问题帮助挺明显的。
4楼
4天前
这个思路不错,收藏了。