最近在做一个企业知识库的RAG系统,向量库用的是Milvus,embedding是bge-large-zh,检索top5的chunk肉眼看着都挺相关的,但丢给GPT-4之后,回答要么漏掉关键信息,要么直接编一个原文里没有的答案。试过调temperature=0、加“请仅根据以下内容回答”的prompt,效果都不稳定。有没有大佬遇到过类似情况?到底是检索的问题还是生成的问题?该怎么定位啊?
楼主
2026-09-28
RAG检索出来的内容明明是对的,但LLM回答还是胡编,问题出在哪?
请 登录 后发表回复
全部回复
共 1 条
2楼
2天前
我前段时间也踩过这个坑,检索看着没问题但生成还是飘,后来发现是chunk切得太碎了,top5拼起来上下文不连贯,模型只能自己脑补。你可以先把检索到的5个chunk原样拼成一个prompt手动喂给GPT-4看看,如果这样它能答对,那问题就在拼装或者chunk粒度上,不是检索本身。另外bge-large-zh对长query有时候召回会偏,试试把用户问题改写一下再检索,或者加个rerank模型过一遍。还有个小技巧是在prompt里把每个chunk标上编号,让模型回答时引用编号,这样它编的时候你能一眼看出来是哪个片段被误读了。temperature=0其实不代表不编,GPT-4在上下文有干扰信息时照样会跑偏,尤其是chunk之间有语义重叠的时候。建议你先做个消融实验,一次只喂一个chunk看它答得对不对,逐个排查比整体调prompt高效多了。