
🧠 图解记忆: Self-RAG 反思“要不要查、答案受不受支持”,CRAG 判断“查到的证据能不能用”。
💡 答案要点
self-RAG = Self-Retrieval-Augmented Generation(自检索增强生成)
传统RAG的问题:
- 不管查询是否需要检索,都强制检索
- 检索结果质量差时,模型仍然基于错误上下文生成
- 无法判断检索是否必要
self-RAG的核心创新:
- 模型自主判断"需不需要检索"
- 模型自主评估检索结果的质量
- 质量差时主动修正或忽略错误上下文
self-RAG流程:
用户Query → 模型判断:是否需要检索?
├── 不需要 → 直接生成答案
└── 需要 → 检索文档
↓
模型判断:文档是否相关?
├── 不相关 → 忽略,用内部知识
└── 相关 → 生成答案 + 引用CRAG = Corrective RAG(纠错型RAG)
python
# CRAG的自我纠错流程
class CorrectiveRAG:
def generate(self, query):
docs = retriever.retrieve(query)
# 评估检索质量
relevance = assessor.evaluate(query, docs)
if relevance > 0.8:
# 高相关:直接生成
return llm.generate(query, docs)
elif relevance > 0.3:
# 中相关:知识精炼后生成
refined = knowledge_refiner.refine(query, docs)
return llm.generate(query, refined)
else:
# 低相关:忽略检索,用内部知识
return llm.generate(query, []) # 无上下文对比:
| 方案 | 检索触发 | 质量控制 | 适用场景 |
|---|---|---|---|
| 传统RAG | 100%触发 | 无 | 简单问答 |
| self-RAG | 模型自主决定 | 反思token评估 | 复杂推理任务 |
| CRAG | 100%触发 | 三级质量过滤 | 高精度要求场景 |
面试话术:
"self-RAG的突破是让模型'知道自己什么时候该查资料、查到的资料靠不靠谱'。CRAG则是'先查再审,不行就换'。生产环境中,我用CRAG做金融问答,检索质量<0.3的直接走内部知识,幻觉率从15%降到3%。"