在大型语言模型(LLMs)领域,检索增强生成(Retrieval-Augmented Generation, RAG)技术的出现极大地提高了模型的表现。然而,RAG的性能严重依赖于检索文档的质量。为了解决这一问题,研究者提出了纠正式检索增强生成(Corrective Retrieval Augmented Generation, CRAG)方法。本文将深入探讨CRAG的工作原理及其核心组件。
CRAG: RAG的升级版
CRAG的核心创新在于引入了一个自动纠错机制,以提高生成过程的鲁棒性。具体来说,CRAG通过以下方式优化了传统RAG:
-
检索质量评估:CRAG引入了一个轻量级的检索评估器,用于评估检索文档与查询的相关性。这个评估器能够为每个检索文档计算一个置信度分数。
-
动态调整策略:基于评估结果,CRAG会触发不同的操作:
- 正确:当置信度高于上限阈值时,进行知识精炼。
- 错误:当置信度低于下限阈值时,丢弃检索结果并使用网络搜索。
- 模糊:当置信度在两个阈值之间时,结合上述两种方法。
-
知识精炼:对于高质量的检索结果,CRAG使用分解-重组算法提取关键信息。
-
网络搜索补充:当检索结果不理想时,CRAG会利用网络搜索API获取额外知识。
这种方法不仅能够纠正错误的检索结果,还能优化有用的信息,从而显著提高生成内容的质量和可靠性。
CRAG的核心组件
让我们深入了解CRAG的核心组件及其工作原理:
1. 检索评估器
检索评估器是CRAG的关键创新,它的主要特点包括:
- 模型结构:基于T5-large模型初始化,经过微调以适应评估任务。
- 输入形式:将查询和每个检索文档连接作为输入。
- 输出:为每个查询-文档对预测一个相关性分数。
- 性能:相比Self-RAG的批评模型和指令调整的LLaMA-2 (7B),CRAG的评估器更轻量(0.77B参数)且性能更优。
2. 动作触发机制
基于检索评估器的输出,CRAG设计了三种动作触发机制:
- 正确:当至少一个文档的置信度分数高于上限阈值时触发。
- 错误:当所有文档的置信度分数都低于下限阈值时触发。
- 模糊:当分数在两个阈值之间时触发。
这种机制允许CRAG根据检索质量灵活调整策略,提高系统的适应性。
3. 知识精炼
知识精炼过程是CRAG提高信息质量的关键步骤:
- 文档分解:使用启发式规则将检索文档分割成细粒度的知识片段。
- 片段评估:利用检索评估器计算每个知识片段的相关性分数。
- 过滤重组:根据相关性分数过滤不相关片段,并按顺序重新组合相关片段。
这个过程确保了只有最相关、最有价值的信息被用于后续的生成任务。
4. 网络搜索集成
当检索结果不理想时,CRAG会启动网络搜索机制:
- 查询重写:使用ChatGPT将原始输入重写为搜索引擎友好的关键词查询。
- API调用:使用商业网络搜索API获取相关URL链接。
- 内容提取:访问URL链接并提取网页内容。
- 知识精炼:对提取的网页内容应用与检索文档相同的知识精炼方法。
这种方法允许CRAG突破静态知识库的限制,获取最新、最相关的信息。
CRAG的技术亮点
- 自适应性:通过动态评估和调整策略,CRAG能够适应不同质量的检索结果。
- 知识整合:结合了静态知识库和动态网络搜索,提高了知识的全面性和时效性。
- 精细化处理:通过知识精炼过程,CRAG能够在文档级别和片段级别进行相关性筛选。
- 轻量级设计:检索评估器采用相对轻量的模型结构,在保证性能的同时提高了效率。
对开发者的启示
- 评估机制的重要性:在构建基于检索的AI系统时,考虑引入类似CRAG的评估机制,以提高系统的可靠性。
- 知识源的多样化:结合静态知识库和动态网络搜索,可以显著提升系统的知识覆盖范围。
- 细粒度信息处理:考虑在文档级别之外,引入更细粒度的信息处理机制,如CRAG的知识精炼过程。
- 自适应策略:设计能根据输入质量动态调整策略的系统,可以提高系统的鲁棒性和适应性。
CRAG的这些创新为解决RAG中的关键问题提供了新的思路。在实际应用中,可以根据具体需求,选择性地采用CRAG的某些组件或思想,以改进现有的RAG系统。