首页 > 教程攻略 > ai资讯 >Adaptive-RAG:性能提升50%以上的高效RAG策略

Adaptive-RAG:性能提升50%以上的高效RAG策略

来源:互联网 时间:2026-07-28 15:08:21

Adaptive-RAG:性能提升50%以上的高效RAG策略

发布时间:2024年03月21日

RAG 问答系统

摘要

近年来,检索增强型大语言模型(Retrieval-Augmented LLMs)因其能整合外部知识库,从而提升问答准确性而备受关注。但说实话,现有方法在处理复杂度各异的查询时,常常顾此失彼:要么在简单问题上浪费计算资源,要么在复杂问题上力不从心。更棘手的是,用户的查询往往没有泾渭分明的界限。基于此,我们设计了一个自适应问答框架,其核心思路是:根据查询的复杂度,智能选择最合适的策略——从最简单的不检索方案,到最复杂的多步检索增强方案。其中的关键在于,它通过一个由小型语言模型训练而成的分类器,借助模型预测结果和数据集的归纳偏置来自动生成标签,从而准确预判新查询的复杂度级别。这就好比在“检索”与“无需检索”的策略之间搭建了一座桥梁,既能灵活应对,又能保持平衡。我们在多个覆盖不同复杂度的开放域QA数据集上进行了验证,实验结果表明,相比包括自适应检索在内的同类方法,我们的模型在综合效能和精确度上均实现了显著提升。相关代码已开源,地址为:https://github.com/starsuzi/Adaptive-RAG。

框架

Adaptive-RAG的核心,是通过判断问题的复杂度来自动选择RAG策略。作者将问题划分为三类,如上图的C部分所示:

  • 开放领域问答

    :这类任务通常依赖检索器和阅读器两个模块。随着千亿参数大模型的涌现,LLM与检索器之间的协同效应确实取得了长足进步。但一个不争的事实是:单步检索增强LLM虽然有用,面对部分复杂查询时,仍显得力不从心。

  • 多跳问答

    :这是传统开放域问答的进阶版,要求系统从多个文档中综合信息、进行上下文关联,才能回答更复杂的查询。常见做法是将多跳查询拆解为多个单跳子查询,反复访问LLM和检索器来求解,最后合并答案。但这种方式有个明显的缺陷:对于每个查询都进行迭代访问,效率极低——毕竟有些简单问题,一个检索步骤,甚至仅靠LLM本身,就能搞定。

  • 自适应检索

    :为了应对不同复杂度的查询,自适应检索策略会根据每个查询的复杂度动态决定是否检索文档。比如,它可以根据实体的频率来判断复杂度,当频率低于某个阈值时才启用检索模块。不过,这种方法只处理“检索与否”的二元决策,对于需要多步推理的复杂问题,作用有限。

对于这三种复杂度,Adaptive-RAG分别采用三种策略来应对:

  1. 非检索方法(No Retrieval)

    :这是最直接的策略,直接利用LLM本身的知识库生成答案。适用于模型已经知道答案的简单问题,省去了外部检索的麻烦。

  2. 单步检索方法(Single-step Approach)

    :当问题需要额外信息时,这种方法先从外部知识源检索相关信息,再将检索到的文档作为上下文输入给LLM,帮它更准确地作答。适用于那些中等复杂度、需要一次额外信息检索的问题。

  3. 多步检索方法(Multi-step Approach)

    :对于最复杂的问题,需要从多个文档中综合信息并进行多步推理。这一方法通过迭代访问检索器和LLM,逐步构建出解决问题的信息链。适用于需要多步逻辑推理的复杂问题。

Adaptive-RAG的巧妙之处,在于它通过一个分类器来评估问题复杂度,再根据评估结果选择最合适的处理策略。分类器是一个较小的语言模型,被训练来预测传入查询的复杂度级别,并自动收集标签——这些标签来自模型预测结果和数据集固有的归纳偏置。

换句话说,它能在不同的检索增强LLM策略之间灵活切换,在处理各种复杂性问题时,实现效率与准确性的平衡。实验表明,与现有自适应检索方法相比,Adaptive-RAG在多个开放域问答数据集上都取得了更好的整体效率和准确性。

那么,这个分类器是如何训练出来的?整个过程涉及几个关键步骤:

  1. 定义复杂性标签

    :首先需要定义清晰的复杂度等级。在Adaptive-RAG中,通常分为三类:简单(A)、中等(B)和复杂(C)。简单问题由LLM直接回答,中等复杂度问题需要单步检索,而复杂问题则需要多步检索。

  2. 自动收集训练数据

    :由于没有现成的带复杂度标签的查询数据集,Adaptive-RAG通过两种策略自动构建训练集:

  • 策略一:从不同策略的预测结果中标注查询复杂度。如果非检索方法能正确生成答案,对应标签为简单(A);如果单步检索和多步检索都能正确回答,而非检索方法失败,对应标签为中等(B);如果只有多步检索方法能正确回答,对应标签为复杂(C)。

  • 策略二:利用基准数据集中的固有偏差来标注未标记的查询。例如,如果一个查询出现在单步数据集中但未被标记,自动分配标签为中等(B);若出现在多步数据集中,则自动分配为复杂(C)。

  • 3. 训练分类器

    :利用自动收集的查询-复杂度配对数据集,训练一个较小的语言模型作为分类器。它的目标是根据输入的问题预测复杂度级别。训练过程中使用交叉熵损失函数,并选择在验证集上表现最佳的迭代次数。

  • 4. 评估和优化分类器

    :训练完成后,对分类器的性能进行评估,包括准确率等指标。如果性能不足,可以通过调整模型结构、增加训练数据或改进标注策略来进一步优化。

  • 5. 集成到Adaptive-RAG框架

    :将训练好的分类器集成到框架中。在推理阶段,分类器用于预测新问题的复杂度,然后根据预测结果选择最合适的问答策略。

通过这套方法,Adaptive-RAG能够动态调整其查询处理策略,以适应不同复杂性的问题,从而有效提升问答系统的整体效率和准确性。

性能

上图展示了不同检索增强生成方法在问答任务中的性能和效率对比。这些方法包括:不使用检索的单步方法、自适应检索方法、多步方法,以及本文提出的Adaptive-RAG。横轴表示每个查询的处理时间,纵轴表示问答任务性能(通常用F1分数衡量)。

从图中可以直观地看到,Adaptive-RAG在应对各种复杂度的查询时,能在保持较高F1分数的同时,缩短每个查询的处理时间。这意味着,它在提高问答系统整体效率的同时,也增强了系统的准确性。

具体来说,不使用检索的单步方法在处理简单查询时效率很高,但面对复杂查询时,性能明显下滑。自适应检索和多步方法虽然能处理更复杂的查询,但效率上有所牺牲——特别是多步方法,处理时间显著增加。相比之下,Adaptive-RAG通过动态选择最合适的检索策略,在简单和复杂查询之间实现了有效平衡。这表明,它能够根据查询的实际需求灵活调整,从而在不同场景下都取得良好的性能。