《60天AI学习计划启动 | Day 23: RAG 答案生成与引用标注(减少幻觉》

Day 23:RAG 答案生成与引用标注(减少幻觉)

学习目标

  • 掌握 基于检索结果的「约束式回答」策略(尽量只用文档内容作答)
  • 会做 引用标注(类似 [1][2]),能回溯到具体文档片段
  • 理解 常见幻觉类型,并用 Prompt/后处理做基本防护

核心知识点

  • 1. 约束式回答(Answer from Context Only)

    • Prompt 关键要求:
      • 只能基于给定 context 回答,不能自己脑补
      • 若 context 中没有答案,明确说「文档中没有相关信息」
    • 常见提示模版:
      • 「如果上下文中没有足够信息,请明确回答‘文档中没有相关信息’」
      • 「不要使用外部知识,不要编造数据/时间/数量」
  • 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 + 引用 + 自检》,沉淀到博客
posted @ 2025-12-17 09:23  XiaoZhengTou  阅读(1)  评论(0)    收藏  举报