Appearance
12.3.2 什么是 Self-RAG?
先给结论:Self-RAG 的核心是让模型自己判断“是否需要检索、检索内容是否支持、是否应当使用”。它把检索流程从外部规则变成模型可预测的“反思信号”。
传统 RAG 的检索触发和过滤通常由外部规则控制,而 Self-RAG 让模型在生成过程中输出自检信号(例如“是否需要检索”“证据是否支持”),再由系统根据这些信号决定继续检索、替换证据或停止生成。
Self-RAG 解决的核心问题
- 统一“检索触发 + 证据自检 + 使用决策”
- 让模型对自己使用的证据负责,减少“看似合理的胡编”
- 把检索质量判断转化成可学习的信号
Self-RAG 的典型流程
一个工程化的 Self-RAG 通常包含以下步骤:
- 生成时预测检索需求
- 执行检索并返回证据
- 预测证据相关性 / 支持性 / 使用性
- 根据自检信号决定继续检索或生成答案
典型信号(示意):
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 的关键是把“检索决策”和“证据自检”内化为模型信号,再用这些信号驱动检索与生成。