Corrective RAG
Corrective RAG概述
Corrective RAG(CRAG)是对传统RAG的改进,增加了对检索结果质量的评估和纠正机制。当检索到的文档质量不高时,CRAG能够进行纠正操作,如丢弃低质量文档、触发额外检索、或对文档进行精炼,从而提升最终生成质量。
核心机制
检索评估器
CRAG引入轻量级检索评估器:
- 评估检索文档与查询的相关性
- 输出三种判断:Correct、Incorrect、Ambiguous
- 根据判断结果采取不同策略
纠正操作
根据评估结果执行不同操作:
Correct(正确)
- 使用知识精炼操作
- 过滤无关信息
- 保留关键知识片段
Incorrect(错误)
- 丢弃当前检索结果
- 触发网络搜索作为补充
- 获取更相关的外部信息
Ambiguous(模糊)
- 同时使用检索结果和网络搜索
- 综合多来源信息
工作流程
- 初始检索:从知识库检索相关文档
- 质量评估:评估器判断检索质量
- 纠正操作:根据评估结果执行纠正
- 知识精炼:提取关键信息
- 答案生成:基于精炼后的知识生成回答
知识精炼
文档级精炼
- 去除与查询无关的段落
- 保留关键信息片段
- 压缩冗余内容
句子级精炼
- 评估每个句子的相关性
- 保留高相关度句子
- 组合形成精炼上下文
优势
- 质量保障:自动过滤低质量检索
- 适应性强:对不同查询类型自适应
- 容错能力:检索失败时有备用方案
- 效率提升:避免使用低质量文档浪费计算
与相关方法对比
| 方法 | 检索评估 | 纠正机制 | 网络搜索 |
|---|---|---|---|
| Naive RAG | 无 | 无 | 无 |
| Self RAG | 自检 | 跳过检索 | 无 |
| CRAG | 评估器 | 精炼+丢弃 | 支持 |
| Adaptive RAG | 复杂度判断 | 策略选择 | 可选 |
实现要点
- 训练或获取可靠的检索评估器
- 设计合理的纠正策略
- 优化知识精炼算法
- 平衡纠正开销与质量提升
- 监控纠正操作的效果
应用场景
- 企业知识库问答(知识更新不及时)
- 开放域问答(需要网络补充)
- 专业领域问答(领域知识不完整)
- 长文档理解(文档质量参差不齐)
CRAG通过引入检索质量评估和纠正机制,显著提升了RAG系统的鲁棒性和可靠性。