RAPTOR:树组织检索的递归抽象处理

RAPTOR: RECURSIVE ABSTRACTIVE PROCESSING FOR TREE-ORGANIZED RETRIEVAL

Title:树组织检索的递归抽象处理

https://arxiv.org/pdf/2401.18059.pdf

摘要

        检索增强语言模型可以更好的融入长尾问题,但是现有的方法只检索短的连续块,限制了整个文档上下文的整体理解。

        文本提出方法:递归对文本块进行向量化,聚类,摘要,从下到上构建一棵具有不同摘要级别的树。

介绍

        要解决的问题是,大多数现有的方法只检索几个短的、连续的文本块,这限制了它们表示和利用大规模话语结构的能力。

        这与需要整合文本多个部分知识的主题问题特别相关,前k个检索到的短连续文本将不包含足够的上下文来回答问题。

为了解决这个问题,我们设计了一个索引和检索系统,该系统使用树结构来捕获文本的高级和低级细节。

相关工作

        1.为什么需要检索:

        模型往往没有充分利用长期上下文,并且随着上下文长度的增加,尤其是当相关信息嵌入到长上下文中时,性能会下降。此外,实际上,使用长上下文既昂贵又缓慢。

        2.检索方法:

        基于术语的方法(TFIDF,BM25)到基于深度学习的策略。

        检索增强大模型包含多个组件:检索模块,阅读器,端到端系统训练。

        向量化的检索方法缺点:连续分割可能无法捕捉到文本的完整语义深度。阅读从文件中提取的片段可能缺乏重要的上下文,使其难以阅读,甚至具有误导性。

        3.递归总结:

        摘要技术提供了文档的浓缩视图,使您能够更集中地处理内容。使用段落的摘要和片段,提高了大多数数据集的正确性,但有时可能是一种有损的压缩方式。

        递归抽象摘要模型采用任务分解来总结较小的文本块,然后将其集成以形成较大部分的摘要。虽然这种方法可以有效地捕捉更广泛的主题,但它可能会错过细微的细节。

        LlamaIndex通过类似地总结相邻的文本块,但也保留中间节点,从而存储不同级别的细节,保持细粒度的细节,从而缓解了这一问题。

        然而,由于这两种方法都依赖邻接来对相邻节点进行分组或汇总,它们仍然可能忽略文本中遥远的相互依存关系。

方法

        总体结构通过构建递归树结构来解决阅读中的语义深度和连接问题,该结构平衡了更广泛的主题理解和细粒度的细节,并允许根据语义相似性而不仅仅是文本中的顺序对节点进行分组。

        step1.将语料库文本进行切分,每个切片大小为100个字符,但会保持句子的完整性。使用sbert对每个切片进行向量嵌入,切片和向量会形成树的叶子结点。

        step2.使用聚类方法对切片进行分组,分组后的切片组使用LLM进行摘要总结。这样嵌入、聚类、总结循环进行,直到聚类不可行。最后生成了文档的树形结构表示。

        step3.树的查询使用两种策略:树遍历和折叠树。树遍历方法逐层遍历树,每层进行树修剪并选择最相关的点。折叠树方法对所有层的节点进行集中评估。

        聚类方法

        聚类方法的一个独特要求是使用软集群,其中节点可以属于多个集群,而不需要固定数量的集群。这种灵活性至关重要,因为单个文本片段通常包含各种主题相关的信息,从而保证将其包含在多个摘要中。

        本文使用混合高斯聚类方法(GMM),是一种软聚类方法,每个样本可以根据概率属于多个聚类簇。本文还使用了分层聚类(全部聚类和局部聚类),分两步进行的聚类过程捕获了文本数据之间的广泛关系,从广泛的主题到特定的细节。

        基于模型的总结

        摘要步骤将潜在的大量检索信息浓缩为可管理的大小。虽然摘要模型通常会产生可靠的摘要,但一项重点注释研究显示,约4%的摘要包含轻微幻觉。这些不会传播到父节点,也不会对问答任务产生明显影响。

        查询

        树遍历

        树遍历方法首先基于前k个最相关的根节点与查询嵌入的余弦相似性来选择它们。在下一层考虑这些所选节点的子节点,并且基于它们与查询向量的余弦相似性再次从该池中选择前k个节点。重复此过程,直到我们到达叶节点。最后,将所有选定节点的文本连接起来,形成检索到的上下文。通过调整在每一层选择的深度d和节点k的数量,树遍历方法提供了对所检索信息的特异性和广度的控制。该算法从广阔的前景开始,通过考虑树的顶层,并在向下穿过较低层时逐渐关注更精细的细节。

        折叠树

折叠树方法提供了一种更简单的方法,通过同时考虑树中的所有节点来搜索相关信息。这种方法不是一层一层地进行,而是将多层树扁平化为一层,基本上将所有节点放在同一级别进行比较。

实验

        详情见论文。

总结

        在本文中,我们提出了RAPTOR,这是一种新颖的基于树的检索系统,它利用不同抽象级别的上下文信息增强了大型语言模型的参数知识。通过使用递归聚类和摘要技术,RAPTOR创建了一个分层树结构,能够合成检索语料库各个部分的信息。在查询阶段,RAPTOR利用这种树结构进行更有效的检索。我们的对照实验表明,RAPTOR不仅优于传统的检索方法,而且在几个问答任务上设置了新的性能基准。

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

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

相关文章

第5讲小程序微信用户登录实现

小程序微信用户登录实现 小程序登录和jwt,httpclient工具类详细介绍可以看下小锋老师的 小程序电商系统课程:https://www.bilibili.com/video/BV1kP4y1F7tU application.yml加上小程序登录需要的参数,小伙伴们可以登录小程序后台管理&#…

DP读书:《openEuler操作系统》(九)从IPC到网卡到卡驱动程序

DP读书:《openEuler操作系统》从IPC到网卡到卡驱动程序) 上章回顾_SPI上节回顾_TCP 网卡驱动程序简介1.设备驱动2.总线与设备3.网卡及其抽象 驱动程序的注册与注销1. 注册2. 注销 设备初始化1. 硬件初始化2. 软件初始化 设备的打开与关闭1. 设备的打开2.…

Stable Diffusion 模型下载:RealCartoon-Pixar - V8

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十

《Linux 简易速速上手小册》第10章: 性能监控与优化(2024 最新版)

文章目录 10.1 理解系统负载10.1.1 重点基础知识10.1.2 重点案例:服务器响应变慢10.1.3 拓展案例 1:多核 CPU 系统的负载解读10.1.4 拓展案例 2:分析具体时间段的系统负载 10.2 优化性能10.2.1 重点基础知识10.2.2 重点案例:优化 …

【AI大模型应用开发】【LangChain系列】6. LangChain的Callbacks模块:监控调试程序的重要手段

大家好,我是【同学小张】。持续学习,持续干货输出,关注我,跟我一起学AI大模型技能。 LangChain提供了一个回调系统,允许您挂接到LLM应用程序的各个阶段。这对于日志记录、监视、流式传输和其他任务非常有用。 0. Lang…

代码随想录算法训练营第二九天 | 递增子序列、排列

目录 递增子序列全排列全排列 II LeetCode 491.递增子序列 LeetCode 46.全排列 LeetCode 47.全排列 II 递增子序列 不能使用之前的去重逻辑! 同一父节点下的同层上使用过的元素就不能再使用了 题目要求递增子序列大小至少为2,终止条件要限定。 class…

Minecraft的红石教程之电梯

一.前言 我记得是上初中的时候,就看到了这类电梯。现在我在看现在这类电梯的相关视频,大多是盗用创意未能领会其中的红石运作规律,于是我就删繁就简写了这篇。 二.步骤 1.材料 粘性活塞,黏液块,红石,红…

免费数据恢复软件哪个好?适用于 Windows的顶级免费数据恢复软件推荐

终于要说到Windows 11了,有太多令人惊叹的功能,让人跃跃欲试。但是,在升级到 Windows 11 或使用 Windows 11 时,人们可能会因计算机问题而导致文件被删除或丢失。这就是为什么需要 Windows 11 的免费文件恢复的原因。这是适用于 W…

依赖注入的艺术:编写可扩展 JavaScript 代码的秘密

1. 依赖注入 在 JavaScript 中,依赖注入(Dependency Injection,简称 DI)是一种软件设计模式,通过这种模式,可以减少代码模块之间的紧耦合。依赖注入允许开发者将模块的依赖关系从模块的内部转移到外部&…

SQLyog安装配置(注册码)连接MySQL

下载资源 博主给你打包好了安装包,在网盘里,只有几Mb,防止你下载到钓鱼软件 快说谢谢博主(然后心甘情愿的点个赞~😊) SQLyog.zip 安装流程 ①下载好压缩包后并解压 ②打开文件夹,双击安装包 ③…

案例:CentOS8 在 MySQL8.0 实现半同步复制

异步复制 MySQL 默认的复制即是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已经接收并处理,这样就会有一个问题,主节点如果 crash 掉了,此时主节点上已经提交的事务可能并没有传…

【C++】函数指针 ③ ( 函数指针语法 | 函数名直接调用函数 | 定义函数指针变量 | 使用 typedef 定义函数类型 | 使用 typedef 定义函数指针类型 )

文章目录 一、函数指针语法1、函数名直接调用函数2、定义函数指针变量3、使用 typedef 定义函数类型4、使用 typedef 定义函数指针类型 二、完整代码示例 一、函数指针语法 1、函数名直接调用函数 定义一个函数 , 如下 函数的类型是 int(int, int) ; int add(int x, int y) {p…