当前位置: 首页 > news >正文

ReadAgent,一款具有要点记忆的人工智能阅读代理

人工智能咨询培训老师叶梓 转载标明出处

现有的大模型(LLMs)在处理长文本时受限于固定的最大上下文长度,并且当输入文本越来越长时,性能往往会下降,即使在没有超出明确上下文窗口的情况下,LLMs 的性能也会随着输入文本长度的增加而下降。为了克服这些限制,Google DeepMind 和 Google Research 的研究团队提出了一种新颖的解决方案——ReadAgent,一种能够显著扩展上下文理解能力的人工智能阅读代理。

ReadAgent 的设计理念受到人类如何互动阅读长文档的启发。人类在阅读时往往会快速忘记具体信息,而对大意或主旨(gist)的记忆则更为持久。此外,人类的阅读是一个互动过程,当我们需要提醒自己完成任务(例如回答问题)的相关细节时,我们会回顾原文。基于这些观察,ReadAgent 通过三个主要步骤来模拟人类的阅读过程:分段(episode pagination)、要点压缩(memory gisting)和交互式查找(interactive look-up)。

在实验评估中,ReadAgent 在 QuALITY、NarrativeQA 和 QMSum 三个长文档阅读理解任务上的表现超越了基线方法。特别是在 NarrativeQA Gutenberg 测试集上,ReadAgent 将 LLM 的评分提高了 12.97%,ROUGE-L 提高了 31.98%,并将有效上下文长度增加了约 20 倍。

ReadAgent介绍

ReadAgent的工作流程,包括分页、主旨压缩和交互式查找

Figure 1 展示了 ReadAgent 的工作流程,这是一个模仿人类阅读习惯设计的系统,旨在有效处理和理解长文本。ReadAgent 通过三个主要步骤来实现这一目标:

  1. 分页(Episode Pagination):系统将长文本分解为一系列较小的、逻辑上连贯的文本块,即“剧集”,类似于将一本书分成多个章节。

  2. 要点压缩(Gisting):对每个文本块进行压缩,提取其核心要点,形成简洁的要点记忆,这有助于快速把握文本的主旨。

  3. 交互式查找(Interactive Look-Up):在需要详细回顾特定信息时,系统会根据任务需求和已有的要点记忆,选择性地查看原始文本的相关部分,以获取更详尽的细节。

在 ReadAgent 系统中,要点记忆(Gist Memory)扮演着至关重要的角色。它的核心思想是将长篇文本的信息压缩成易于管理和理解的要点集合。这种压缩不仅减少了处理文本所需的工作量,而且使得关键信息更加突出,便于后续的查找和使用。

构建要点记忆的过程涉及两个主要步骤:

  1. 分页(Pagination):这一步骤中,ReadAgent 将长文本分解为一系列的文本块,这些文本块被称为“剧集”或“页”。通过提示(prompting)大型语言模型(LLM),ReadAgent 决定在文本的自然断点处进行分页,如场景转换、对话结束或叙述的逻辑分界点。这种方法模仿了人类在阅读时自然停顿的习惯,有助于将文本组织成更易于处理的部分。

  2. 记忆要点化(Memory Gisting):在分页完成后,ReadAgent 对每一页的内容进行压缩,提取出关键信息并形成要点。这个过程类似于人类在阅读后对文本主旨的记忆,强调了文本的核心内容而非具体细节。通过这种方式,ReadAgent 能够将每一页的文本转化为简短、精炼的要点,便于存储和快速回顾。

示例分页提示

并行和顺序交互式查找是 ReadAgent 系统的另一个关键特性。这一功能使得 ReadAgent 能够在需要时,查找原始文本中的相关细节,从而补充和丰富其要点记忆。

并行查找(Parallel Look-Up):在这种模式下,ReadAgent 可以同时请求查看多个页面或文本块。这种方法允许模型快速获取广泛的上下文信息,适合于需要同时考虑多个信息源的任务。

顺序查找(Sequential Look-Up):与并行查找不同,顺序查找是一种逐步的过程,ReadAgent 一次只请求查看一个页面或文本块,并在查看前一个页面后再决定查看下一个页面。这种方法更适合于需要深入理解文本发展脉络的任务。

用于指导并行查找(Parallel Look-Up)的示例提示

计算开销和可扩展性是两个核心考量因素。尽管 ReadAgent 依赖于迭代推理,但设计上确保了这种推理的计算成本是可控的,并且随着处理文本长度的增加,系统能够良好地扩展。

分页(Pagination)是 ReadAgent 处理长文本的第一步。理想情况下,一个大型语言模型(LLM)可以一次性阅读整个文档并进行分页。然而,ReadAgent 采用了一种算法,将文档分解为长度不超过 max_words 的块,并确保每个处理步骤至少处理 min_words 的文本。这种方法不仅提高了处理效率,而且使得 LLM 在面对长文档时的计算负担变得可管理。

要点压缩(Gisting)是随后的一个步骤,它涉及将每一页的文本压缩成更简洁的要点。这种压缩是对原始文本的额外处理,但与处理完整文本相比,它显著减少了需要处理的信息量。这种方法使得并行查找可以基于要点而不是完整的文本,从而减少了处理时间。

在响应(Response)阶段,模型生成最终答案的过程类似于并行查找。尽管提示模板可能会增加一些额外的计算开销,但这种方法允许模型在生成答案时更加精确和高效。

ReadAgent 变体提供了不同的配置选项,以适应不同的应用场景。这包括无条件 ReadAgent 和条件 ReadAgent。

无条件 ReadAgent:在这种设置中,要点压缩时不包含特定任务的描述。这种方法适用于任务未知或要点需要用于多个任务的情况。虽然这可能会牺牲一些压缩率,并增加一些干扰信息,但它确保了生成的要点具有更广泛的适用性。

条件 ReadAgent:当任务在阅读长文档之前已知时,可以在要点压缩步骤中包含任务描述。这种方法使得 LLM 能够更有效地压缩与任务无关的信息,从而提高效率并减少干扰。

通过这些设计,ReadAgent 能够灵活地适应不同的任务需求,同时保持计算效率和可扩展性。这种方法不仅提高了处理长文本的能力,还使得系统在面对不断变化的任务和文档长度时,能够持续提供高质量的服务。

实验

作者采用了两种自动评估方法,旨在模拟人类评估者对模型生成答案的评判。这两种方法分别是严格的 LLM Rater 和宽容的 LLM Rater。

严格的 LLM Rater

这种方法要求模型生成的答案与参考答案完全一致,才能被判定为正确。评估时,模型会接收到一个提示,提示中包含了问题和模型的答案,然后模型需要判断这个答案是否与参考答案完全匹配。例如,如果问题要求解释某个概念,而模型生成的答案与专家提供的参考答案完全一致,那么这个答案就会被严格 LLM Rater 判定为正确。

宽容的 LLM Rater

与严格 LLM Rater 不同,宽容的 LLM Rater 允许一定程度的偏差。即便模型生成的答案不完全与参考答案一致,只要答案中包含正确的关键信息或部分匹配,也会被判定为正确或部分正确。这种方法更加灵活,允许模型在理解问题的基础上,提供与参考答案不同的但仍然合理的回答。

在比较 ReadAgent 与其他基线方法时,作者考虑了几种不同的方法:

Retrieval-Augmented Generation (RAG):这种方法结合了检索和生成,通过检索长文本中相关的“页面”或文本片段,然后将这些片段作为上下文,辅助生成答案。这种方法的优势在于能够利用大量文本信息来辅助回答,但可能在整合信息时面临挑战。

Full or Truncated Text Content:在这种方法中,模型直接使用完整的或截断的原始文本作为上下文来生成答案。这种方法简单直接,但可能会因为文本过长而导致模型难以捕捉到所有相关信息。

Gist Memory:这种方法利用压缩后的要点记忆来回答问题。通过将长文本压缩成简短的要点,模型能够更快速地理解和回应问题,但可能会丢失一些细节信息。

在QuALITY数据集上,使用不同方法(包括BM25检索、神经检索、完整原始内容、主旨记忆和ReadAgent不同变体)的实验结果

作者探讨了 ReadAgent 在处理长文本阅读理解任务时的表现,特别是在 QuALITY、NarrativeQA 和 QMSum 三个不同的数据集上。这些数据集提供了多样化的挑战,涉及不同长度和类型的文本,从而全面评估 ReadAgent 的能力。

QuALITY 数据集

QuALITY 挑战是一个典型的多项选择题问答任务,要求模型从四个选项中选择正确答案。在这项任务中,ReadAgent 的表现通过准确性来衡量。

作者特别关注了压缩率(CR)和查找次数(LU)对 ReadAgent 性能的影响。压缩率衡量了文本在压缩成要点记忆后保留信息的能力,而查找次数则反映了模型在回答问题时需要回顾的原始文本量。

实验结果显示,ReadAgent 在压缩文本的同时,能够有效地查找相关信息,从而在保持高准确性的同时减少了对原始文本的依赖。

QuALITY数据集中原始文本和压缩后的主旨(gist)的字数统计

NarrativeQA 数据集

NarrativeQA 包含了书籍和电影剧本,文本长度更长,上下文更复杂。这个数据集对模型的理解和推理能力提出了更高的要求。

作者使用 ROUGE 分数和 LLM Ratings 来评估 ReadAgent 的表现。ROUGE 分数衡量了模型生成的文本与参考答案的相似度,而 LLM Ratings 则通过模型自身来评估答案的质量。

在 NarrativeQA 上,不同压缩率和查找策略对 ReadAgent 的表现有显著影响。作者发现,适当的压缩和有效的查找策略可以提高模型在长文本任务中的表现。

NarrativeQA数据集的实验结果

QMSum 数据集

QMSum 由会议记录组成,任务通常是生成摘要而非回答具体问题。这要求模型不仅要理解文本,还要能够提炼关键信息。

与 QuALITY 和 NarrativeQA 不同,QMSum 更注重模型的摘要生成能力。作者通过 ROUGE 分数和 LLM Ratings 来评估 ReadAgent 在生成摘要方面的表现。

实验结果表明,ReadAgent 能够有效地处理长文本,并生成高质量的摘要,同时通过不同的查找策略来优化其表现。

QMSum数据集的验证结果

在消融研究中,作者进一步分析了 ReadAgent 不同组件对整体性能的贡献。特别是,他们比较了使用 GistMem 结合神经检索与使用 ReadAgent 查找单页的效果。

研究发现,ReadAgent 的检索策略在准确性上优于传统的 GistMem 结合神经检索方法。这表明 ReadAgent 在处理长文本时,能够更有效地利用压缩后的要点记忆和原始文本,从而提高任务完成的准确性。

比较了使用GistMem结合神经检索与ReadAgent检索单页的性能

ReadAgent 的成功展示了通过模仿人类的阅读和记忆策略,可以显著提升 AI 在处理长文本时的能力。这项工作不仅为长文本理解提供了新的解决方案,也为未来 AI 的发展开辟了新的可能性。

论文链接:https://arxiv.org/abs/2402.09727

相关文章:

ReadAgent,一款具有要点记忆的人工智能阅读代理

人工智能咨询培训老师叶梓 转载标明出处 现有的大模型(LLMs)在处理长文本时受限于固定的最大上下文长度,并且当输入文本越来越长时,性能往往会下降,即使在没有超出明确上下文窗口的情况下,LLMs 的性能也会随…...

构建智能:利用Gradle项目属性控制构建行为

构建智能:利用Gradle项目属性控制构建行为 Gradle作为一款强大的构建工具,提供了丰富的项目属性管理功能。通过项目属性,开发者可以灵活地控制构建行为,实现条件编译、动态配置和多环境构建等高级功能。本文将详细解释如何在Grad…...

如何通过smtp设置使ONLYOFFICE协作空间服务器可以发送注册邀请邮件

什么是ONLYOFFICE协作空间 ONLYOFFICE协作空间,是Ascensio System SIA公司出品的,基于Web的,开源的,跨平台的,在线文档编辑和协作的解决方案。在线Office包含了最基本的办公三件套:文档编辑器、幻灯片编辑…...

SQL labs靶场-SQL注入入门

靶场及环境配置参考 一,工具准备。 推荐下载火狐浏览器,并下载harkbar插件(v2)版本。hackbar使用教程在此不做过多描述。 补充:url栏内部信息会进行url编码。 二,SQL注入-less1。 1,判断传参…...

HarmonyOS应用开发者高级认证,Next版本发布后最新题库 - 单选题序号4

基础认证题库请移步:HarmonyOS应用开发者基础认证题库 注:有读者反馈,题库的代码块比较多,打开文章时会卡死。所以笔者将题库拆分,单选题20个为一组,多选题10个为一组,题库目录如下,…...

使用LSTM完成时间序列预测

c 在本教程中,我们将介绍一个简单的示例,旨在帮助初学者入门时间序列预测和 PyTorch 的使用。通过这个示例,你可以学习如何使用 LSTMCell 单元来处理时间序列数据。 我们将使用两个 LSTMCell 单元来学习从不同相位开始的正弦波信号。模型在…...

《数据结构:顺序实现二叉树》

文章目录 一、树1、树的结构与概念2、树相关术语 二、二叉树1、概念与结构2、满二叉树3、完全二叉树 三、顺序二叉树存储结构四、实现顺序结构二叉树1、堆的概念与结构2、堆的实现3、堆的排序 一、树 1、树的结构与概念 树是一种非线性的数据结构,它是由n&#xff…...

【HarmonyOS】HarmonyOS NEXT学习日记:六、渲染控制、样式结构重用

【HarmonyOS】HarmonyOS NEXT学习日记:六、渲染控制、样式&结构重用 渲染控制包含了条件渲染和循环渲染,所谓条件渲染,即更具状态不同,选择性的渲染不同的组件。 而循环渲染则是用于列表之内的、多个重复元素组成的结构中。 …...

【防火墙】防火墙NAT、智能选路综合实验

实验拓扑 实验要求 7,办公区设备可以通过电信链路和移动链路上网(多对多的NAT,并且需要保留一个公网IP不能用来转换) 8,分公司设备可以通过总公司的移动链路和电信链路访问到Dmz区的http服务器 9,多出口环境基于带宽比例进行选路…...

VUE之---slot插槽

什么是插槽 slot 【插槽】, 是 Vue 的内容分发机制, 组件内部的模板引擎使用slot 元素作为承载分发内容的出口。slot 是子组件的一个模板标签元素, 而这一个标签元素是否显示, 以及怎么显示是由父组件决定的。 VUE中slot【插槽】…...

linux、windows、macos,命令终端清屏

文章目录 LinuxWindowsmacOS 在Linux、Windows和macOS的命令终端中,清屏的命令或方法各不相同。以下是针对这三种系统的清屏方法: Linux clear命令:这是最常用的清空终端屏幕的命令之一。在终端中输入clear命令后,屏幕上的所有内容…...

【RaspberryPi】树莓派Matlab/Simulink支持包安装与使用

官网支持与兼容性 Raspberry Pi Support from MATLAB - Hardware Support - MATLAB & Simulink Raspberry Pi Support from Simulink - Hardware Support - MATLAB & Simulink Matlab与树莓派兼容性 Simulink与树莓派兼容性 树莓派Matlab&Simulink RaspberryPi支…...

嵌入式人工智能(10-基于树莓派4B的DS1302实时时钟RTC)

1、实时时钟(Real Time Clock) RTC,全称为实时时钟(Real Time Clock),是一种能够提供实时时间信息的电子设备。RTC通常包括一个计时器和一个能够记录日期和时间的电池。它可以独立于主控芯片工作&#xff…...

C++ | Leetcode C++题解之第275题H指数II

题目&#xff1a; 题解&#xff1a; class Solution { public:int hIndex(vector<int>& citations) {int n citations.size();int left 0, right n - 1;while (left < right) {int mid left (right - left) / 2;if (citations[mid] > n - mid) {right m…...

编写DockerFile

将自己的项目或者环境通过Docker部署到服务器需要一下几个步骤&#xff1a; 打包项目或者环境 编写Dockerfile文件 运行Dockerfile文件&#xff0c;构建DockerImages镜像&#xff0c;将DockerImages存入DockerHub或者存入阿里云镜像仓库 服务器pull下DockerImages镜像&#…...

TCP并发服务器多线程

1.创建线程‐‐pthread_create int pthread_create( pthread_t *thread, // 线程 ID 无符号长整型 const pthread_attr_t *attr, // 线程属性&#xff0c; NULL void *(*start_routine)(void *), // 线程处理函数 void *arg); // 线程处理函数 参数&#xff1a; pthrea…...

技术速递|C# 13:探索最新的预览功能

作者&#xff1a;Kathleen Dollard 排版&#xff1a;Alan Wang C# 13 已初具雏形&#xff0c;其新特性侧重于灵活性、性能以及使您最喜欢的功能在日常中变得更容易使用。我们以公开的方式构建 C#&#xff0c;在今年的 Microsoft Build 大会上&#xff0c;我们会让您一睹 C# 13 …...

Python设计模式:巧用元类创建单例模式!

✨ 内容&#xff1a; 今天我们来探讨一个高级且实用的Python概念——元类&#xff08;Metaclasses&#xff09;。元类是创建类的类&#xff0c;它们可以用来控制类的行为。通过本次练习&#xff0c;我们将学习如何使用元类来实现单例模式&#xff0c;确保某个类在整个程序中只…...

构建自主可控的工业操作系统,筑牢我国工业安全堡垒

构建自主可控的工业操作系统&#xff0c;筑牢我国工业安全堡垒&#xff0c;鸿道(Intewell)操作系统为国家工业发展保驾护航。 7月19日&#xff0c;全球多地安装微软操作系统的电脑设备出现大规模宕机&#xff0c;导致“蓝屏”现象&#xff0c;严重影响了航空、铁路、医疗、金…...

WPF串口通讯程序

目录 一 设计原型 二 后台源码 一 设计原型 二 后台源码 using HardwareCommunications; using System.IO.Ports; using System.Windows;namespace PortTest {/// <summary>/// Interaction logic for MainWindow.xaml/// </summary>public partial class MainW…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted&#xff08;&#xff09;是OpenCV库中用于图像处理的函数&#xff0c;主要功能是将两个输入图像&#xff08;尺寸和类型相同&#xff09;按照指定的权重进行加权叠加&#xff08;图像融合&#xff09;&#xff0c;并添加一个标量值&#x…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的&#xff0c;根据Excel列的需求预估的工时直接打骨折&#xff0c;不要问我为什么&#xff0c;主要…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行&#xff0c;YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID&#xff1a; YW3…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元&#xff08;GRU&#xff09;长短期记忆神经网络&#xff08;LSTM&#xff09…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...