阿里发布大模型发布图结构长文本处理智能体,超越GPT-4-128k

news2025/1/11 10:09:29

随着大语言模型的发展,处理长文本的能力成为了一个重要挑战。虽然有许多方法试图解决这个问题,但都存在不同程度的局限性。最近,阿里巴巴的研究团队提出了一个名为GraphReader的新方法,通过将长文本组织成图结构,并利用智能体来探索这个图,成功提升了模型处理长文本的能力。

GraphReader的核心思想是将长文本分解成关键元素和原子事实,构建成一个图,然后让智能体在这个图中探索和推理。这种方法不仅能有效处理超长文本,还在多跳问答等复杂任务上取得了优异表现。与目前主流的长文本处理方法相比,GraphReader展现出更强的扩展性和鲁棒性。

这个创新方法为大语言模型处理长文本开辟了新的思路,有望在各种需要长文本理解的应用场景中发挥重要作用。接下来,让我们一起深入了解GraphReader的原理和优势。

图片

论文标题:

GraphReader: Building Graph-based Agent to Enhance Long-Context Abilities of Large Language Models

论文链接:

https://arxiv.org/pdf/2406.14550

长文本处理的机遇与挑战

随着人工智能技术的快速发展,大语言模型在各种自然语言处理任务中展现出惊人的能力。然而,处理长文本仍然是一个棘手的问题。现有的方法往往受限于固定的上下文窗口大小,难以有效处理超长文本或需要多步推理的复杂任务。

目前,解决长文本处理问题的方法主要包括模型层面的优化、检索增强生成(RAG)和基于智能体的方法。但这些方法都存在各自的局限性,如需要大量计算资源、难以捕捉长距离依赖关系,或在处理极长文本时效果下降。

面对这些挑战,阿里巴巴的研究团队提出了GraphReader方法。GraphReader通过将长文本组织成图结构,并利用智能体在图中探索,成功提升了模型处理长文本的能力。在LV-Eval数据集上,GraphReader在各种长度的文本(从16k到256k tokens)上都显著优于其他方法,包括GPT-4-128k。特别是在处理256k tokens长度的文本时,GraphReader仍然保持了较高的性能,而其他方法的性能则大幅下降。

图片

GraphReader为长文本处理提供了创新思路,通过智能组织信息和探索策略,有效突破了传统方法的限制。它不仅能处理超长文本,还在复杂的多跳问答任务中表现出色,为大模型处理长文本提供了一种新的方法。

GraphReader:图结构与智能体的完美结合

GraphReader方法的核心在于将长文本转化为图结构,并通过智能体在图中进行探索。GraphReader整体的流程如下图所示,整体可以分为图构建与图探索:

图片

这个过程始于图的构建。首先将长文本分割成最大长度为  的块,保留段落结构。对每个块,GraphReader提取原子事实和关键元素。

  • 原子事实是最小的、不可分割的事实单元,以简洁的句子形式呈现。

  • 关键元素则包括重要的名词、动词和形容词。

图片

构建完图后,GraphReader初始化智能体来探索这个图。

图片

  1. 智能体首先根据问题制定一个理性计划,这个计划会分步骤解析问题,确定需要收集的关键信息。

  2. 然后,智能体从所有节点中选择最相关的N个节点作为起点。

下图展示了智能体的探索过程,它会探索原子事实、文本块和相邻节点,不断更新笔记本中的信息。这个过程通过一系列预定义的函数来实现,如 read_chunkstop_and_read_neighborsearch_more 等。

图片

在探索过程中,智能体采用粗到细的策略,先阅读原子事实,再根据需要阅读原始文本块。当智能体探索原子事实时,它可以选择 read_chunk 函数来读取相关的文本块,或者选择 stop_and_read_neighbor 函数来探索相邻节点。

最后,GraphReader根据笔记本中记录的信息进行推理,生成最终的答案。这个过程结合了多路径探索的结果,能够处理复杂的多跳问题。智能体会分析每条探索路径的笔记本内容,考虑其他笔记中的补充信息,并使用多数投票策略解决任何不一致,最终综合所有可用信息生成答案。

图片

通过这种方法,GraphReader能够在有限的上下文窗口内灵活地处理长文本和复杂推理任务。它不仅能有效捕捉长距离依赖关系,还能在多跳问答等任务上展现出优异的性能。

GraphReader的长文本处理结果

GraphReader在多个实验中展现出了卓越的性能,证明了它在处理长文本和复杂推理任务方面的强大能力。

首先,在多跳问答任务上,GraphReader表现出色。在HotpotQA、2WikiMultihopQA和MuSiQue这三个数据集上,GraphReader均取得了最佳性能。特别值得注意的是,GraphReader仅使用4k的上下文窗口,就超越了包括GPT-4-128k在内的所有基线方法。例如,在HotpotQA数据集上,GraphReader的LR-1和LR-2评分分别达到84.3%和89.7%,而GPT-4-128k的评分为83.3%和88.3%。这一结果充分证明了GraphReader在处理复杂推理任务时的优势。

图片

在单跳长文本问答任务上,GraphReader同样表现优异。在NarrativeQA数据集上,GraphReader的LR-1和LR-2评分分别为65.0%和80.0%,显著高于其他方法。这证明了GraphReader不仅在多跳任务上有优势,在处理长文本的单跳问题上也表现出色。

GraphReader在超长文本处理上展现出较好的表现。在HotpotWikiQA-mixup数据集上,GraphReader在从16k到256k不同长度的文本上都保持了优异的性能。特别是在256k长度的文本上,GraphReader的LR-1和LR-2评分分别为30.0%和38.0%,而GPT-4-128k的评分仅为14.0%和16.0%。

图片

下图进一步展示了GraphReader在不同文本长度下的支持事实召回率。可以看到,随着文本长度的增加,所有方法的召回率都有所下降,但GraphReader的下降幅度最小。在256k长度的文本上,GraphReader仍然保持约60%的召回率,而其他方法的召回率大幅下降。

图片

为了深入理解GraphReader的工作机制,研究团队还进行了详细的功能调用分析和图结构统计。在不同类型的任务中,GraphReader会采用不同的功能调用模式。例如,在多跳问答任务中,读取相邻节点是最常用的操作,而在单跳问答任务中,读取文本块是最频繁的操作。这种灵活的调用策略使GraphReader能够适应不同类型的问题。

图片

下表展示了构建的图结构统计数据。可以看到,随着文本长度的增加,图中的节点数和原子事实数也相应增加。平均每个节点有约10个相邻节点,每个节点平均关联2个原子事实。这种结构使得GraphReader能够有效地组织和利用长文本中的信息。

图片

总的来说,这些实验结果充分证明了GraphReader在处理长文本和复杂推理任务方面的卓越能力。它不仅在各种长度的文本上都表现出色,而且在多跳和单跳问答任务中都展现出了显著的优势。GraphReader的这种"魔法"般的表现,为长文本处理领域带来了新的可能性。

GraphReader的潜力与未来方向

GraphReader为长文本处理开辟了一条创新之路。通过将长文本组织成图结构,并利用智能体进行探索,它成功突破了传统方法的限制。实验结果表明,GraphReader不仅能处理超长文本,还在复杂的多跳问答任务上表现出色,甚至超越了GPT-4-128k等强大模型。

尽管取得了显著成果,GraphReader仍有进一步改进的空间。未来的研究方向可以包括:优化图的构建和探索过程以提高效率;验证GraphReader在其他长文本处理任务中的效果;探索与其他先进自然语言处理技术的结合;以及开发开源版本以促进更广泛的应用和改进。

总的来说,GraphReader为解决长文本处理这一关键挑战提供了一个有前景的解决方案。随着进一步的研究和优化,它有望在各种需要长文本理解的应用场景中发挥重要作用,推动自然语言处理技术的进一步发展。

图片

图片

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

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

相关文章

在FPGA程序中Handshake(握手)和Register(寄存器)区别

在FPGA程序中,Handshake(握手)和Register(寄存器)是两种不同的通信和数据传输机制。它们各有特点和适用场景。以下是它们的区别和应用场景的详细解释: Register(寄存器) 特点&#…

入门PHP就来我这(高级)19 ~ 捕获sql错误

有胆量你就来跟着路老师卷起来! -- 纯干货,技术知识分享 路老师给大家分享PHP语言的知识了,旨在想让大家入门PHP,并深入了解PHP语言。 接着上篇我们来看下sql错误的捕获模式。 1 PDO中捕获SQL语句中的错误 在PDO中有3种方法可以捕…

产品经理/项目经理管理项目使用最多的12款项目软件对比

盘点不同行业、项目类型的下的12款主流的项目管理软件:PingCode、Worktile、Teambition、TAPD、广联达、Asana、Basecamp、Jira、Microsoft Project、ClickUp、Redmine、Trello。 在这个项目管理工具层出不穷的时代,选择一个合适的软件似乎成了一个令许多…

博客标题:C++中的继承:构建面向对象的基石

目录 ​编辑 引言 继承的基本形式 示例1:基本继承 继承的类型 示例2:不同类型的继承 多重继承 示例3:多重继承 继承与多态性 示例4:继承与多态 结论 结尾 引言 在面向对象编程(OOP)中&#xff…

可以添加todo清单桌面小组件的便签哪个好?

在我们快节奏的生活中,有效的时间管理和任务追踪是必不可少的。为了实现这一目标,许多人选择使用桌面便签,尤其是那些具有Todo清单桌面小组件的便签。但是,面对市场上众多选择,可以添加todo清单桌面小组件的便签哪个好…

企业级网关设计

tips:本文完全来源于卢泽龙!!! 一、Gateway概述 1.1设计目标 1.2gateway基本功能 中文文档参考:https://cloud.tencent.com/developer/article/1403887?from15425 三大核心: 二、引入依赖和yaml配置…

14-52 剑和诗人26 - RAG 和 VectorDB 简介

检索增强生成 (RAG) 和 VectorDB 是自然语言处理 (NLP) 中的两个重要概念,它们正在突破 AI 系统所能实现的界限。 在这篇博文中,我将深入探讨 RAG,探索其工作原理、应用、优势和局限性。 我们还将研究 VectorDB,这是一种专用于向…

【动态规划Ⅵ】背包问题 /// 组合问题

背包问题 什么是背包问题0-1背包问题分数背包完全背包问题重复背包问题 背包问题例题416. 分割等和子集474. 一和零 完全平方数279. 完全平方数322. 零钱兑换 排列与组合组合,无重复:518. 零钱兑换 II排列,可重复:377. 组合总和 Ⅳ…

Commons-Collections篇-CC7链

前言 和CC5反序列化链相似,CC7也是后半条LazyMap执行命令链不变,但是中间过程通过AbstractMap.equals()触发LazyMap.get()方法 环境 我们可以接着使用之前已经搭建好的环境,具体过程可以看CC1分析文章的环境安装部分 Commons-Collections篇…

【Java 的四大引用详解】

首先分别介绍一下这几种引用 强引用: 只要能通过GC ROOT根对象引用链找到就不会被垃圾回收器回收,当所有的GC Root都不通过强引用引用该对象时,才能被垃圾回收器回收。 软引用(SoftReference): 当只有软引…

262个地级市-市场潜力指数(do文件+原始文件)

全国262个地级市-市场潜力指数(市场潜力计算方法代码数据)_市场潜力数据分析资源-CSDN文库 市场潜力指数:洞察未来发展的指南针 市场潜力指数是一个综合性的评估工具,它通过深入分析市场需求、竞争环境、政策支持和技术创新等多个…

LLM应用构建前的非结构化数据处理(一)标准化处理认识数据

1.学习内容 本节次学习内容来自于吴恩达老师的Preprocessing Unstructured Data for LLM Applications课程,因涉及到非结构化数据的相关处理,遂做学习整理。 2.相关环境准备 2.1 建议python版本在3.9版本以上 chromadb0.4.22 langchain0.1.5 langcha…

Redis-Jedis连接池\RedisTemplate\StringRedisTemplate

Redis-Jedis连接池\RedisTemplate\StringRedisTemplate 1. Jedis连接池1.1 通过工具类1.1.1 连接池:JedisConnectionFactory:1.1.2 test:(代码其实只有连接池那里改变了) 2. SpringDataRedis(lettuce&#…

洛谷 数学进制 7.9

P1100 高低位交换 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 代码一 #include<bits/stdc.h> using namespace std; typedef long long ll; #define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)const ll N1e510; char a[N];int main() {IOS;ll a;int b[32]…

【分布式系统】ceph部署(命令+截图巨详细版)

目录 一.存储概述 1.单机存储设备 2.单机存储的问题 3.商业存储 4.分布式存储​编辑 4.1.什么是分布式存储 4.2.分布式存储的类型 二.ceph概述 1.ceph优点 2.ceph架构 3.ceph核心组件 4.OSD存储后端 5.ceph数据存储过程 6.ceph版本发行生命周期 7.ceph集群部署 …

用ce修改植物大战僵尸杂交版银币

第一步打开游戏 用ce打开图中进程 第二步 输入你原始银币 点首次搜索 第三步 找到这个地址 把地址拖下来 第四步 双击直接修改下面数值即可 金币 钻石 都和这个方法一样 不一样的是首次搜索可能会有很多地址 我们改变游戏里面的值 然后再次搜索游戏被改变的值即可准确找到地址

降Compose十八掌之『见龙在田』| Modifier

公众号「稀有猿诉」 原文链接 降Compose十八掌之『见龙在田』| Modifier 通过前面的文章我们学会了如何使用元素来构建和填充我们的UI页面&#xff0c;但这只完成了一半&#xff0c;元素还需要装饰&#xff0c;以及进行动画和事件响应&#xff0c;这才能生成完整的UI。这…

遍历请求后端数据引出的数组forEach异步操作的坑

有一个列表数据&#xff0c;每项数据里有一个额外的字段需要去调另外一个接口才能拿到&#xff0c;后端有现有的这2个接口&#xff0c;现在临时需要前端显示出来&#xff0c;所以这里需要前端先去调列表数据的接口拿到列表数据&#xff0c;然后再遍历请求另外一个接口去拿到对应…

C++|异常

目录 一、异常概念 二、异常使用 2.1异常的抛出与捕获 2.2异常的重新抛出 2.3异常安全注意事项 2.4异常规范 三、自定义异常体系 四、C标准库的异常体系 五、异常的优缺点 对于传统的错误处理机制&#xff0c;例如c语言常用的&#xff1a; 1.assert&#xff0c;捕获到…

社区6月月报 | Apache DolphinScheduler重要修复和优化记录

各位热爱Apache DolphinScheduler的小伙伴们&#xff0c;社区6月月报更新啦&#xff01;这里将记录Apache DolphinScheduler社区每月的重要更新&#xff0c;欢迎关注。 月度Merge Stars 感谢以下小伙伴上个月为Apache DolphinScheduler所做的精彩贡献&#xff08;排名不分先后…