【LLM之RAG】Adaptive-RAG论文阅读笔记
研究背景
文章介绍了大型语言模型(LLMs)在处理各种复杂查询时的挑战,特别是在不同复杂性的查询处理上可能导致不必要的计算开销或处理不足的问题。为了解决这一问题,文章提出了一种自适应的查询处理框架,动态选择最合适的策略,从而提高整体效率和准确性 。
研究目标
目标是开发一种自适应框架,该框架能够根据查询的复杂性动态选择最适合的检索增强语言模型策略,从简单到复杂的策略不等。
相关工作
开放域问答:这类任务通常涉及两个模块:检索器和阅读器。随着具有千亿参数的超强推理能力的LLM的出现,LLM和检索器之间的协同作用已经取得了显著进展。然而,尽管在单跳检索增强LLM方面取得了进展,但某些查询的复杂性需要更复杂的策略。
多跳问答:多跳问答(Multi-hop QA)是常规开放域问答(Open-domain QA)的扩展,需要系统全面收集和将多个文档的信息作为上下文回答更复杂的查询。首先将多跳查询分解为更简单的单跳查询,重复访问LLM和检索器来解决这些子查询,并合并它们的答案以形成完整答案。这种查询的缺点是:每个查询迭代访问LLM和检索器可能效率极低,因为有些查询可能足够简单,可以通过单一检索步骤甚至仅通过LLM本身来回答。
自适应检索:为了处理不同复杂性的查询,自适应检索策略根据每个查询的复杂性动态决定是否检索文档。根据实体的频率来确定查询的复杂性级别,并建议仅当频率低于一定阈值时才使用检索模块。然而,这种方法仅关注于检索与否的二元决策,可能不足以解决需要多个推理步骤的更复杂的查询。
方法论
数据处理
定义复杂性标签:首先,需要定义问题的复杂性等级。在Adaptive-RAG中,通常有三个类别:简单(A)、中等(B)和复杂(C)。简单问题可以直接由LLM回答,中等复杂度问题需要单步检索,而复杂问题则需要多步检索和推理。
自动收集训练数据:由于没有现成的带有复杂性标签的查询数据集,Adaptive-RAG通过两种策略自动构建训练数据集:
- 从不同Retrieval-Augmented LLM策略的预测结果中标注查询的复杂性。
如果非检索方法能够正确生成答案,则对应问题的标签为简单(A);
如果单步检索方法和多步检索方法都能正确回答,而非检索方法失败,则对应问题的标签为中等(B);
如果只有多步检索方法能够正确回答,则对应问题的标签为复杂(C)。 - 利用基准数据集中的固有偏差来标注未标记的查询。
例如,如果一个查询在单步数据集中未被标记,则自动分配标签为中等(B);
如果在多步数据集中未被标记,则自动分配标签为复杂(C)。
解决方案
Adaptive Retrieval-Augmented Generation (Adaptive-RAG) 是一种新颖的问答框架,它能够根据问题的复杂性动态选择最适合的策略来处理Retrieval-Augmented LLM。这三种策略包括:
- 非检索方法(No Retrieval):这是最简单的策略,直接使用LLM本身的知识库来生成答案。这种方法适用于那些模型已经知道答案的简单问题,不需要额外的外部信息。
- 单步检索方法(Single-step Approach):当问题需要额外的信息时,这种方法会先从外部知识源检索相关信息,然后将检索到的文档作为上下文信息输入到LLM中,帮助模型生成更准确的答案。这种方法适用于需要一次额外信息检索的中等复杂度问题。
- 多步检索方法(Multi-step Approach):对于最复杂的问题,需要从多个文档中综合信息并进行多步推理。这种方法通过迭代地访问检索器和LLM,逐步构建起解决问题所需的信息链。这种方法适用于需要多步逻辑推理的复杂问题。
Adaptive-RAG的核心在于它能够通过分类器来评估问题的复杂性,然后根据评估结果选择最合适的处理策略。分类器是一个较小的语言模型,它被训练用来预测query的复杂度。通过这种方式,Adaptive-RAG能够灵活地在不同的Retrieval-Augmented LLM策略之间进行切换,从而在处理各种复杂性的问题时,实现更高的效率和准确性。
实验
实验设计
研究中使用的数据集包括单跳和多跳问题,涵盖了从简单到复杂的查询。数据来源于开放域问答数据集,这些数据集经常用于评估问答系统的性能。
- SQuAD v1.1 (Rajpurkar et al., 2016):通过阅读文档撰写问题的方式创建。
- Natural Questions (Kwiatkowski et al., 2019):基于Google搜索的真实用户查询构建。
- TriviaQA (Joshi et al., 2017):由各种小测验网站提供的琐碎问题组成。
- MuSiQue (Trivedi et al., 2022a):通过组合多个单跳问题形成涉及2-4个跳转的查询。
- HotpotQA (Yang et al., 2018):通过链接多个维基百科文章由注释者创建的问题。
- 2WikiMultiHopQA (Ho et al., 2020):源自维基百科及其相关知识图谱路径,需要2跳处理。
评估指标包括有效性和效率两大类:
- 有效性:使用F1得分、EM(精确匹配)和准确率(Accuracy, Acc)来评估模型预测的答案与真实答案之间的匹配程度。
- 效率:测量回答每个查询所需的检索和生成步骤数以及与单步策略相比的平均响应时间。
实验结论
实验结果显示,Adaptive-RAG在处理复杂查询时,比传统的检索增强方法更有效,尤其是在资源利用效率上。例如,在使用不同大小模型(如GPT-3.5和FLAN-T5系列)进行测试时,Adaptive-RAG在处理多步查询的场景中,表现出更高的准确率和效率 。
参考资料
- 论文
- 代码
相关文章:

【LLM之RAG】Adaptive-RAG论文阅读笔记
研究背景 文章介绍了大型语言模型(LLMs)在处理各种复杂查询时的挑战,特别是在不同复杂性的查询处理上可能导致不必要的计算开销或处理不足的问题。为了解决这一问题,文章提出了一种自适应的查询处理框架,动态选择最合…...
介绍react
什么是React React是一个用于构建用户界面的JavaScript库。 传统构建页面的方式 <script>document.getElementById(app).addEventListener(click, () > {console.log()});const div docuemnt.createElement(div)// ... </script> 早期,用JavaSc…...

网络爬虫概述
自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 网络爬虫(又被称为网络蜘蛛、网络机器人,在某社区中经常被称为网页追逐者),可以按照指定的规则&#…...

取证工作: SysTools SQL Log Analyzer, 完整的 SQL Server 日志取证分析
天津鸿萌科贸发展有限公司是 Systools 系列软件的授权代理商。 SysTools SQL Log Analyzer 是 Systools 取证工具系列之一,用于调查 SQL Server 事务日志,以对数据库篡改进行取证分析。 什么是 SQL Server 事务日志? 在深入研究 SQL 事务日…...

蓝牙耳机怎么连接电脑?轻松实现无线连接
蓝牙耳机已经成为许多人生活中不可或缺的一部分,不仅可以方便地连接手机,还能轻松连接电脑,让我们在工作和娱乐时享受无线的自由。然而,对于一些用户来说,将蓝牙耳机与电脑连接可能会遇到一些问题。本文将介绍蓝牙耳机…...

4.音视频 AAC SSAASS
目录 AAC 1.什么是ADIF和ADTS? 2.ADTS的数据结构是怎样的? SSA/ASS 1.SSA/ASS的基本结构 AAC AAC(Advanced Audio Coding,高级音频编码)是一种声音数据的文件压缩格式。AAC分为ADIF和ADTS两种文件格式。 1.什么是ADIF和ADTSÿ…...

每日5题Day24 - LeetCode 116 - 120
每一步向前都是向自己的梦想更近一步,坚持不懈,勇往直前! 第一题:116. 填充每个节点的下一个右侧节点指针 - 力扣(LeetCode) /* // Definition for a Node. class Node {public int val;public Node left;…...

在笔记本电脑上使用 LLMs 的 5 种方法
在网上使用 ChatGPT 很简单,只需有网络连接和好的浏览器即可。但这样做可能会泄露您的隐私和数据。OpenAI 存储了您的提示和其他元数据以重新训练模型。对于一些人来说可能不成问题,但注重隐私的人可能更愿意在本地使用这些模型,不受外部跟踪…...

Linux内存从0到1学习笔记(8.15 MMU/IOMMU/SMMU概览)
一, 什么是MMU? MMU(Memory Management Unit 内存管理单元),即内存管理单元,是计算机硬件中的一个重要组件,主要负责处理中央处理器(CPU)的内存访问请求。 其工作原理如下: 当程序发出内存访问请求,包括读取或写入操作以及逻辑地址(虚拟地址)。然后,MMU根据页表…...
Intellij IDEA中怎么配置Maven?
在IntelliJ IDEA中配置Maven非常简单,以下是详细步骤: 步骤1:安装Maven 首先确保你的计算机上已经安装了Maven。如果没有安装,你可以从Apache Maven官网下载并安装:https://maven.apache.org/download.cgi 步骤2&am…...

操作系统-内存管理
虚拟内存 操作系统会提供⼀种机制,将不同进程的虚拟地址和不同内存的物理地址映射起来。 两个概念: 程序所使⽤的内存地址叫做虚拟内存地址(Virtual Memory Address)实际存在硬件⾥⾯的空间地址叫物理内存地址(Physi…...
C++中的解释器模式
目录 解释器模式(Interpreter Pattern) 实际应用 算术表达式解释器 布尔表达式解释器 总结 解释器模式(Interpreter Pattern) 解释器模式是一种行为设计模式,它定义了一种语言的文法表示,并使用解释器…...

用 C 语言实现求补码的运算
缘起 前两天程序中需要求一堆参数的补码,一时犯懒,想从CSDN上搜一个勉强能用的代码借鉴一下,结果几乎没有搜到一个靠谱的!这种求补码的操作,用脚趾头想想也应该知道要用C或者C的位运算来实现呀。结果搜到的一些实现方…...
python下载文件
import urllib.request url "http://****/storage/x4MigEhU6BGAuTqjrRfIBky0S2aMmkyGl4UzTqUb.png"#下载地址 path "ddad.png"#保存路径,保存项目路径 urllib.request.urlretrieve(url, path)...
JMU 数科 数据库与数据仓库期末总结(1)
本章根据老师给出的知识点作进一步相对生动一点的解释。 不保证完全正确。 先给出总的知识点,再给出生动解释。 知识点 数据模型通常由三部分组成:数据结构、数据操作和完整性约束。关系模式中主码的取值必须唯一且非空,这是实体完整性的…...

前端问题整理
Vue vue mvvm(Model-View-ViewModel)架构模式原理 Model 是数据层,即 vue 实例中的数据View 是视图层, 即 domViewModel,即连接Model和Vue的中间层,Vue实例就是ViewModelViewModel 负责将 Model 的变化反映…...

【实践功能记录6】表格列悬浮展示tooltip信息
需求描述: 鼠标悬浮在表格的IP字段上时,使用tooltip展示IP信息,如图: 1.封装根据IP展示信息的组件 请求接口获取IP信息,注意请求接口时防抖 <!-- 根据IP展示资产信息 --> <template><div><el-…...

AI论文速读 | 2024[SIGIR]基于大语言模型的下一个兴趣点推荐
论文标题:Large Language Models for Next Point-of-Interest Recommendation 作者:Peibo Li ; Maarten de Rijke ; Hao Xue (薛昊); Shuang Ao ; Yang Song ; Flora D. Salim 机构:新南威尔士大学(UNSW),…...

Rust 实战丨通过实现 json! 掌握声明宏
在 Rust 编程语言中,宏是一种强大的工具,可以用于在编译时生成代码。json! 是一个在 Rust 中广泛使用的宏,它允许我们在 Rust 代码中方便地创建 JSON 数据。 声明宏(declarative macros)是 Rust 中的一种宏࿰…...

vue+elementUI实现在表格中添加输入框并校验的功能
背景: vue2elmui 需求: 需要在一个table中添加若干个输入框,并且在提交时需要添加校验 思路: 当需要校验的时候可以考虑添加form表单来触发校验,因此需要在table外面套一层form表单,表单的属性就是ref…...

国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...

从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...

Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
QT3D学习笔记——圆台、圆锥
类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...

C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...