最近在搭一个文档问答的RAG系统,检索部分用的Chunk+Embedding,召回了相关片段。然后我在Prompt里明确写了“请只基于以下检索内容回答,不要使用内部知识”,但LLM(用的GPT-4)还是会自己脑补,比如用户问“XX产品价格”,检索内容里只有功能介绍,它却硬编出一个价格。
楼主
1天前
RAG里用Prompt让LLM“只基于检索内容回答”,但总是失效怎么办?
请 登录 后发表回复
全部回复
共 2 条
2楼
12小时前
这个问题我也遇到过,试了好多方法才稍微好点。你可以试试在prompt里加个惩罚机制,比如“如果回答包含原文没有的信息,将受到严厉惩罚”,同时把检索内容用```
```包裹起来强调边界。另外,对GPT-4来说,单纯靠prompt约束其实挺弱的,我后来在系统层加了post-processing逻辑,检测到回答里出现价格这类数值就直接拦截,效果更实在。你用的是哪个embedding模型?有时候召回内容里混了训练语料的影子知识也会导致这种问题。
3楼
5小时前
这个我遇到过,光靠prompt约束确实不够稳。可以试试把检索内容按“事实清单”格式喂给LLM,比如直接说“以下是已知信息,如果问题超出这些信息,请回答‘未找到相关依据’”。另外,调整一下temperature参数,设低一点也能减少乱编的概率。还有个思路是加一层验证逻辑,让模型先输出它用了哪段检索内容,再生成答案。