Skip to content

8.4.1 RAG Prompt 应该怎么写,才能减少模型乱答? ​

先给结论:想减少模型乱答,RAG Prompt 不是靠“写得更花”,而是靠“写得更清楚”。要让模型明确知道:回答依据是什么、不能做什么、资料不足时怎么办、输出格式应该怎样。

很多人一看到模型乱答,就会不断往 Prompt 里堆描述词,比如:

  • 请认真回答
  • 请准确回答
  • 请不要胡说

这些表达当然不是完全没用,但通常不够稳。真正更有效的做法,是把 Prompt 拆成几类明确约束。

一、先明确回答依据 ​

这是 RAG Prompt 里最重要的一层。

模型需要先知道:

  • 它应该优先使用什么材料来回答

更稳的写法往往会明确指出:

  • 优先基于提供的上下文回答
  • 不要忽略检索材料
  • 不要把常识推测放在证据之前

这一步的目标,不是让模型“变保守”,而是让它知道:

  • 当前任务的主要证据来源在哪里

二、明确不能做什么 ​

很多乱答不是因为模型没看懂问题,而是因为:

  • 它不知道哪些行为在这个任务里不被允许

比如你可能需要明确告诉它:

  • 不要根据未提供的资料补全细节
  • 不要把推测说成确定事实
  • 不要把背景知识当成当前证据

这类约束要尽量写得具体,不要只停留在:

  • 请不要幻觉

因为“不要幻觉”太抽象,而“资料不足时请明确说明”更可执行。

三、明确资料不足时该怎么处理 ​

这是很多系统最容易漏掉的一层。

如果 Prompt 没有告诉模型“资料不足时该怎么办”,模型通常会倾向于:

  • 用自己已有知识补空

所以更稳的 Prompt 往往会明确要求:

  • 如果材料不足以支持结论,要直接说明不足
  • 不确定时不要强行下结论
  • 可以指出还缺什么信息

这一步会显著降低“看起来答得很完整,但其实没证据”的风险。

四、明确输出形式 ​

输出形式不是为了好看,而是为了控制模型行为。

比如你可以要求:

  • 先给结论,再给依据
  • 按步骤回答
  • 用要点列出证据
  • 回答后附上来源编号

这类输出约束会反过来影响模型如何组织答案,也会提升结果可检查性。

一个更实用的最小骨架 ​

一个更稳的 RAG Prompt,通常至少会包含这四层:

  1. 任务目标
  2. 证据边界
  3. 资料不足处理
  4. 输出格式

例如:

text
你是一个基于检索材料回答问题的助手。

请优先根据提供的上下文回答问题,不要把未在材料中出现的信息说成确定事实。
如果材料不足以支持明确结论,请直接说明“资料不足”,并指出缺少哪类信息。

回答时先给结论,再简要说明依据。

这段示意代码不长,但它已经在控制四件事:

  • 角色
  • 证据边界
  • 资料不足策略
  • 输出结构

五、什么样的 Prompt 更容易导致乱答 ​

下面这些写法经常不够稳:

  • 只说“根据资料回答”,但没说资料不足怎么办
  • 只给上下文,不说明哪些优先级更高
  • 只要求“尽量完整”,却没约束不能猜测
  • 让模型“结合上下文和你的知识一起回答”,但又希望它别乱补

这些冲突要求会把模型推向模糊地带。

一个常见误区 ​

很多人把 RAG Prompt 设计理解成:

  • 找几句万能提示词套进去

这通常不够好。因为 RAG Prompt 真正依赖的是:

  • 当前系统要不要保守
  • 当前任务要不要引用
  • 当前业务能不能接受推测

也就是说,好的 RAG Prompt 不是“通用神 Prompt”,而是:

  • 围绕证据边界和业务要求定制的控制规则

一句话总结 ​

RAG Prompt 想减少模型乱答,关键是把证据边界、禁止行为、资料不足处理和输出格式写清楚。比起堆很多抽象指令,更有效的是让模型明确知道:依据什么回答、什么时候不能猜、以及该怎样把答案组织出来。