【RAG 去噪】引入 NLI 模型来为 RAG 去噪

论文:Making Retrieval-Augmented Language Models Robust to Irrelevant Context

⭐⭐⭐

ICLR 2024, arXiv:2310.01558

Code: github.com/oriyor/ret-robust

论文速读

这篇论文引入 NLI(Natural Language Inference)模型来判定 retrieved doc 是否需要用于辅助 LLM 回答。

NLI 模型用于判定一个 hypothesis 与 premise 的关系如下三者之一:“蕴含(entailed)”、“中立(neutral)”、“矛盾(contradicted)”。具体到 RAG 中,question + LLM answer 作为 premise,retrieved doc 作为 hypothesis,由 NLI 模型判定两者是否是 entailed

  • 是的话,就辅助 LLM 再次生成 answer 作为最终答案
  • 不是的话,就使用标准的 LLM,防止无关上下文来分散 LLM 的注意力

该论文的工作,NLI 模型使用的是 BART-large

这其实这篇论文的假设是有问题的,以底座模型的答案作为基准来衡量检索信息是否是噪声,那其实把 RAG 通过检索召回额外信息增加 LLM 本身缺乏的知识的这部分的能力也损失了。这种假设在底座本身就能回答的问题上额外增加了相关召回信息,可能会让底座的答案更加详细精准。但是底座本身不能回答或者回答错误的部分,那基于底座的答案去做噪声判断会让让模型错上加错

此外,该论文工作还尝试训练一个健壮的用于 RAG 的 LLM。因为作者认为,原生的 LLM 由于其没有在 retrieved passages 上做训练,所以它对噪音上下文很脆弱是可以预料的。为此,作者特意收集一批带有噪音文档的数据来对 LLM 做 SFT,数据的收集其实就是将检索到的 top-1 和排名较低的文档共同作为 retrieved context。这种做法其实就是在训练样本中强行引入噪声,让模型学习识别噪声的能力,当引入噪声信息时能够基于底座本身具有的知识正确作答

实验结果

通过实验发现,论文提出的采用 NLI 来识别无关文档的方法,由于其假设有点问题,导致其底座模型在本身信息缺失的情况西,做降低 RAG 的性能,因为它把与底座答案不一致的正确信息都过滤了。

另外,使用含有噪音检索上下文的数据来对底座模型做 SFT 之后,即便加入不相关的召回信息都可以让 RAG 模型变好,这说明引入噪声做 SFT 的方式可以有助于帮助 RAG 模型在一定程度上去除噪声带来的影响。

反思

  • 在实际业务落地上可以借鉴引入随机噪声的思想,在 sft 阶段不仅只加入最相关的召回结果,同时以一定的比例加入随机召回信息作为噪声,可以提升模型识别噪声的能力,在线上推理阶段,如果 top 的召回信息是不相关的错误信息,模型有一定的识别能力。
  • 我们其实可以在 RAG 的过程中增加判断召回文档是否相关,以及结合相关文档给出正确答案这样的 cot 任务,这样输出的内容不会过长,不会带来额外的线上推理耗时,同时也能一定程度上缓解 RAG 检索信息存在噪声的问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/838256.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CCF PTA 2022年11月C++学生会提名

【问题描述】 学生会选举要开始了。根据选举规则,首先由全体同学进行提名,每位同学可以从全体同学中提 名一名同学参选。选举时,会从全体同学的提名中选出一名学生会主席,再从三个年级分别的提名中 各选出一名副主席。现在&#…

【数据结构】堆(超详细)

文章目录 前言堆的概念及结构堆的实现堆的向下调整算法(建小堆为例)堆的向上调整算法(建小堆为例)堆的初始化销毁堆堆的插入堆的删除(规定删堆顶的数据)取堆顶元素判断堆是否为空获取堆的个数 完整代码(包括测试代码&a…

惠普发布全新AI战略,重塑办公空间 引领企业智能化新浪潮

近日、全球知名科技公司惠普在北京隆重举办了以“用智能,开启无限可能”为主题的2024惠普商用AI战略暨AI PC新品发布会,此次盛会标志着惠普在人工智能领域迈出了重要一步,惠普紧跟时代步伐,推出了更高效、更安全、更灵活的AI PC产…

大佬复活,暴打空头,两天拉升 180%

GME 暴打空头 大家还记得 2021 年,美国散户大战华尔街的新闻吗? 当时在推特上,几位大佬进行号召,吸引了大量散户往里冲,短短一个月,把一家业绩平平的美股公司「游戏驿站(GME)」拉升了…

怎么3d立面有些模型不能删除是什么原因怎么解决?---模大狮模型网

在进行3D建模和设计过程中,有时会遇到一些模型无法删除的情况,这可能会导致设计流程受阻,影响工作效率。本文将介绍在3D立面中遇到无法删除模型的原因以及解决方法,帮助您顺利解决这一问题,提高设计效率。 一、模型未正…

地平线X3开发板配置wifi调试

1. 系统镜像制作 系统镜像的制作依赖bsp与补丁包,bsp在天工开物全量包中:https://developer.horizon.ai/resource 补丁下载链接:链接:https://pan.baidu.com/s/1YKcOWL0EpboGq-SnqwIGeQ 提取码:b6lf 补丁包中有详细…

golang实现普通升管理员权限

golang实现普通升管理员权限 package mainimport ("fmt""os""path/filepath""runtime""syscall""unsafe""golang.org/x/sys/windows""golang.org/x/sys/windows/registry" )var (modntdll …

认识数据库,及 MySQL数据库的基本使用

数据库 1.1 数据库的基本概念 1.2 常见的数据库及分类 市面上的数据库有很多种,最常见的数据库有如下几个: MySQL 数据库(目前使用最广泛、流行度最高的开源免费数据库;Community Enterprise) Oracle 数据库&…

这 10 个 Linux 命令,我不允许你还不知道!

Linux当中有很多比较有趣的命令,可以动手看看,很简单的。 1.rev命令 一行接一行地颠倒所输入的字符串。 运行: $rev 如输入:shiyanlou shiyanlou 2.asciiview命令 1.先安装aview $sudo apt-get install aview 2.再安装im…

【吃透Java手写】6-Netty-NIO-BIO-简易版

Netty 1 BIO&NIO模型 1.1 BIO 在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要对每个请求建立一堆线程等待请求&…

TikTok Shop认知课 打通TK小店全流程

资料 001-先导课.mp4 002-如何用思维导图工具做课程笔记.mp4 003-TTS入驻模式.mp4 004-如何获取店铺.mp4 005-TTS店铺注册全流程,mp4 006-店铺整体运营思路.mp4 007-运营的几个误区.mp4 008-新店起店准备工作,mp4 009-规店铺风控注意事项,mp4 010-店铺基础设置之店铺…

基于火山引擎云搜索的混合搜索实战

在搜索应用中,传统的 Keyword Search 一直是主要的搜索方法,它适合精确匹配查询的场景,能够提供低延迟和良好的结果可解释性,但是 Keyword Search 并没有考虑上下文信息,可能产生不相关的结果。最近几年,基…

单文件组件,为什么要使用 SFC

介绍 Vue 的单文件组件 (即 *.vue 文件&#xff0c;英文 Single-File Component&#xff0c;简称 SFC) 是一种特殊的文件格式&#xff0c;使我们能够将一个 Vue 组件的模板、逻辑与样式封装在单个文件中。下面是一个单文件组件的示例&#xff1a; <script setup> impor…

机器学习_朴素贝叶斯

机器学习_朴素贝叶斯 朴素贝叶斯算法&#xff08;Naive Bayes Algorithm&#xff09;是一种基于贝叶斯定理与特征条件独立假设的分类方法。该算法假设给定目标值时&#xff0c;各个特征之间相互独立。朴素贝叶斯算法通过训练数据集学习联合概率分布&#xff0c;并基于此模型&a…

优秀博士学位论文分享:复杂场景下高精度有向目标检测的研究

优秀博士学位论文代表了各学科领域博士研究生研究成果的最高水平&#xff0c;本公众号近期将推出“优秀博士学位论文分享”系列文章&#xff0c;对人工智能领域2023年优秀博士学位论文进行介绍和分享&#xff0c;方便广大读者了解人工智能领域最前沿的研究进展。 “博士学位论…

C++11 新特性 常量表达式 constexpr

为了解决常量无法确定的问题&#xff0c;C11在新标准中提出了关键字constexpr&#xff0c;它能够有效地定义常量表达式&#xff0c;并且达到类型安全、可移植、方便库和嵌入式系统开发的目的。 一、常量的不确定性 在C11标准以前&#xff0c;我们没有一种方法能够有效地要求一…

UBUNTU下CMAKE指定执行文件运行时查找库的路径

在Ubuntu下&#xff0c;使用CMake时&#xff0c;如果需要指定执行文件运行时库的搜索路径&#xff0c;可以在CMakeLists.txt文件中通过set_target_properties命令来设置。 以下是一个示例&#xff0c;假设你的目标是一个名为my_application的可执行文件&#xff0c;你想要添加…

LLama3大模型本地部署 仅需6步完成对话模型本地安装部署。附送可视化ui安装、自定义模型目录,修改模型保存地址,第三方微调模型、中文模型下载地址

本篇分为三部分 一&#xff1a;6步完成llama3大模型本地部署 二&#xff1a;8步完成llama3可视化对话界面安装 三&#xff1a;重设模型文件路径 四&#xff1a;微调模型、中文模型下载资源分享 一、LLama3 大模型本地部署安装 首先去mata官网下载ollama客户端 Ollama 选择合适…

如何使用正则表达式避免生成空字符串

在字符串处理中&#xff0c;我们经常需要将字符串根据特定的分隔符拆分成多个子字符串。Java 中的 split 方法可以很好地完成这项任务。但是&#xff0c;在使用 split 方法时&#xff0c;如果分隔符连续出现&#xff0c;可能会生成空字符串。 可以使用正则表达式避免生成空字符…

linux 环境下 分布式文件搭建fastDFS

1.软件信息 地址&#xff1a;happyfish100 (YuQing) GitHub 1.fastdfs-master.zip 2.fastdfs-nginx-module-master.zip 3.libfastcommon-master.zip 4.libserverframe-master.zip yum install make cmake gcc gcc-c perl 2.安装libfastcommon unzip libfastcommon-mast…