【RAG 论文】AAR:训练一个LLM喜欢的检索器来做RAG

论文:Augmentation-Adapted Retriever Improves Generalization of Language Models as Generic Plug-In
⭐⭐⭐
ACL 2023, Tsinghua & Microsoft,arXiv:2305.17331

论文速读

以往 RAG 的工作通常联合微调 retriever 和 LLM 导致紧密耦合,但经常是 LLM 作为一个 black-box 是无法微调的。

本文提出 AAR(Augmented-Adapted Retriever)模型:它选择一个小型的 encoder-decoder 架构的 LM 作为 source LM,并让 retriever 学习 LM 的 preference(“偏好”),从而让 retriever 适配 LM,由于本工作发现不同的 LM 的 preference 是类似的,所以训练好的 retriever 可以作为一个"通用插件"用在不同的 LM 以及不同的 downstream tasks 上。

具体来说,有一个 pre-trained retriever,一个小型的 encoder-decoder LM 作为 source LM,有一个 NLP 任务作为 source task。对于一个 question,首先让 retriever 检索出 N 个 docs,然后利用 source LM 对这 N 个 docs 使用 FiD cross-attention 机制(FiDAtt)为每个 doc 计算出一个 attention score,然后根据 attention score 选出 Top-K 的 docs。这 Top-K 的 docs 与 human-labeled docs 做并集得到 positive docs,之后使用 ANCE 采样得到 negative docs。然后就可以拿 positives 和 negatives 来训练 retriever,从而得到 AAR。这样训练得到的 ARR 可以作为一个通用插件并用在未见过的 LLM 和 downstream tasks 上。整个过程的图示如下:

20240512221504

实验

在论文实验中,retriever 初始化自 Contriever 或者 ANCE,source LM 选择了 Flan-T5,source task 选择了 MS MARCO,因为 Contriever 和 ANCE 都在这个 task 做过微调。

这个模型经过实验,训练后的 AAR 在 PopQA task 上效果很好,在 MMLU task 上结果也还行。

消融实验发现:

  • 仅使用 human-labeled docs 和仅使用 FiDAtt 的 Top-K docs 作为 positive docs 都不如合并起来效果好。
  • 人类首选的文档和 LM 首选的文档之间的分布差距其实很大,人类也许认为可能一般的文档,LM 也许能从中在另一个角度得到辅助
  • 将 Flan-T5 Base 作为 source LM 竟然比 Flan-T5 Large 得到了更好的效果,随着 target LM 的尺寸增加,两种方法都达到了相当的性能,所以,在自适应增强训练阶段使用较小的 LM 作为 source LM 的选择是合理有效的。

对 LM preference 的文档进行分析,下图是人类偏好文档与 LM 偏好文档的重叠率的图:

20240512222947

可以看到,两种文档并不相似,差距还是挺大的,发现 LM 偏好的文档可以从其他角度来帮助 LM,而不是搜索用户喜欢的全部信息。这部分详细信息可以看原论文。

总结与分析

对这篇论文的一些想法:

  • 神奇的是,在一个 LLM 上得到的 preference 竟然可以迁移到其他 LLM,也许是可能大家的训练数据都差不多
  • FiD 是只能用于 encoder-decoder 架构的 LM,现在 decoder-only model 居多的情况下,需要做一些改进了,比如用于衡量 preference 的 score 也许可以由 LLM 直接生成,而不是间接通过 FiD 机制。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python网络爬虫原理及实践

1 网络爬虫 网络爬虫:是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。 网络爬虫相关技术和框架繁多,针对场景的不同可以选择不同的网络爬虫技术。 2 Scrapy框架(Python) 2.1. Scrapy架构 2.1.1. 系统…

每日两题 / 108. 将有序数组转换为二叉搜索树 543. 二叉树的直径(LeetCode热题100)

108. 将有序数组转换为二叉搜索树 - 力扣(LeetCode) 每次将数组对半分,数组的中点作为树的节点 先选择整个数组的中点作为根节点,然后选择对半分后的两个子数组的中点作为根节点的左右节点… /*** Definition for a binary tre…

【数据结构】总结建堆方式、建堆时间复杂度对比分析

目录 一、建堆方式 1.堆的实现中——HeapPush()插入建堆 2.手动建堆——利用AdjustUp()向上调整建堆 3.手动建堆——利用AdjustDown()向下调整建堆 二、手动建堆时间复杂度对比分析 1.向上调整建堆时间复杂度O(N*logN) 2.向下调整建堆时间复杂度O(N) 一、建堆方式 1.堆…

GENRE

1、整体设计 该工作(GENRE)在新闻推荐的场景下,用 LLM 构造了三个不同的prompts,分别来进行新闻摘要的改写,用户画像的构建,还有样本增强。 2、分模块介绍 摘要改写:把新闻的title,…

java1.8 的 client runtime compiler和server runtime compiler

你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…

南京观海微电子----开关电流与输入输出电流的关系

BOOST 结构的工作原理及波形 BOOST 结构简单原理图见图 1,工作时各点的电压电流波形见图 2。 不考虑上电时的情形,仅考虑稳定工作时,情况如下: 当开关管 Q 导通时(开关管电压为 0),电感 L 相当…

JVM的原理与性能

1 JVM 内存结构 1.1 运行时数据区 1.1.1 栈(虚拟机栈) 每个线程在创建时都会创建一个私有的Java虚拟机栈,在执行每个方法时都会打包成一个栈帧,存储了局部变量表、操作数栈、动态链接、方法出口等信息,然后放入栈中。…

实现echarts地图

效果图: 2.echarts.registerMap("xizang", XZ) 注册了一个名为 "xizang" 的地图,其中 XZ 是地图数据。 接下来是 option 对象,包含了图表的配置信息,比如图表的布局、提示框样式、地理组件配置和系列数据配置等。 在 t…

Day 28 MySQL的数据备份与恢复

数据备份及恢复 1.概述 ​ 所有备份数据都应放在非数据库本地,而且建议有多份副本 备份: 能够防止由于机械故障以及人为误操作带来的数据丢失,例如将数据库文件保存在了其它地方 冗余: 数据有多份冗余,但不等备份&…

vivado Virtex-7 配置存储器器件

Virtex-7 配置存储器器件 下表所示闪存器件支持通过 Vivado 软件对 Virtex -7 器件执行擦除、空白检查、编程和验证等配置操作。 本附录中的表格所列赛灵思系列非易失性存储器将不断保持更新 , 并支持通过 Vivado 软件对其中所列非易失性存储器 进行擦除、…

【Web后端】会话跟踪技术及过滤器

1.会话跟踪技术 1.1 会话的概念 在web应用中,浏览器和服务器在一段时间内发送请求和响应的连续交互的全过程 1.2 会话跟踪概念 对同一个用户跟服务器的连续请求和接收响应的监视过程 1.3 会话跟踪作用 浏览器和服务器是以http协议进行通信,http协议是…

day12-多线程

多线程 1.为什么要学习多线程 生活:流水线打工 public static void main(String[] args) { // 代码… for (int i 0; i < 10; i) { System.out.println(i); } // 代码... }多线程:多&#xff08;个&#xff09; 线程 1.1 进程和线程 线程&#xff1a;是进程中的…

Java日志总结

开发中&#xff0c;日志记录是不可或缺的一部分&#xff0c;应用日志的记录主要用于&#xff1a;记录操作轨迹数据、监控系统运行情况、系统故障定位问题&#xff0c;日志的重要性不言而喻&#xff0c;想要快速定位问题&#xff0c;日志分析是个重要的手段&#xff0c;Java也提…

企业信息系统的总体框架

1.信息系统体系结构的总体参考框架 信息系统的架构&#xff08;Information System Architecture&#xff0c;ISA&#xff09;中的Architecture含义具有丰富内涵和作用&#xff0c;相比计算机领域的Architecture来说它的单一性、片面性模型是难以描述ISA的全部的&#xff0c;IS…

docker八大架构之单机架构

单机架构 什么是单机架构&#xff1f; 单机架构指的是应用服务和数据库服务公用同一台服务器。如下边两个图所示&#xff0c;当我们进行购物时&#xff0c;所有的物品信息和用户信息都是在同一个服务器下进行运行的&#xff0c;之所以称为单机架构就是因为它所有的操作是在同…

文心一言 VS 讯飞星火 VS chatgpt (257)-- 算法导论19.2 1题

一、给出图19-4(m)中的斐波那契堆调用 FIB-HEAP-EXTRACT-MIN 后得到的斐波那契堆。如果要写代码&#xff0c;请用go语言。 文心一言&#xff1a; 由于我不能直接画出图19-4(m)中的斐波那契堆&#xff0c;我将基于斐波那契堆的基本结构和操作FIB-HEAP-EXTRACT-MIN的一般行为来…

HTTPS对于网站到底价值几何?

现在HTTPS基本上已经是网站的标配了&#xff0c;很少会遇到单纯使用HTTP的网站。但是十年前这还是另一番景象&#xff0c;当时只有几家大型互联网公司的网站会使用HTTPS&#xff0c;大部分使用的都还是简单的HTTP&#xff0c;这一切是怎么发生的呢&#xff1f; 为什么要把网站…

根据蛋白质序列,计算其分子量(molecular weight),在线工具,原理和python代码

蛋白质分子量 蛋白质是由许多氨基酸残基通过肽键&#xff08;一个氨基酸的 α-羧基与另一个氨基酸的 α-氨基脱水缩合形成的化学键&#xff09;连接而成。蛋白质的分子量&#xff08;molecular weight&#xff09;为各个氨基酸的分子量之和&#xff0c;是蛋白质的重要理化参数…

速戳!高考生做近视手术须知,避免错过心仪大学

距离高考还有不到一个月的时间&#xff0c;考生们在紧张复习的同时&#xff0c;不要忘了了解意向专业、院校的视力要求。一些专业和院校录取不仅靠实力,还需要“视力”,考了个好成绩却因视力不达标而被专业、院校退档,这样的结果是我们不想看到的。如果你想圆军旅梦、警校梦、航…

面向对象设计(下)《Ⅱ》

文章目录 抽象类抽象类的理解&#xff08;抽象类不能实例化&#xff09; 设计模式模板方法设计模式代理模式工厂方法设计模式 接口接口的定义&#xff08;接口仅可以用public修饰&#xff09;接口的实现jdk1.8中接口的默认方法和静态方法 内部类成员内部类静态成员内部类的创建…