RAG中如何解决上下文知识连贯性问题 || 如何更好的切分和组织非结构化的文档数据

当信息蕴含在较长的上下文时,基于片段的搜索召回,一定会丢失数据,导致最终无法正确的回答问题。

实际上复杂的问题,这里只是说问题本身倾向于从全文获取答案,而不仅仅是基于片段。

斯坦福论文提出的核心问题和解决思路:传统RAG在非连续文档、跨文档主题和分散型主题内容时效果不佳。而RAPTOR则可以利用高斯混合模型UMAP降维等技术,使用递归形式将散落的片段先按层级组织起来。

论文如下

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

一、RAG中的挑战

如果RAG中的搜索有困难级别,根据段落就有标准答案的问题是容易级别,需要思考和考虑上下文的是困难级别。

经常说,开始做rag很容易,但是想要做出效果是真难。最大感触是,你知道流程和步骤,但是仍然做不好。里边有非常多的复杂的问题。想要做到50的准确度效果很容易,想要做到90的准确度效果就比较难了。

对于容易级别的检索,要解决的是搜索问题。如何拿query找到正确的答案,是首先应该解决的问题。

对于困难级别的检索,就不是简单的搜索问题了。例如要思考的问题,小明和小红谁更有钱?比如总结性的问题,灰姑娘是如何达到幸福的生活的?显然这些复杂的问题,很难从任何一个段落中就获取到答案,换句话说,答案不在任何单个段落中,而是在整篇文章中,或者整本书中。此类问题对于RAG来说,是极其困难的。

对于困难的检索,困难点在于,如何保留文档中的上下文信息。只是简单的获取段落,企图从段落中获取总结性问题的答案,从一开始就是错误的,这不就是断章取义嘛。

本文来精读斯坦福大学的论文,论文提到了以树形结构,来组织数据的方式,来解决上述提到的上下文关联问题(或者说多跳问题)。流程图如下

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

二、如何把内容构建成结构树

问题最关键的是如何构建一颗分层的树。

2.1 数据切分

首先将检索语料库分割成长度为100的短的连续文本,类似于传统的检索增强技术。如果一个句子超过了100个标记的限制,我们将整个句子移到下一个块,而不是在句子中间删除它。这保留了每个块中文本的上下文和语义一致性(即保留完整的句子,不要分隔句子)。

将切分好的数据,使用文本嵌入模型,做embedding。此时得到了最下层的叶节点。

2.2 聚类分组

分类算法是最至关重要的。目标是,将内容相关的知识分成一个类,这里我更喜欢叫做topic。做好分类以后,便于总结归纳,并继续向上层传递知识。 把叶子节点进行分类,并抽取摘要,然后作为新的新生成层,在新生成层上,继续做分类和提取摘要,再生成新的层。这样就会有一个金字塔的结构。如下图所示

论文中提供的聚类算法有以下两个特点,称之为软聚类

  • 不限制每个topic中节点的数量
  • 不限制节点所在的topic,也即节点可能出现在多个topic。如下图所示。

2.3 软聚类算法

个人认为最精髓的就是聚类算法,但是很遗憾,论文中的介绍并不是很详细。

论文中只提到,聚类算法是基于高斯混合模型(GMMs),这是一种同时提供了灵活性和概率框架的方法。并使用一种降维技巧(UMAP) 来优化向量。

以下是论文原文关于高斯混合模型,和降维方法,最终完成分类。

Given a set of N text segments, each represented as a d -dimensional dense vector embedding, the likelihood of a text vector, x , given its membership in the k th Gaussian distribution, is denoted by P ( x | k ) = N ( x ; µ k , Σ k ) . The overall probability distribution is a weighted combination P ( x ) = P K k =1 π k N ( x ; µ k , Σ k ) , where π k signifies the mixture weight for the k th Gaussian distribution. The high dimensionality of vector embeddings presents a challenge for traditional GMMs, as distance metrics may behave poorly when used to measure similarity in high-dimensional spaces ( Aggarwal et al. , 2001 ). To mitigate this, we employ Uniform Manifold Approximation and Projection (UMAP), a manifold learning technique for dimensionality reduction ( McInnes et al. , 2018 ). The number of nearest neighbors parameter, n neighbors , in UMAP determines the balance between the preservation of local and global structures. Our algorithm varies n neighbors to create a hierarchical clustering structure: it first identifies global clusters and then performs local clustering within these global clusters. This two-step clustering process captures a broad spectrum of relationships among the text data, from broad themes to specific details.
Should a local cluster’s combined context ever exceed the summarization model’s token threshold, our algorithm recursively applies clustering within the cluster, ensuring that the context remains within the token threshold. To determine the optimal number of clusters, we employ the Bayesian Information Criterion (BIC) for model selection. BIC not only penalizes model complexity but also rewards goodness of fit ( Schwarz , 1978 ). The BIC for a given GMM is BIC = ln( N ) k 2 ln(ˆ L), where N is the number of text segments (or data points), k is the number of model parameters, and ˆ L is the maximized value of the likelihood function of the model. In the context of GMM, the number of parameters k is a function of the dimensionality of the input vectors and the number of clusters. With the optimal number of clusters determined by BIC, the Expectation-Maximization algorithm is then used to estimate the GMM parameters, namely the means, covariances, and mixture weights.
While the Gaussian assumption in GMMs may not perfectly align with the nature of text data, which often exhibits a sparse and skewed distribution, our empirical observations suggest that it offers an effective model for our purpose. We run an ablation comparing GMM Clustering with summarizing contiguous chunks and provide details in Appendix B .

2.4 提取摘要

 为了避免歧义下边给出了论文的原文。关于摘要,这里我的理解是,把分类后的topic所包含的叶子节点。一起送给LLM去生成一个摘要。

Model-Based Summarization
After clustering the nodes using Gaussian Mixture Models, the nodes in each cluster are sent to a language model for summarization. This step allows the model to transform large chunks of text into concise, coherent summaries of the selected nodes. For our experiments, we use gpt-3.5-turbo to generate the summaries. The summarization step condenses the potentially large volume of retrieved information into a manageable size. We provide statistics on the compression due to the summarization in Appendix C and the prompt used for summarization in Appendix D .

摘要提取的prompt

You are a Summarizing Text Portal,Write a summary of the following, including as many key details as possible: {context}:

2.5 关于模型生成摘要的幻觉问题

虽然摘要模型通常会产生可靠的摘要,但一项重点注释研究显示,约4%的摘要包含轻微的幻觉。这些问题没有传播到父节点,对问答任务也没有明显的影响。关于幻觉的深入分析,请参考附录E。

三、如何查找树

按照分层,逐层找到最相关的。

两种查询机制:分层和不分层。这些方法提供了独特的方法来遍历多层结构树来检索相关的信息,每一种都有自己的优点和权衡。

3.1 分层按照树遍历

树遍历方法首先根据其与查询嵌入的余弦相似度,选择前k个最相关的根节点。在下一层考虑这些节点被选择的子节点,并根据它们与查询向量的余弦相似度再次从这个池中选择前k个节点。重复这个过程,直到我们到达叶节点。最后,将来自所有选定节点的文本连接起来,以形成检索到的上下文。该算法的步骤概述如下:

 把原始query转成向量。然后使用向量检索,注意对知识树是分层检索。一层一层的向下传递。把每层最先关的数据,最后汇总到一起,通过LLM生成最终的答案。

3.2 不分层

 直接对全部节点执行检索。这种方法不是分层进行,而是将多层树扁平化成一层,本质上是将所有节点放到同一级别上进行比较。获取最相关的topK。

3.3 哪种检索方式更好?

不分层的检索方式更好,因为它提供了比树遍历更大的灵活性;也就是说,通过同时搜索所有节点,它检索到给定问题的正确粒度级别的信息。相比之下,当使用具有相同的d和k值的树遍历时,来自树的每个级别的节点的比率将是恒定的。因此,无论问题如何,高阶主题信息与颗粒状细节的比例都将保持不变。

四、效果如何

论文中使用的测试数据集: NarrativeQA, QASPER, and QuALITY

NarrativeQA数据集,包括基于书籍和电影文本全文的问答对,总计1572个文档。

QASPER数据集包括1585篇NLP论文中的5049个问题,每个问题都在探索嵌入全文中的信息

QuALITY数据集由多项选择题组成,每个问题都伴随有平均约5000个标记的上下文段落(Pang et al.,2022)。这个数据集要求对整个文档的QA任务进行推理,从而使我们能够度量我们在中等长度文档上的检索系统的性能。该数据集包括一个具有挑战性的子集,QuALITYHARD,它包含了大多数人类注释者在速度设置中回答错误的问题。

NarrativeQA is a dataset that comprises question-answer pairs based on the full texts of books
and movie transcripts, totaling 1,572 documents ( Koˇcisk`y et al. , 2018 ; Wu et al. , 2021 ). The NarrativeQA-Story task requires a comprehensive understanding of the entire narrative in order to accurately answer its questions, thus testing the model’s ability to comprehend longer texts in the literary domain. We measure performance on this dataset using the standard BLEU (B-1, B-4), ROUGE (R-L), and METEOR (M) metrics. Please see appendix H for more details on the NarrativeQA evaluation script used in our experiments.
The QASPER dataset includes 5,049 questions across 1,585 NLP papers, with each question probing for information embedded within the full text ( Dasigi et al. , 2021 ). The answer types in QASPER are categorized as Answerable/Unanswerable, Yes/No, Abstractive, and Extractive. Accuracy is measured using standard F1. Lastly, the QuALITY dataset consists of multiple-choice questions, each accompanied by context passages averaging approximately 5,000 tokens in length ( Pang et al. , 2022 ). This dataset calls for
reasoning over the entire document for QA tasks, enabling us to measure the performance of our retrieval system on medium-length documents. The dataset includes a challenging subset, QuALITYHARD, which contains questions that a majority of human annotators answered incorrectly in a speed-setting. We report accuracies for both the entire test set and the HARD subset.

整体的提示功能在 3% -20%,其中在困难的数据集上的测试,提升效果来到了20%

 

五、数据分层真的有意义吗?

直方图显示了使用三个检索器(SBERT、BM25和DPR)在三个数据集的不同层中检索到的节点的百分比。数据表明,对最终检索有贡献的很大一部分节点来自非叶层,其中显著的比例来自第一层和第二层,突出了树状的层次总结在检索过程中的重要性。

下图展示的是,数据不是来远不叶子节点的比例。也就是说这些数据无法只在叶子节点得到正确的回答。

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

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

相关文章

抖店创业者必看!2024年开店营业执照的类型有哪些?开哪个类型?

大家好,我是电商花花。 最近还是有不少人问花花做抖音小店要营业执照吗?个人店可以吗? 目前开抖音小店主要有个人店、个体工商户、企业店这三种店铺类型。 今天来给大家说一下做抖音小店都有什么类型,以及都有什么区别&#xf…

MacOs 围炉夜话

文章目录 一、安装 Mac 一、安装 Mac macOS是一套由苹果开发的运行于Macintosh系列电脑上的操作系统。macOS是首个在商用领域成功的图形用户界面操作系统。 VM虚拟机怎么安装mac os?(全教程) 虚拟机:VMware Workstation 17 pro W…

企业微信应用开发:使用Cpolar域名配置进行本地接口回调的调试指南

文章目录 1. Windows安装Cpolar2. 创建Cpolar域名3. 创建企业微信应用4. 定义回调本地接口5. 回调和可信域名接口校验6. 设置固定Cpolar域名7. 使用固定域名校验 企业微信开发者在应用的开发测试阶段,应用服务通常是部署在开发环境,在有数据回调的开发场…

【蓝桥备赛】字串简写

字串简写 数据范围 字符串的长度为5*10的五次方,on方时间复杂度会很大。 才用动态规划的思想,dp[i]以i开头的的可能性,因为长度必须大于等于k,当i小于k的时候,如果等于第一个字符,s1时,dp[…

图像压缩感知的MATLAB实现(OMP)

前面实现了 压缩感知的图像仿真(MATLAB源代码) 效果还不错,缺点是速度慢如牛。 下面我们采用OMP对其进行优化,提升速度。具体代码如下: 仿真 构建了一个MATLAB文件,所有代码都在一个源文件里面&#xf…

系统保护规则(Sentinel)

系统保护规则 CPU使用率 设置 为了方便产生现象, 设置了使用率朝贡国10% 就触发保护 效果 入口QPS 设置 针对 所有接口的平均 QPS 阈值 效果 访问次数很多的情况下,即可出现

英文输入法(C 语言)

题目 主管期望你来实现英文输入法单词联想功能,需求如下: 依据用户输入的单词前缀,从已输入的英文语句中联想出用户想输入的单词。按字典序输出联想到的单词序列,如果联想不到,请输出用户输入的单词前缀。 注意 英…

【鸿蒙开发】第十四章 Stage模型应用组件-任务Mission

1 任务(Mission)管理场景 任务(Mission)管理相关的基本概念如下: AbilityRecord:系统服务侧管理一个UIAbility实例的最小单元,对应一个应用侧的UIAbility组件实例。系统服务侧管理UIAbility实例数量上限为512个。 Mi…

Python实战: 获取 后缀名(扩展名) 或 文件名

Python实战: 获取 后缀名(扩展名) 或 文件名 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程 👈 希望得到您的订阅和支持~ &…

【大厂AI课学习笔记NO.52】2.3深度学习开发任务实例(5)需求采集考虑维度

今天来学习,怎么做需求分析,如何明确数据采集需求。 我把自己考试通过的学习笔记,都分享到这里了,另外还有一个比较全的思维脑图,我导出为JPG文件了。下载地址在这里:https://download.csdn.net/download/g…

《Linux C编程实战》笔记:信号量

信号量在操作系统的书里一般都有介绍,这里就只写书上说的了。 信号量是一个计数器,常用于处理进程或线程的同步问题,特别是对临界资源访问的同步。临界资源可以简单地理解为在某一时刻只能由一个进程或线程进行操作的资源,这里的…

FairyGUI × Cocos Creator 3.x 使用方式

前言 上一篇文章 FariyGUI Cocos Creator 入门 简单介绍了FairyGUI,并且按照官方demo成功在Cocos Creator2.4.0上运行起来了。 当我今天使用Creator 3.x 再引入2.x的Lib时,发现出现了报错。 这篇文章将介绍如何在Creator 3.x上使用fgui。 引入 首先&…

EarMaster Pro 7 简体中文破解版下载 v7.2.0.42 电脑版

软件介绍 EarMaster Pro 简体中文破解版是一款由丹麦皇家音乐学院官方制作的多功能音乐品鉴教育软件,软件具有丰富的功能,它可以自定义培训课程,针对性地训练音准、节奏、和声等音乐要素,用户可以根据自身需求和水平选择不同难度…

Minimize Inversions

先来看看官方题解的做法,他一反常态的没有在逆序对题目里面考虑每个位置的贡献,而是直接回到定义考虑每对数是否是逆序对 我们考虑原数列中任意的一组数\((a_i,a_j)\)和\((b_i,b_j)\)。如果最开始两个都不是逆序对,那么交换之后两个都是逆序对…

RabbitMQ的死信队列和延迟队列

文章目录 死信队列如何配置死信队列死信队列的应用场景Spring Boot实现RabbitMQ的死信队列 延迟队列方案优劣:延迟队列的实现有两种方式: 死信队列 1)“死信”是RabbitMQ中的一种消息机制。 2)消息变成死信,可能是由于…

VBA语言専攻资料周末新增

各位T3学员∶本周VBA技术资料增加5讲到385讲,看到通知后联络我免费领取资料。成果来之不易,您更新后请说声谢谢,感恩我的成果。MF381:使工作表使用区域适合窗口MF382:引用复制后的工作表MF383:处理Excel中存…

外星文明会是朋友还是敌人?科学家用AI模拟揭示惊人答案!

引言:人类与外星文明的潜在互动 自古以来,人类就对外太空充满了好奇与向往,无数科幻作品中都描绘了人类与外星文明的潜在互动。然而,这些互动并非总是和平友好的,正如物理学家Stephen Hawking所警告的,盲目…

Linux安装jdktomcatMySQl一战完成

一、jdk安装具体步骤 1、查询是否有jdk java -version 2、进入opt目录 cd /opt/ 连接服务器工具 进入opt目录,把压缩文件上传 查询是否查询成功 进入解压到的目录 cd /usr/local/创建新文件夹 mkdir java 再回到opt目录进行解压 cd /opt 解压到刚刚创建的文…

如何使用 NFTScan NFT API 在 Mantle 网络上开发 Web3 应用

Mantle Network 是建立在以太坊区块链之上的第 2 层扩展解决方案,采用了 Optimistic Rollups 技术,由 BitDAO 孵化,以提供比以太坊更快速和更经济的交易体验。由于 Mantle 基础链构建在 OP Stack 之上并与 EVM 兼容,因此以太坊网络…

LeetCode 102. 二叉树的层序遍历

题目链接https://leetcode.cn/problems/binary-tree-level-order-traversal/description/ 通过队列实现层序遍历 class Solution {public List<List<Integer>> levelOrder(TreeNode root) {List<List<Integer>> res new ArrayList<>();Queue<…