跳到正文
docai.cc

DOCAI · 课程 · L2 · 25 分钟

减少幻觉:给资料、要引用

幻觉不是模型坏了,是它在缺信息时选择了猜。这一课用三个动作把它从「猜」推回「不答」:限定材料、要求引用、留出口。

你将学会

  • 判断一次回答是「知识错」还是「材料没给」
  • 用限定材料 + 引用要求把猜测压下去
  • 设计一个「不知道」也能正常返回的输出结构

先分清两种错

类型 表现 根因 对策
知识错 讲原理、讲历史时编细节 训练数据里没有或记错 换更强的模型,或自己给资料
材料错 你给了文档,它答的和文档不符 没读到、读漏了、或自己补了 检索 + 引用 + 校验

多数业务场景属于第二类:模型不是不知道,是没看到,或者看到了却按「常识」补全。

动作一:限定材料

在系统提示里写清边界:

只使用 <material> 标签内的信息回答;材料里没有的,写「材料未提及」。 不要用材料之外的知识补充。

加上「不要用外部知识」这一句,比只说「根据材料回答」有效。

动作二:要求引用

每个结论后面标出来源片段(文件名 + 原文一句)。

引用有两个作用:

  1. 逼模型先找到原文再下结论;
  2. 让你能在 30 秒内核对,而不是通读全文。

动作三:给「不知道」留出口

如果输出结构只允许「答案」,模型就只能编。给它一个合法出口:

{ "answer": "...", "evidence": ["..."], "missing": "材料未提及的部分" }

missing 字段的作用是把「不知道」变成正常返回,而不是失败或幻觉。

再加一层:检索

材料太长时,整篇塞进去,模型对中段的利用会下降。 先检索出最相关的几段再注入(见最小 RAG), 命中率通常比整篇更好。

验证方法

准备 10 条问题,其中 3 条故意问材料里没有的内容:

  • 如果模型对那 3 条也给出了肯定回答,说明你的边界没生效;
  • 正确行为是回答「材料未提及」。

这比测「答对了多少」更能暴露问题。

常见错误

  • 「请准确回答」:没有可执行动作,等于没说。
  • 只给资料不给引用要求:模型仍可能凭印象总结。
  • 没有 missing 字段:模型被迫在「编」和「空着」之间选。
  • 温度调到 0 就以为不会编:幻觉主要来自信息缺失,不是采样随机。

自测

  1. 你的场景里,幻觉是知识问题还是材料问题?
  2. 那 3 条「材料里没有」的问题,你的系统会怎么答?

下一步

涉及的概念