《Corrective Retrieval Augmented Generation》论文个人学习总结

本文基于《Corrective Retrieval Augmented Generation》论文(Shi-Qi Yan等人,arXiv:2401.15884v3,2024年10月)进行总结,探讨如何通过CRAG提升RAG的鲁棒性。结合主要流程和算法,分析其算法设计与实验结果,旨在为LLMs知识增强提供实用思路。




1 论文概述与动机

1.1 幻觉问题与RAG的局限

大型语言模型(LLMs)在生成文本时常出现幻觉,即基于参数知识产生不准确事实。检索增强生成(RAG)通过外部语料库检索相关文档辅助生成,但若检索器返回无关或错误信息,会加剧问题,

1.2 CRAG的提出

CRAG作为即插即用方法,针对检索失败场景设计校正策略,利用网络搜索补充知识,并精炼文档去除噪声。实验表明CRAG显著提升标准RAG和Self-RAG性能,适用于短长形式生成任务。




2 算法框架

2.1 整体流程

CRAG推理框架如开篇大图所示,包括检索评估、动作触发、知识精炼和生成。给定查询x和检索文档D,先评估相关度,根据置信度触发Correct、Incorrect或Ambiguous动作。

2.2 检索评估器

采用微调T5-large(0.77B参数)计算每个文档与查询的相关分数,分数范围-1到1。评估器在PopQA等数据集上微调,正样本为标准的维基标题与回答,负样本为随机无关文档。

2.3 动作触发与知识处理

  • Correct:至少一个文档分数高于上阈值(如0.59),精炼内部知识。
  • Incorrect:所有分数低于下阈值(如-0.99),丢弃原文档,转用网络搜索获取外部知识。
  • Ambiguous:分数介于阈值间,结合内部和外部知识。知识精炼将文档分解为各个片段,从而过滤无关部分再重组。

2.4 网络搜索集成

查询重写为关键词(如“Death of a Batman; screenwriter; Wikipedia”),通过Google API搜索,优先维基百科,精炼为外部知识。

2.5 生成阶段

基于优化知识输入任意生成器产生输出y。

2.6 算法实现

以下为CRAG推理的伪代码实现:

Algorithm 1: CRAG Inference
Require: E (Retrieval Evaluator), W (Query Rewriter), G (Generator)
Input: x (input question), D = {d1, d2, ..., dk} (retrieved documents)
Output: y (generated response)

[01] scores = [E(x, di) for di in D] # relevance scores per doc
[02] confidence = decide_confidence(scores) # one of {CORRECT, INCORRECT, AMBIGUOUS}

[03] if confidence == CORRECT:
[04] internal = knowledge_refine(x, D)
[05] k = internal

[06] elif confidence == INCORRECT:
[07] external = web_search(W(x)) # rewrite query, then search
[08] k = external

[09] else: # AMBIGUOUS
[10] internal = knowledge_refine(x, D)
[11] external = web_search(W(x))
[12] k = merge(internal, external)

[13] y = G(x, k)
[14] return y

2.7 动作触发细节

  • Correct:当至少一个文档相关性得分高于上阈值时触发,精炼内部知识。
  • Incorrect:当所有文档得分低于下阈值时触发,放弃现有文档,转向网络搜索。
  • Ambiguous:当置信度介于两者之间时触发,结合内部和外部知识以增强鲁棒性。



3 技术分析与实验

3.1 关键组件

检索评估器轻量高效,优于ChatGPT提示(准确率84.3% vs. 58-64%)。Ambiguous动作提升鲁棒性,知识精炼避免噪声。网络搜索扩展静态语料,计算开销低(每token FLOPs多0.7,时间多0.1-0.2秒)。

3.2 实验设置

在PopQA(短实体生成)、Biography(长传记生成)、PubHealth(真假判断)和Arc-Challenge(多选题)上测试,使用准确率和FactScore评估。检索用Contriever,生成器为LLaMA2-7B/13B。

3.3 结果与比较

CRAG比标准RAG提升7-36%,Self-CRAG比Self-RAG提升4-37%。如PopQA准确率达61.8%。消融实验证明各组件贡献性能,对低质检索更鲁棒,泛化于短长形式任务。

3.4 局限与展望

需外部评估器微调,未来可内置到LLM。代码在GitHub(github.com/HuskyInSalt/CRAG)可复现。

结尾总结

CRAG通过检索评估与知识校正有效解决RAG的局限性,实验数据验证其在多种任务上的适用性。尽管存在微调依赖等挑战,其开源代码为进一步研究奠定基础,代码在GitHub

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注