最近在做一个企业文档问答的RAG系统,向量库用的Milvus,embedding是bge-large-zh,检索top5基本都能召回相关段落。但发现一个很头疼的问题:明明检索到的chunk里写得很清楚,LLM(用的Qwen)回答时还是会自己编,甚至把几个文档的内容混在一起说。试过调prompt让它“只根据上下文回答”,效果一般。也试过把temperature降到0.1,还是会胡诌。想问下大家,这种情况一般怎么排查?是rerank的问题,还是chunk切分太碎导致上下文不完整?有没有什么系统性的调试思路?
楼主
2026-09-13
RAG检索出来的内容明明相关,但LLM回答还是胡编,问题出在哪?
请 登录 后发表回复
全部回复
共 7 条
2楼
2026-09-13
chunk切太碎确实容易丢上下文,先试试加大重叠或者按段落切。另外prompt里把原文直接贴进上下文比只给检索结果管用。
3楼
2026-09-15
我遇到过,多半是chunk里虽然相关但缺了关键条件,模型就自己圆场了,试试加个rerank再看看切片粒度。
4楼
2026-09-18
我遇到过类似情况,后来发现是chunk切得太碎,单块信息不完整,模型只能靠猜来补全。你可以先打印一下实际喂给LLM的完整prompt,看看拼出来的上下文是不是真的通顺。另外Qwen对指令遵循没想象中那么强,试试把关键句用编号列出来让它逐条引用。还有种可能是top5里混了相似但矛盾的段落,加个rerank或者按文档来源去重会好很多。
5楼
2026-09-28
我之前也踩过这个坑,后来发现很多时候不是检索的问题,而是chunk里塞了太多不相关的段落,LLM看到一堆上下文就开始自由发挥。你可以先试试把召回的chunk按句子粒度拆开,只喂真正相关的那几句进去,看它还编不编。另外Qwen对prompt里“只根据上下文”这种指令其实没那么敏感,不如直接把答案格式限定死,比如要求它先引用原文再回答。还有个容易忽略的点,top5里如果有两三篇内容相近但细节冲突,模型很容易自己揉在一起,加个rerank或者去重会好很多。
6楼
4天前
学到了,感谢分享!
7楼
4天前
写得挺好,建议补充一些性能数据。
8楼
3天前
chunk切太碎确实容易丢上下文,建议先看看召回片段拼起来是否自洽,再排除rerank背锅。