《60天AI学习计划启动 | Day 23: RAG 答案生成与引用标注(减少幻觉》
Day 23:RAG 答案生成与引用标注(减少幻觉)
学习目标
- 掌握 基于检索结果的「约束式回答」策略(尽量只用文档内容作答)
- 会做 引用标注(类似
[1][2]),能回溯到具体文档片段 - 理解 常见幻觉类型,并用 Prompt/后处理做基本防护
核心知识点
-
1. 约束式回答(Answer from Context Only)
- Prompt 关键要求:
- 只能基于给定 context 回答,不能自己脑补
- 若 context 中没有答案,明确说「文档中没有相关信息」
- 常见提示模版:
- 「如果上下文中没有足够信息,请明确回答‘文档中没有相关信息’」
- 「不要使用外部知识,不要编造数据/时间/数量」
- Prompt 关键要求:
-
2. 引用标注(Source Citation)
- 将每个检索片段编号:
[1] [2] [3] ...,传给 LLM - 要求回答中在相关句子后带上引用,如:
……根据[1][3] - 返回时同时附上引用对应的原文/文档 id,方便前端渲染「高亮来源」
- 将每个检索片段编号:
-
3. 幻觉类型与防护
- 常见幻觉:
- 文档没有的内容被编造出来(虚构字段/接口/参数)
- 模糊/肯定地回答「好像支持」「大概可以」
- 防护手段:
- Prompt 明确「未知就说不知道」
- 后处理:简单规则检查(例如接口名必须在 doc 列表中,否则打上 “可能不可靠” 标签)
- 用 RAG:question + answer + context 再打一轮「自检」,让 LLM 判断是否严格引用了上下文
- 常见幻觉:
实战作业(建议)
-
作业 1:设计一个「只基于上下文回答」的 Prompt
- 要求包含:
- 上下文区块(带编号)
- 明确禁止使用外部知识
- 明确无答案时的回复模板
- 要求包含:
-
作业 2:给当前 RAG 流程加引用标注
- 检索结果组装为:
[1] 文本A...[2] 文本B...
- Prompt 中要求回答时在关键句尾部加
[n] - 返回时携带:
answer + [{ index: 1, text: 文本A, docId: xxx }, ...]
- 检索结果组装为:
-
作业 3:实现一个简单「自检链」
- 结构:
{question, answer, context} → LLM → 判断 answer 是否严格基于 context - 输出一个结构化结果:
{ isSafe: boolean, reason: string } - 对
!isSafe的结果,在前端加一个小提示:「该回答可能包含推测信息」
- 结构:
思考 / 笔记要点
- 用你项目里 3 个「之前答错/答不全」的例子,套用新 Prompt + 引用标注,看改进有多大
- 标记一下:哪些错误是「检索阶段」的锅,哪些是「生成阶段」的锅,分别怎么防
- 写一篇短文:《我在 RAG 项目里做的防幻觉实践:Prompt + 引用 + 自检》,沉淀到博客

浙公网安备 33010602011771号