Skip to content

12.3.2 什么是 Self-RAG? ​

先给结论:Self-RAG 的核心是让模型自己判断“是否需要检索、检索内容是否支持、是否应当使用”。它把检索流程从外部规则变成模型可预测的“反思信号”。

传统 RAG 的检索触发和过滤通常由外部规则控制,而 Self-RAG 让模型在生成过程中输出自检信号(例如“是否需要检索”“证据是否支持”),再由系统根据这些信号决定继续检索、替换证据或停止生成。

Self-RAG 解决的核心问题 ​

  • 统一“检索触发 + 证据自检 + 使用决策”
  • 让模型对自己使用的证据负责,减少“看似合理的胡编”
  • 把检索质量判断转化成可学习的信号

Self-RAG 的典型流程 ​

一个工程化的 Self-RAG 通常包含以下步骤:

  1. 生成时预测检索需求
  2. 执行检索并返回证据
  3. 预测证据相关性 / 支持性 / 使用性
  4. 根据自检信号决定继续检索或生成答案

典型信号(示意):

  • IsRetrieve:是否需要检索
  • IsRelevant:证据是否相关
  • IsSupport:证据是否支持回答
  • IsUse:是否应当使用该证据

最小流程示意(伪代码):

python
def self_rag(query):
    decision = model.predict_retrieve(query)
    if decision == "retrieve":
        evidence = retrieve(query)
        signals = model.judge_evidence(query, evidence)
        if signals["support"] < 0.6:
            return self_rag(rewrite(query))
        return generate(query, evidence)
    return generate(query, [])

重点不是“信号名字”,而是“检索与生成都被自检信号驱动”。

Self-RAG 的工程要点 ​

要让 Self-RAG 工作稳定,至少要保证:

  • 信号可解释:模型输出的判断能被系统读取
  • 阈值可控:比如相关度低就触发重检索
  • 回路可终止:避免无限检索或无限自检

什么时候值得用 Self-RAG ​

Self-RAG 适合高风险场景或复杂问题:

  • 需要“证据驱动”而不是“模型猜测”的任务
  • 检索质量不稳定,且需要主动纠错
  • 答案必须有证据链支撑

常见误区 ​

误区一:Self-RAG 是“更聪明的 RAG” ​

Self-RAG 的价值不是“模型更聪明”,而是“模型被迫给出自检信号”。它是结构升级,不是单纯模型升级。

误区二:只要加自检信号就够了 ​

没有阈值策略和纠错路径,自检信号不会改善稳定性。你需要把信号映射到具体动作。

误区三:Self-RAG 可以替代评估 ​

Self-RAG 是在线自检,不是离线评估。它不能替代系统性的评测与监控。

自检清单 ​

  • 是否有清晰的“检索触发与停止条件”?
  • 自检信号是否真的影响了检索路径?
  • 是否防止了无限检索和无限自检?

一句话总结 ​

Self-RAG 的关键是把“检索决策”和“证据自检”内化为模型信号,再用这些信号驱动检索与生成。