9.5 本章实战练习

9.5 本章实战练习

本节提供实战练习,帮助读者掌握如何针对 RAG(检索增强生成)系统优化提示词。

练习一:设计带有引用的 RAG 回答框架

目标:掌握如何引导模型在回答中显式地附带来源引用。

场景描述: 系统已经检索到了 3 篇相关的公司内部文档片段。 你希望大模型根据这 3 篇文档回答用户问题,且 必须在陈述事实后标注相应的文档编号

检索到的文档

<documents>
<doc id="D001">公司年假规定:工作满 1 年不满 10 年的员工,每年可享受 5 天带薪年假。</doc>
<doc id="D002">病假规定:员工每月可享受 1 天全薪病假,超出部分按基本工资的 80%计算。</doc>
<doc id="D003">请假流程:所有超过 3 天的假期必须提前完整一周在 HR 系统中提交申请并由部门总监审批。</doc>
</documents>

用户问题: “我在公司工作了 3 年。我想下个月请 4 天年假和 1 天病假连在一起休,工资怎么算?我需要做什么?”

任务: 编写一个包含上下文资料注入、任务指令和格式要求的提示词,促使大模型给出带有标注的回答。

示例预期输出片段

根据规定,你可以享受 5 天带薪年假(来源:[D001]),以及每月 1 天全薪病假(来源:[D002])。因此,这 5 天假期你的工资将不受影响(全薪)。你必须提前一周在 HR 系统申请...


练习二:处理冲突信息

目标:提升模型在面对多源矛盾信息时的鉴别能力。

场景描述: 在真实 RAG 系统中,由于文档库往往包含不同时间点的文件,检索出来的片段可能互相矛盾。

检索到的文档

问题: “系统初始密码是什么?修改密码有要求吗?”

任务: 在你的 RAG 提示词中,补充一条 具体的规则(Rule),指导大模型如何在遇到类似这样的矛盾信息时:

  1. 学会看元数据(如日期)。

  2. 在输出中如何向用户说明这个差异。


练习三:拒绝回答越界问题

目标:构建闭卷测试,防止 RAG 系统产生幻觉。

场景描述: 你的 RAG 系统专员负责解答“A 产品的技术支持”问题。由于大模型本身认识“B 产品”(存在于预训练知识中),当用户问及 B 产品时,模型很容易撇开检索文档,直接调用自己的预训练知识回答。这在严谨的企业知识库应用中是不被允许的。

任务: 设计一个强大的指令约束,要求模型 只能且仅能 基于提供的 <context> 回答。

  • 如果给定上下文中没有答案,必须明确输出一句特定的“安全词”:“对不起,内部知识库中未找到相关记录。”。

验证 测试:假设 <context> 里面只有关于如何煮咖啡的信息,用户提问:“请问太阳系最高的山叫什么名字?” 模型应输出安全词,而不是回答“奥林帕斯山”。

最后更新于