Self RAG
Self RAG概述
Self RAG是一种让LLM自主决定何时需要检索、检索什么内容、以及如何使用检索结果的自适应RAG方法。与传统RAG始终执行检索不同,Self RAG能够根据查询的实际需求动态调整检索行为。
核心机制
反思标记
Self RAG在生成过程中使用特殊标记:
- [Retrieve]:是否需要检索
- [IsREL]:检索结果是否相关
- [IsSUP]:生成内容是否被检索支持
- [IsUSE]:生成内容是否有用
工作流程
- 检索决策:模型判断是否需要检索
- 检索执行:如需要则执行检索
- 相关性判断:评估检索结果的相关性
- 生成与验证:生成内容并验证与检索的一致性
- 质量评估:评估最终输出的有用性
与传统RAG的对比
| 特性 | 传统RAG | Self RAG |
|---|---|---|
| 检索时机 | 始终检索 | 自适应检索 |
| 检索内容 | 固定策略 | 自主选择 |
| 结果利用 | 直接使用 | 验证后使用 |
| 效率 | 可能浪费 | 按需检索 |
训练方法
监督微调
使用包含反思标记的训练数据:
- 标注何时需要检索
- 标注检索结果相关性
- 标注生成内容的依据
奖励模型
训练评估各步骤质量的奖励模型:
- 检索决策质量
- 相关性判断质量
- 生成质量
优势
- 效率提升:不必要的检索被跳过
- 质量保障:生成内容经过验证
- 减少幻觉:基于证据生成
- 灵活性:适应不同查询类型
局限性
- 需要专门训练的模型
- 反思标记增加了推理开销
- 自我判断可能存在偏差
- 检索系统的质量仍然关键
变体与发展
CRAG(Corrective RAG)
增强检索结果的纠正能力,对低质量检索进行退化搜索。
Adaptive RAG
根据查询复杂度选择不同RAG策略:
- 简单查询直接回答
- 中等查询单次检索
- 复杂查询多步检索
Streaming RAG
支持流式输出的RAG方案。
应用价值
Self RAG代表了RAG技术从被动检索向主动检索的转变。它使LLM能够更智能地利用外部知识,提升回答质量的同时减少不必要的计算开销,是RAG技术发展的重要方向。