题目
Naive RAG 是”检索-生成”线性流程,无法应对检索失败或检索错误。Self-RAG 与 Corrective RAG 各自如何解决?请对比。
参考答案
Naive RAG 的痛点:
- 检索不到也硬生成 → 幻觉。
- 检索到无关内容也塞进 prompt → 干扰。
- 检索错误(找错文档)无法纠正。
- 无法决定”要不要检索""检索够不够”。
Self-RAG(Self-Reflective RAG):
核心思想:让模型学会反思 token,自主决定检索时机与是否采用检索结果。
- 训练模型输出特殊 reflection token:
[Retrieve]:是否需要检索。[IsRel]:检索结果是否相关。[IsSup]:生成是否被检索支持。[IsUse]:回答是否有用。
- 推理时模型边生成边自评,按需触发检索、过滤无关结果、丢弃无支持回答。
- 训练需用 RL 或 SFT 让模型学会何时输出这些 token。
Corrective RAG(CRAG):
核心思想:检索后先评估质量,再决定如何用,失败时回退网络搜索。
- 引入轻量检索评估器:给检索结果打分(正确/模糊/错误)。
- 三种处理:
- 正确:精炼后用(提取最相关片段)。
- 模糊:结合检索 + 网络搜索补充。
- 错误:丢弃检索,纯网络搜索重检。
- 把 RAG 从”被动接受检索结果”升级为”主动质控 + 多源兜底”。
对比:
| 维度 | Self-RAG | CRAG |
|---|---|---|
| 反思路径 | 模型内置反思 token | 外置评估器 + 规则 |
| 是否需重训 | 需(教模型反思) | 不需(外挂模块) |
| 检索触发 | 模型自主决定 | 始终检索 + 评估 |
| 失败兜底 | 丢弃无支持生成 | 网络搜索补充 |
| 落地难度 | 高(需训练) | 低(即插即用) |
Agentic RAG:进一步把 RAG 包装为 Agent,让 LLM 自主决定查询改写、多轮检索、跨库检索、是否继续深挖——是 Self-RAG/CRAG 思想的 Agent 化升级。
面试加分点:
- 指出三者共同主线:“让 RAG 从流水线变为带反馈的闭环”——能否信任检索、检索不够怎么办、是否要重检索。
- CRAG 工程落地最友好(无需重训),Self-RAG 上限更高但成本高。
- 现代生产 RAG 多用 CRAG 思路:检索 + 重排 + 质量分阈值 + 兜底网络搜索。
出处:头条《高级 RAG 范式:Self-RAG、CRAG、GraphRAG 到底解决什么问题》、Self-RAG/CRAG 论文。
内容来源
整理自头条《高级 RAG 范式:Self-RAG、CRAG、GraphRAG 到底解决什么问题》
本站内容整理自公开面经与开源仓库,仅供学习交流,严禁杜撰。