【RAG 论文】GenRead:“generate-read“ 可能比 “retrieve-read“ 更有效

论文:Generate rather than Retrieve: Large Language Models are Strong Context Generators
⭐⭐⭐⭐
ICLR 2023
Code: github.com/wyu97/GenRead

一、论文速读

该工作发现:由 LLM 生成的文档中,往往比 retrieved documents 更可能包含正确的答案。于是,该工作尝试走一条与 retrieve-then-read pipeline 不同的思路:generate-then-read pipeline(GenRead)。

generate-then-read 的基本思路是:

  1. Generate:首先 prompt LLM(如 InstructGPT)根据 question 生成相关的上下文文档
  2. Read:把 question 和生成的上下文文档交给 LLM 来获得最终的 answer

注意,Generate 步骤和 Read 步骤所使用的 LLM 可以不同,Read 步骤可以使用一个较小的、针对特定数据集训练的模型(如 FiD)

二、如何让 LLM 生成更加丰富多样的上下文文档?

论文指出:如何让 LLM 生成多样的、高质量的上下文文档是一个具有挑战性的任务。这里介绍一下论文的一些做法。

2.1 Diverse Human Prompts

由于单一的 prompt 会产生相似的 token distribution,所以这里让 human annotators 去提供多个不同的 prompt,从而引导 LLM 去生成多样化的上下文 documents。

论文指出,这个做法虽然简单,但是很有效。

2.2 Clustering-based Prompts

Generate 步骤中,在引导 LLM 去生成文档时,可以使用 In-Context Learning 来引导其生成多样化的文档,为了达成这一目的,可以在提供给 LLM 的 few-shot exemplars 中尽量放一些多样化的 question-doc 示例。

具体做法如下:

  1. 针对数据集的每一个 question,使用 retriever(如 BM25)检索出一个对应的 document。由此获得一堆 question-document pairs。
  2. 使用 LLM(如 GPT-3)去对 pairs 中的每一个 document 进行编码,得到一个 12288 维度的 vector。然后对这些 vectors 做 K-means 聚类。
  3. 在每个聚类的 cluster 中,随机选出 n 个 question-document pair,作为 exemplars。

通过以上方法,就可以拿到用于 in-context learning 的 in-context demostrations 来引导 LLM 生成多样化的上下文文档。

如下图展示了 clustering-based prompting 方法的整体架构:

在这里插入图片描述

四、gen-read 与 retrieve-read 结合

论文指出,将本文提出的 generative-then-read 与已有的 retrieve-then-read 结合,可以达到更好的效果。

结合的方式就是:将 generatived 的上下文文档与 retrieved 的文档合并起来,再交给 reader 去阅读。

因此,本文提出的 generative-then-read 方法可以与目前已有的任何 reader 机制进行结合,并将 generated context documents 插入到目前任何知识密集型 NLP 任务中

五、实验结果

在这里插入图片描述

实验表明,GenRead 方法能够有效地利用大型语言模型的生成能力来解决知识密集型任务,并且多个任务上在不引入任何外部数据的情况下达到了或超过了现有 RAG 方法的性能。

六、总结

这篇论文提出了 Generative-Read 的思路,其实验表明,在不引入外部知识的情况下,其表现就可以达到甚至超过当前的 RAG 的方法。这说明了:当前对 LLM 的内部知识的利用还远远不足。

当然,本文也提出,将 Gen-Read 与 Retrivee-Read 进行结合可以达到更好的表现,所以如何在 RAG 系统中更加充分利用 LLM 内部知识,是一个值得研究的挑战。

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

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

相关文章

C++校招八股

c类的访问权限与继承方式 公有成员在任何地方都可以被访问,包括类的外部和派生类。受保护成员在类的内部和派生类中可以被访问,但在类的外部不可访问。 私有成员只能在类的内部访问,包括类的成员函数和友元函数,不允许在类的外部…

关于“泼辣”DB 你应该知道的几件事

PolarDB PolarDB for PostgreSQL(以下简称 PolarDB)是一款阿里云自主研发的企业级数据库产品,采用计算存储分离架构,100% 兼容 PostgreSQL。 PolarDB 的存储与计算能力均可横向扩展,具有高可靠、高可用、弹性扩展等企…

文件(夹)批量重命名数字、字母、日期、中文数字大写小写

首先,需要用到的这个工具: 度娘网盘 提取码:qwu2 蓝奏云 提取码:2r1z 目标是重命名下面5个文件(也可以是文件夹等,任意),从大写中文数字“贰”开始 打开工具,找到“文…

使用机器学习确定文本的编程语言

导入必要的库 norman Python 语句&#xff1a;import <span style"color:#000000"><span style"background-color:#fbedbb"><span style"color:#0000ff">import</span> pandas <span style"color:#0000ff&quo…

基于OpenCv的图像Harris角点检测

⚠申明&#xff1a; 未经许可&#xff0c;禁止以任何形式转载&#xff0c;若要引用&#xff0c;请标注链接地址。 全文共计3077字&#xff0c;阅读大概需要3分钟 &#x1f308;更多学习内容&#xff0c; 欢迎&#x1f44f;关注&#x1f440;【文末】我的个人微信公众号&#xf…

使用D3.js进行数据可视化

D3.js介绍 D3.js是一个流行的JavaScript数据可视化库&#xff0c;全称为Data-Driven Documents&#xff0c;即数据驱动文档。它以数据为核心&#xff0c;通过数据来驱动文档的展示和操作。D3.js提供了丰富的API和工具&#xff0c;使得开发者能够创建出各种交互式和动态的数据可…

贪心-耍杂技的牛

问题描述 农民约翰的 N头奶牛&#xff08;编号为 1…N&#xff09;计划逃跑并加入马戏团&#xff0c;为此它们决定练习表演杂技。 奶牛们不是非常有创意&#xff0c;只提出了一个杂技表演&#xff1a; 叠罗汉&#xff0c;表演时&#xff0c;奶牛们站在彼此的身上&#xff0c;形…

力扣---二叉树的锯齿形层序遍历

给你二叉树的根节点 root &#xff0c;返回其节点值的 锯齿形层序遍历 。&#xff08;即先从左往右&#xff0c;再从右往左进行下一层遍历&#xff0c;以此类推&#xff0c;层与层之间交替进行&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,…

基于深度学习神经网络的AI图片上色DDcolor系统源码

第一步&#xff1a;DDcolor介绍 DDColor 是最新的 SOTA 图像上色算法&#xff0c;能够对输入的黑白图像生成自然生动的彩色结果&#xff0c;使用 UNet 结构的骨干网络和图像解码器分别实现图像特征提取和特征图上采样&#xff0c;并利用 Transformer 结构的颜色解码器完成基于视…

PDF Shaper Ultimate 免安装中文破姐版 v14.1

软件介绍 PDF Shaper是一套完整的多功能PDF编辑工具&#xff0c;可实现最高的生产力和文档安全性。它允许你分割&#xff0c;合并&#xff0c;水印&#xff0c;署名&#xff0c;优化&#xff0c;转换&#xff0c;加密和解密您的PDF文件&#xff0c;也可插入和移动页&#xff0…

C语言实验-学生信息管理系统

按以下菜单界面编写学生信息管理系统&#xff1b; 1&#xff09;录入学生信息首先输入学生人数&#xff0c;然后根据学生人数开辟动态数组&#xff1b; 2&#xff09;学生信息包括学号、姓名、性别、三门课成绩、总分&#xff1b;其中学号、姓名、 性别、三门课成绩是需要从键盘…

初始《stack》《queue》及手搓模拟《stack》《queue》

目录 前言&#xff1a; stack的介绍和使用 stack的介绍&#xff1a; ​编辑stack的使用&#xff1a; ​编辑stack的模拟实现&#xff1a; queue的介绍和使用 queue的介绍&#xff1a; queue的使用: queue的模拟实现: priority_queue的介绍和使用 priority_queue的介绍:…

Hdfs小文件治理策略以及治理经验

小文件是 Hadoop 集群运维中的常见挑战&#xff0c;尤其对于大规模运行的集群来说可谓至关重要。如果处理不好&#xff0c;可能会导致许多并发症。Hadoop集群本质是为了TB,PB规模的数据存储和计算因运而生的。为啥大数据开发都说小文件的治理重要&#xff0c;说HDFS 存储小文件…

08 - 步骤 表输出

简介 表输出&#xff08;Table Output&#xff09;步骤是用于将 Kettle 中的数据写入关系型数据库表的步骤。它允许用户将数据流中的数据插入、更新或删除到目标数据库表中。 使用 场景 我要将处理完的数据流中的sysOrgCode 跟 plateNumber 保存记录到mysql 1、拖拽表输出…

Java Jackson-jr 库使用介绍

介绍 Jackson-jr 是一个轻量级的Java JSON 处理库。这个库被设计用来替代 Jackson 的复杂性。对比 Jackson 的复杂 API&#xff0c;Jackson-jr 的启动速度更快&#xff0c;包大小更小。 虽然Jackson databind&#xff08;如ObjectMapper&#xff09;是通用数据绑定的良好选择…

初学python记录:力扣1235. 规划兼职工作

题目&#xff1a; 你打算利用空闲时间来做兼职工作赚些零花钱。 这里有 n 份兼职工作&#xff0c;每份工作预计从 startTime[i] 开始到 endTime[i] 结束&#xff0c;报酬为 profit[i]。 给你一份兼职工作表&#xff0c;包含开始时间 startTime&#xff0c;结束时间 endTime …

ROS服务器通信

目录 一、角色 二、流程 注意 三、例子描述 四、srv文件 编译配置文件 vscode配置 五、Server.cpp编写例子 编写CMakeList 六、观察server的效果 七、Client编写例子 编写CMakeList 八、观察Client的结果 九、Client优化&#xff08;动态输入&#xff09; 了解argc…

计算机行业AI前沿报告:混合专家模型技术(MoE)

今天分享的是****AI系列深度研究报告&#xff1a;《计算机行业AI前沿报告&#xff1a;混合专家模型技术(MoE)》。&#xff08;报告出品方&#xff1a;中信建投证券&#xff09; 精选内容来源公众&#xff1a;见鹿报告 报告共计: 24页 [报告内容摘要如下] **•核心观点&…

ASP.NET 两种开发模式

1》》WebForm 开发模式 1. 服务器端控件 2. 一般处理程序html静态页Ajax 3. 一般处理程序html模板 如下图 2》》MVC 太复杂的系统&#xff0c;会造成Controller 过复杂。 后来就诞生了 MVP、MVVM等模式

AI大模型探索之路-训练篇12:语言模型Transformer库-Datasets组件实践

系列篇章&#x1f4a5; AI大模型探索之路-训练篇1&#xff1a;大语言模型微调基础认知 AI大模型探索之路-训练篇2&#xff1a;大语言模型预训练基础认知 AI大模型探索之路-训练篇3&#xff1a;大语言模型全景解读 AI大模型探索之路-训练篇4&#xff1a;大语言模型训练数据集概…