RAG 回答引用了文档里没有的内容,幻觉怎么治?

第 1196 题 约 2 分钟读完

本文目录
  1. 面试怎么回答
  2. 先分清是哪种问题
  3. 生成阶段的控制
  4. 生成后的校验
  5. 评测

面试怎么回答

我会先区分是检索问题、生成问题还是引用问题。生成阶段:提示词明确只根据材料回答,没有就说未找到;把拒答当作正确行为来计分;要求关键结论逐句标注来源;送入的片段少而准、先处理矛盾文档;降低温度。生成后做校验:检查引用的片段是否存在、是否真正支持对应的句子,回答里的数字、日期、名称能否在原文找到,不通过就删除、重新生成或提示需要核实。评测上建立忠实度指标,专门构造知识库里没有答案的问题检查拒答,并对制度、合同、价格这类高风险内容做人工抽检。

先把这段讲顺;面试官追问时,再展开下面的原理和细节。

详细讲解

检索到的文档是对的,但模型的回答里加了一些文档里根本没有的内容,甚至还标注了引用。对企业知识库来说,这种「看起来有出处的错误」比直接答错更危险。面试官问这题,想看你怎么从生成环节控制幻觉,并且能检测出来。

先分清是哪种问题

  • 检索问题:检索到的文档不相关或不完整,模型用自己的知识「补全」;
  • 生成问题:文档是对的,模型理解错了、过度推断,或者把多个文档的内容错误拼接;
  • 引用问题:回答内容可能对,但引用的出处不对。

检索问题按检索链路排查,这里重点说生成和引用。

生成阶段的控制

  1. 提示词明确约束:只根据提供的材料回答;材料里没有的信息,明确说「资料中未找到」;不要用常识补充;
  2. 允许拒答:模型在材料不足时说不知道,应该被视为正确行为,而不是失败。评测时也要这样计分;
  3. 要求逐句引用:每个关键结论后标注来源片段的编号,便于检查;
  4. 控制上下文质量:送进去的片段少而准,减少无关内容的干扰;矛盾的文档先处理再交给模型;
  5. 降低随机性:知识问答场景使用较低的温度。

生成后的校验

  • 引用校验:检查引用的片段是否真实存在,被引用的片段是否确实支持这句话(可以用一个模型做蕴含判断);
  • 数字和实体校验:回答中出现的数字、日期、名称,在原文中能否找到;
  • 不通过怎么办:删除没有依据的句子、重新生成,或者提示用户「以下内容可能需要核实」。

评测

  • 构建「忠实度」评测:回答中的每一个陈述是否能在检索材料中找到依据;
  • 专门构造「知识库里没有答案」的问题,检查模型是否会拒答;
  • 线上抽样人工核查,重点看高风险领域(制度、合同、价格)。