RbFT:针对RAG中检索缺陷的鲁棒性微调
今天给大家分享一篇最新的RAG论文:
论文题目:Enhancing Retrieval-Augmented Generation: A Study of Best Practices
论文链接:https://arxiv.org/pdf/2501.18365
论文代码:https://github.com/StibiumT16/Robust-Fine-tuning
研究动机
这篇论文旨在提高大型语言模型(LLMs)在检索增强型生成(Retrieval-Augmented Generation, RAG)系统中对检索缺陷的鲁棒性。具体来说,论文关注以下几个关键问题:
1. 检索缺陷的影响
RAG系统通过整合来自知识库的外部知识来增强LLMs,但其有效性受限于检索器和知识库的可靠性。现实世界中的检索器和知识库可能存在缺陷,导致检索到的文档包含不准确、不相关或误导性的信息。这会影响LLMs生成准确响应的能力,从而降低RAG系统的性能和可靠性。
2. 提高LLMs的鲁棒性
为了应对检索缺陷,论文提出了一种名为**Robust Fine-Tuning (RbFT)**的方法。该方法通过两个针对性的微调任务来增强LLMs对检索缺陷的抵抗力:
- 缺陷检测(Defects Detection):识别检索结果中的缺陷,例如不准确或不相关的信息。
- 效用提取(Utility Extraction):从检索结果中提取有用的信息,即使存在缺陷。
这两个任务共同提升了LLMs在面对有缺陷检索结果时生成准确响应的能力。
3. 保持高效率和兼容性
在提高鲁棒性的同时,RbFT还保持了高推理效率,并且能够与其他鲁棒性技术兼容。
相关研究
1. RAG框架和扩展:
-
Parametric RAG [43]:通过将检索文档离线参数化,直接将检索文档注入LLM参数中,以实现知识注入而不扩展输入上下文。
-
GraphRAG [12, 16, 32]:利用预构建的知识图谱检索与给定查询相关的图元素,这种方法在依赖结构化和关系信息的任务中表现出改进。
-
Dynamic RAG [20, 41, 42]:在生成过程中动态触发检索模块,以处理LLM在生成过程中的不确定性。
2. RAG系统的鲁棒性:
-
Adversarial Addition and Modification [10]:展示了自动化事实核查系统在面对合成对抗性证据时的脆弱性。
-
Misinformation and Corruption [30, 31]:探索了虚假信息(无论是手工制作还是由LLM生成)对开放域问答(ODQA)系统的威胁。
-
PoisonedRAG [61], GARAG [6] 和 Phantom [3]:通过在知识库中注入恶意文本,操纵LLM生成特定错误或有害的响应。
3. 针对RAG系统鲁棒性的策略:
-
Wellner et al. [52]:通过查询增强和基于答案冗余的新型置信度方法来提高鲁棒性。
-
RobustRAG [53]:采用“隔离然后聚合”策略,独立生成每个检索文档的答案,然后聚合这些答案以产生最终输出。
-
InstructRAG [51]:通过生成自合成的解释性理由来显式地对检索内容进行去噪,增强RAG系统的鲁棒性。
-
CRAG [54] 和 AstuteRAG [48]:通过从不同来源精炼和整合知识来提高知识利用和增强生成答案的鲁棒性。
这些相关工作主要关注于通过改进检索质量、优化检索流程或重组知识表示来提高RAG系统的鲁棒性。与这些工作不同,本文提出的RbFT方法专注于增强LLM的固有防御能力,通过减少对外部检索的依赖来根本上提高RAG系统的鲁棒性。
核心内容

论文通过提出Robust Fine-Tuning(RbFT)方法来解决检索增强型生成(RAG)系统对检索缺陷的脆弱性问题。RbFT方法包含两个主要的微调任务,旨在增强大型语言模型(LLMs)对检索缺陷的鲁棒性:
- 缺陷检测(Defects Detection):
-
此任务旨在训练LLM识别检索到的文档是否有助于回答用户的查询。
-
如果文档无用,LLM还需要将其分类为三种缺陷类型之一:噪声文档、不相关文档或反事实文档。
-
通过将原始检索文档替换为有缺陷的文档,并以一定的概率进行训练,增强LLM对输入的批判性评估能力。

- 效用提取(Utility Extraction):
-
此任务旨在训练LLM从有缺陷的检索结果中提取尽可能多的有用信息。
-
LLM可以直接利用提取的相关信息,或者利用相关上下文激活其内部的参数知识以生成正确答案。
-
同时,效用提取训练还使LLM能够直接且高效地处理低质量或受污染的上下文,而无需事先清理。

通过联合训练这两个任务,RbFT使LLM在复杂输入环境中提高对干扰的抵抗力,从而增强RAG系统的整体鲁棒性。具体来说,RbFT通过以下方式解决问题:
-
增强LLM的自我检测和提取能力:使LLM能够在现实世界的场景中保持高效和准确的输出,即使面对不完美或恶意的检索结果。
-
减少对外部检索的依赖:通过直接在LLM上进行训练,以提高其处理有缺陷检索输入的能力,从而根本上增强RAG系统的鲁棒性。
-
提高系统效率:RbFT只对LLM进行微调,保持了与原始RAG相当的推理速度,同时提供了更好的性能和鲁棒性。
论文通过广泛的实验评估表明,RbFT在各种检索缺陷条件下的性能均显著优于现有的最先进方法,证明了其在提高RAG系统鲁棒性方面的有效性。
论文实验
论文中进行了一系列实验来评估Robust Fine-Tuning (RbFT)方法的有效性,具体实验包括:
数据集和评估指标
-
数据集:实验在三个广泛使用的问答(QA)数据集上进行:
- Natural Questions (NQ)
- HotpotQA (HQA)
- TriviaQA (TQA)
这些数据集涵盖了事实性问答和多跳问答任务。
-
评估指标:使用标准的QA评估指标:
- 精确匹配(Exact Match, EM)
- 令牌级别的F1分数(F1)
基线比较
RbFT与以下几种方法进行比较:
- No RAG
- Vanilla RAG
- 四种针对RAG系统的最先进的鲁棒性方法:
- RobustRAG
- CRAG
- InstructRAG
- AstuteRAG

数据生成
-
通过不同的方法模拟三种类型的缺陷文档:
- 噪声文档
- 不相关文档
- 反事实文档
-
使用不同的方法生成噪声和不相关文档,而反事实文档则采用两步生成策略。

实现细节
-
使用LLaMA-Factory工具包对两个LLMs进行微调:
- Llama-3.2-3B-Instruct
- Qwen2.5-3B-Instruct
-
微调进行了2个epoch,学习率为1e-5,每个设备的批次大小为16。
-
在评估阶段,使用不同的𝜏值(0.2, 0.4, 0.6, 0.8, 1.0)来模拟不同程度的检索缺陷,并特别关注:
- 𝜏 = 0.4(Normal设置)
- 𝜏 = 1.0(Hard设置)
主要结果
-
展示了在不同检索缺陷条件下所有方法的性能,包括在以下设置下的平均结果:
- Clean(𝜏 = 0)
- Normal(𝜏 = 0.4)
- Hard(𝜏 = 1.0)
-
评估了RbFT在平衡有效性和鲁棒性方面的表现,并与其他方法进行了比较。

消融研究
- 对RbFT中的两个微调任务进行了消融实验,以探索它们各自的角色和相互补充的效果:
- Defects Detection(缺陷检测)
- Utility Extraction(效用提取)

案例研究
- 通过分析LLMs在不同检索缺陷下对输入文档的注意力分布,进一步分析了RbFT如何增强LLM的防御能力。
效率分析
- 评估了不同方法在推理期间的时间效率,报告了每个RAG系统处理单个用户查询所需的平均时间。
论文总结
总体而言,这篇论文针对RAG系统在面对检索缺陷时的脆弱性问题,提出了一种有效的鲁棒性提升方法RbFT,并在多个数据集上验证了其有效性,为实际应用中提高RAG系统的鲁棒性提供了有价值的解决方案。
相关文章:
RbFT:针对RAG中检索缺陷的鲁棒性微调
今天给大家分享一篇最新的RAG论文: 论文题目:Enhancing Retrieval-Augmented Generation: A Study of Best Practices 论文链接:https://arxiv.org/pdf/2501.18365 论文代码:https://github.com/StibiumT16/Robust-Fine-tuning 研…...
证明: 极限的局部有界性
在考研数学中,极限的局部有界性是一个非常重要的概念,尤其是在讨论函数的连续性、可积性和可微性等性质时。局部有界性可以帮助我们理解函数在某些区域内的行为。 定理: 如果 lim x → x 0 f ( x ) L \lim_{x \to x_0} f(x) L limx→x0…...
51单片机俄罗斯方块计分函数
/************************************************************************************************************** * 名称:scoring * 功能:计分 * 参数:NULL * 返回:NULL * 备注:采用非阻塞延时 ****************…...
new 以及 call、apply、bind 关键字解析
1.new关键字 自动创建对象:使用new调用构造函数时,会自动创建一个空对象,并将其赋值给this。你不需要显式地使用{}来创建对象。 绑定this到新对象:构造函数内部的this指向新创建的对象,因此可以在构造函数中为新对象添…...
【用Deepseek搭建免费的个人知识库--综合教程(完整版)】第二篇:Ollama服务器
用Deepseek搭建免费的个人知识库–综合教程(完整版):第二篇:Ollama服务器部署 OLLAMA服务器的配置在很多网上都已经介绍的非常清楚了,我们的重点不在于那些简单的步骤,而是在需要为下一步做准备的地方更加…...
【图片合并转换PDF】如何将每个文件夹下的图片转化成PDF并合并成一个文件?下面基于C++的方式教你实现
医院在为患者进行诊断和治疗过程中,会产生大量的医学影像图片,如 X 光片、CT 扫描图、MRI 图像等。这些图片通常会按照检查时间或者检查项目存放在不同的文件夹中。为了方便医生查阅和患者病历的长期保存,需要将每个患者文件夹下的图片合并成…...
从基础到人脸识别与目标检测
前言 从本文开始,我们将开始学习ROS机器视觉处理,刚开始先学习一部分外围的知识,为后续的人脸识别、目标跟踪和YOLOV5目标检测做准备工作。我采用的笔记本是联想拯救者游戏本,系统采用Ubuntu20.04,ROS采用noetic。 颜…...
Elasticsearch:在 Elastic 中玩转 DeepSeek R1 来实现 RAG 应用
在这个春节,如一声春雷,DeepSeek R1 横空出世。现在人人都在谈论 DeepSeek R1。这个大语言模型无疑在中国及世界的人工智能发展史上留下了重要的里程碑。那么我们改如何结合 DeepSeek R1 及 Elasticsearch 来实现 RAG 呢?在之前的文章 “使用…...
寒假2.6--SQL注入之布尔盲注
知识点 原理:通过发送不同的SQL查询来观察应用程序的响应,进而判断查询的真假,并逐步推断出有用的信息 适用情况:一个界面存在注入,但是没有显示位,没有SQL语句执行错误信息,通常用于在无法直接…...
CTF中特别小的EXE是怎么生成的
我们在打CTF时候,出题的爷爷们给出的exe都很小 就10k左右,有的甚至就5k,那时候我很郁闷啊。现在我也能了啊哈哈 不多bb按如下操作: 我们来看看正常的release生成的代码# Copy #include "windows.h" int main(){ Messa…...
git rebase 和 git merge的区别
Rebase 可使提交树变得很干净, 所有的提交都在一条线上。 Merge 则是包含所有的调试记录,合并之后,父级的所有信息都会合并在一起 Rebase 修改了提交树的历史 比如, 提交 C1 可以被 rebase 到 C3 之后。这看起来 C1 中的工作是在 C3 之后进行的…...
Gitlab中如何进行仓库迁移
需求:之前有一个自己维护的新仓库A,现在需要将这个仓库提交并覆盖另一个旧的仓库B,需要保留A中所有的commit信息。 1.方法一:将原有仓库A导出后再导入到新的仓库B中 适用场景:新的仓库B是一个待建仓库,相当…...
LabVIEW 开发航天项目软件
在航天项目软件开发中,LabVIEW 凭借其图形化编程优势被广泛应用。然而,航天项目的高可靠性、高精度及复杂环境适应性要求,使得在使用 LabVIEW 开发时,有诸多关键要点需要特别关注。本文将详细分析在开发航天项目软件时需要重点注意…...
深度整理总结MySQL——MySQL加锁工作原理
MySQL加锁工作原理 前言前置知识- 锁为什么加在索引上锁的粒度优化提高并发性避免全表扫描优化死锁处理解决幻读问题 什么SQL语句会加行级锁MySQL是如何加行级锁场景模拟代码唯一索引等值查询退化为记录锁为什么会退化为记录锁分析加了什么锁为什么会退化为间隙锁为什么我可以插…...
kafka专栏解读
kafka专栏文章的编写将根据kafka架构进行编写,即先编辑kafka生产者相关的内容,再编写kafka服务端的内容(这部分是核心,内容较多,包含kafka分区管理、日志存储、延时操作、控制器、可靠性等),最后…...
1-portal认证功能
很多时候公共网络需要提供安全认证功能,比如我们去星巴克或者商场、酒店,我们连接wifi上网的时候, 需要认证后才可以上网。 用户可以主动访问已知的Portal认证网站,输入用户名和密码进行认证,这种开始Portal认证的方式…...
MySQL面试题合集
1.MySQL中的数据排序是怎么实现的? 回答重点 排序过程中,如果排序字段命中索引,则利用 索引排序。 反之,使用文件排序。 文件排序中,如果数据量少则在内存中排序, 具体是使用单路排序或者双路排序。 如果数据大则利用磁盘文件进行外部排序,一 般使用归并排序。 知识…...
spring学习(druid、c3p0的数据源对象管理)(案例学习)
目录 一、博客引言。 二、阿里云-druid案例准备(依赖坐标、配置文件、测试类)。 (1)初始依赖坐标、配置文件与测试类。 (2)导入阿里云-druid依赖坐标。 (3)DruidDataSource。 (4)set…...
WordPress博客在fnOS环境下的极简搭建与公网地址配置指南
文章目录 前言1. Docker下载源设置2. Docker下载WordPress3. Docker部署Mysql数据库4. WordPress 参数设置5. 飞牛云安装Cpolar工具6. 固定Cpolar公网地址7. 修改WordPress配置文件8. 公网域名访问WordPress 前言 你是否曾经为搭建自己的网站而头疼不已?是不是觉得…...
【PG】DROP TABLE ... CASCADE
问题 ERROR: cannot drop table wx_user_tag because other objects depend on it DETAIL: default value for column id of table wx_user_tag depends on sequence wx_user_tag_id_seq HINT: Use DROP … CASCADE to drop the dependent objects too. 解决 这个错误消息表…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...
FFmpeg avformat_open_input函数分析
函数内部的总体流程如下: avformat_open_input 精简后的代码如下: int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...
《Offer来了:Java面试核心知识点精讲》大纲
文章目录 一、《Offer来了:Java面试核心知识点精讲》的典型大纲框架Java基础并发编程JVM原理数据库与缓存分布式架构系统设计二、《Offer来了:Java面试核心知识点精讲(原理篇)》技术文章大纲核心主题:Java基础原理与面试高频考点Java虚拟机(JVM)原理Java并发编程原理Jav…...
高分辨率图像合成归一化流扩展
大家读完觉得有帮助记得关注和点赞!!! 1 摘要 我们提出了STARFlow,一种基于归一化流的可扩展生成模型,它在高分辨率图像合成方面取得了强大的性能。STARFlow的主要构建块是Transformer自回归流(TARFlow&am…...
麒麟系统使用-进行.NET开发
文章目录 前言一、搭建dotnet环境1.获取相关资源2.配置dotnet 二、使用dotnet三、其他说明总结 前言 麒麟系统的内核是基于linux的,如果需要进行.NET开发,则需要安装特定的应用。由于NET Framework 是仅适用于 Windows 版本的 .NET,所以要进…...
【笔记】AI Agent 项目 SUNA 部署 之 Docker 构建记录
#工作记录 构建过程记录 Microsoft Windows [Version 10.0.27871.1000] (c) Microsoft Corporation. All rights reserved.(suna-py3.12) F:\PythonProjects\suna>python setup.py --admin███████╗██╗ ██╗███╗ ██╗ █████╗ ██╔════╝…...
