【RAG】HiQA:一种用于多文档问答的层次化上下文增强RAG

前言

文档领域的RAG,之前的工作如ChatPDF等很多的RAG框架,文档数量一旦增加,将导致响应准确性下降,如下图;现有RAG方法在处理具有相似内容(在面对大量难以区分的文档时)和结构的文档时表现不佳;用户查询常常涉及元信息,还增加了检索和生成的复杂性,导致检索的准确性会下降,本文介绍的方法-HiQA,一种用于主要解决多文档问答(MDQA)中的检索增强生成方法。

数量多文档RAG对着文档数量的性能变化

方法

提出了HiQA框架,用于解决多文档问答中的检索准确性问题。该框架主要由Markdown格式化器(Markdown Formatter)、分层上下文增强器(Hierarchical Contextual Augmentor, HCA)、多路径检索器(Multi-Route Retriever, MRR)三部分组成。

Markdown格式化器(Markdown Formatter)

该部分主要是使用大模型的方式指导文档解析生成markdown的过程,这样的比较耗费时间,可以考虑替换成一些轻量的解析方法,常见的过程可以参考以往的一些文档《【文档智能 & RAG】RAG增强之路:增强PDF解析并结构化技术路线方案及思路》

下面看看这篇文章介绍的过程:
Markdown格式化器。该图展示了从长文档中提取章节元数据和相关内容的过程,并确保在滑动
窗口处理下的对齐

首先,使用LLM将源文档转换为Markdown格式的文档,每个章节对应一个自然段落,包含章节元数据和内容。LLM的处理过程如下:

其中, D I D_I DI是输入的PDF文档, D M D_M DM是输出的Markdown文档, M c M_c Mc是语言模型, D M ( t ) D^{(t)}_M DM(t)是第 t t t个时间步的输出。

对于图片引用
利用一个名为PDFImageSearcher的开源工具,用于从文档中提取位图和SVG矢量图
像,以及一个API来检索图像。它利用图像周围的文本、图像标题和一个可选的视觉语言模型,为每个图像生成一个描述性文件。

对表格增强:表格的语义值源自其定义,包括整体描述、标题和行/列标签,因此,在嵌入表格时,仅关注这些语义元素,将表格视为类似文本知识。

表格嵌入。为了在嵌入过程中减少噪声,省略了数据字段。但是,如果检索到这些数据字段,它们将被保留以提供LLM的上下文

对图片增强:利用视觉语言生成模型来创建描述性标题,这些标题包含了图像的显著特征。然后对这些标题进行嵌入。

应用视觉-语言模型生成图像语义的文本描述,然后将其纳入片段中

总之,为了得到高质量的文档处理结果,使用指令进行生成markdown核心思想如下:

  • 将文档中的每一章,无论其级别如何,都视为Markdown中的一级标题,并附上数字标识符。将每章视为一个知识片段,而不是固定大小的块。
  • 设置正确的章节编号,后面跟着章节标题。
  • 通过Markdown语法生成表格并记录表格标题。

分层上下文增强器(Hierarchical Contextual Augmentor, HCA)

使用级联文档结构在数据处理过程中进行文本增强:

从Markdown文件中提取层次结构元数据,并将其级联到每个章节,形成增强的段落。具体步骤包括:

  • 使用深度优先搜索遍历章节树,连接和传递元数据。
  • 对文本、表格和图像等不同类型的段落进行不同的处理。

多路径检索器(Multi-Route Retriever, MRR)

最后,采用多路径检索方法来找到最适合的段落,并将其作为上下文输入到语言模型中。具体方法包括:

  • 向量相似性匹配:使用Elasticsearch和BM25。
  • 关键词匹配:使用预训练的关键实体检测模型提取关键词。
  • 补偿向量相似性限制:结合基于频率的检索技术和关键词排名策略。

HiQA框架
综合以上三个组件,形成了HiQA框架。公式如下:

其中, α α α β β β是超参数,分别平衡向量相似性和信息检索得分的贡献, ∣ C ∣ |C| C表示匹配的关键词数量。

实验效果

总结

本文介绍了HiQA,这是一个专门为了解决现有RAG在多文档问答(MDQA)环境中的局限性而设计的新型框架,特别是在处理无法区分的多文档时。利用文档的结构元数据有效地进行块分割和嵌入增强,并辅以多路检索机制以提高检索效率。

参考文献

  • HiQA: A Hierarchical Contextual Augmentation RAG for Multi-Documents QA,https://arxiv.org/pdf/2402.01767v2

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

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

相关文章

【leetcode】125.验证回文串

思路: isPalindrome 函数: 使用两个指针 left 和 right 分别指向字符串的开始和结束。使用 isalnum 函数跳过非字母数字字符。使用 tolower 函数将字符转换为小写进行比较。如果在某一步比较中发现字符不相等,则返回 0(false&…

Python进阶--函数进阶

目录 1. 函数多返回值 2. 函数多种传参方式 (1). 位置参数 (2). 关键字参数 (3). 缺省参数 (4). 不定长参数 3. 匿名函数 (1). 函数作为参数传递 (2). lambda匿名函数 1. 函数多返回值 def return_num():return 1# 返回1之后就不会再向下继续执行函数体return 2 resu…

gstreamer 内存 alloctor 介绍

文章目录 前言一、gstreamer 默认的内存 alloctor1. gstreamer 中默认的内存 allocator 为 GST_ALLOCATOR_SYSMEM (即SystemMemory)2. GST_ALLOCATOR_SYSMEM 申请内存实例二、gstreamer 目前支持的几种内存 alloctor1.GstDmaBufAllocator1.1 GstDmaBufAllocator 介绍1.2 GstDma…

Vue3轻松实现前端打印功能

文章目录 1.前言2.安装配置2.1 下载安装2.2 main.js 全局配置3.综合案例3.1 设置打印区域3.2 绑定打印事件3.3 完整代码4.避坑4.1 打印表格无边框4.2 单选框复选框打印不选中4.3 去除页脚页眉4.4 打印內容不自动换行1.前言 vue3 前端打印功能主要通过插件来实现。 市面上常用的…

基于springboot vue地方废物回收机构管理系统设计与实现

博主介绍:专注于Java(springboot ssm 等开发框架) vue .net php phython node.js uniapp 微信小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不…

GeoCue与Xer Technologies合作推动无人机测绘技术革新

GeoCue与Xer Technologies合作推动无人机测绘技术革新 近期,LiDAR测绘硬件和软件开发商GeoCue与瑞士长航时混合动力无人机制造商Xer Technologies AG携手合作,成功将GeoCue的TrueView 720 LiDAR和图像传感器集成至Xer X8无人机平台。这一里程碑式的合作不仅标志着无人机测绘技…

基于STM32的智能门锁控制系统设计

引言 本项目基于STM32微控制器设计了一个智能门锁控制系统,用户可以通过密码输入或指纹识别来控制门锁的开关。该系统集成了键盘、指纹传感器、舵机等外设,实现了门锁的安全、便捷控制,同时也具备了较强的扩展性。该项目展示了STM32在安防领…

某个应用的CPU使用率居然达到100%,我该怎么办?

摘至https://learn.lianglianglee.com/ CPU使用率 Linux 作为一个多任务操作系统,将每个 CPU 的时间划分为很短的时间片,再通过调度器轮流分配给各个任务使用,因此造成多任务同时运行的错觉。 为了维护 CPU 时间,Linux 通过事先定…

七、InnoDB数据存储结构

文章目录 1. 数据库的存储结构:页1.1 磁盘与内存交互基本单位:页1.2 页结构概述1.3 页的大小1.4 页的上层结构2. 页的内部结构2.1 第1部分:File Header(文件头部)和 File Trailer(文件尾部)2.1.1 File Header(文件头部)2.1.2 File tRAILER(文件尾部)2.2 第2部分:Fr…

【AIGC】通过OpenAi Canvas修改论文(附40条论文优化指令)

目录 1、用ChatGPT优化论文大纲和逻辑2、用ChatGPT充实论文内容3、用ChatGPT寻找案例和数据4、用ChatGPT检查语法和字词错误5、如何直接使用ChatGPT4o、o1、OpenAI Canvas6、OpenAI Canvas增强了啥?7、编程功能增强 在刚开始撰写学术论文时,很多小伙伴感…

深度学习之贝叶斯分类器

贝叶斯分类器 1 图解极大似然估计 极大似然估计的原理,用一张图片来说明,如下图所示: ​ 例:有两个外形完全相同的箱子,1号箱有99只白球,1只黑球;2号箱有1只白球,99只黑球。在一次…

LeetCode刷题日记之二叉树(六)

目录 前言二叉搜索树中的众数二叉树的最近公共祖先二叉搜索树的最近公共祖先总结 前言 又是学习LeetCode二叉树的新一天,今天还是接着学习一下二叉搜索树的内容,希望博主记录的内容能够对大家有所帮助 ,一起加油吧朋友们!&#x…

LeetCode讲解篇之2466. 统计构造好字符串的方案数

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 组成长度为i的字符串个数 组成长度为i - zero的字符串个数 组成长度为i - one的字符串个数 设数组f中i号元素的值为组成长度为i的字符串个数 则状态转移方程为f[i] f[i - zero] f[i - one],其中需…

MySQL中NULL值是否会影响索引的使用

MySQL中NULL值是否会影响索引的使用 为何写这一篇文章 🐭🐭在面试的时候被问到NULL值是否会走索引的时候,感到有点不理解,于是事后就有了这篇文章 问题: 为name建立索引,name可以为空select * from user …

使用标签实现MyBatis的基础操作

目录 前言 1.配置MyBatis⽇志打印 2.参数传递 2.1 #{} 和 ${}区别 2.2传递多个参数 3.增删改查 3.1增(Insert) 3.2删(Delete) 3.3改(Update) 3.4查(Select) 前言 接下来我们会使用的数据表如下: 对应的实体类为:UserInfoMapper 所有的准备工作都…

Nginx08-反向代理

零、文章目录 Nginx08-反向代理 1、概述 关于正向代理和反向代理,我们在前面已经介绍过了,简而言之就是正向代理代理的对象是客户端,反向代理代理的是服务端,这是两者之间最大的区别。 Nginx即可以实现正向代理,也可…

Python进阶--正则表达式

目录 1. 基础匹配 2. 元字符匹配 1. 基础匹配 正则表达式,又称规则表达式(Regular Expression),是使用单个字符串来描述、匹配某个句法规则的字符串,常被用来检索、替换那些符合某个模式(规则&#xff…

爱心曲线公式大全

local r a*((math.sin(angle) * math.sqrt(math.abs(math.cos(angle)))) / (math.sin(angle) 1.4142) - 2 * math.sin(angle) 2) local x r * math.cos(angle) -- 计算对应的x值 local z r * math.sin(angle) 1.5*a - --曲线公式绘画 local function generateParabola()…

【异常记录Vue_20241006】使用TagsView后控制台报错

报错截图 报错原因 未将TagsView所依赖的组件permission组件注册到store中,导致TagsView组件在找permission.routes时没找到 解决方法:store注册相应组件

应用界面编写(十四)

一. 介绍QT 接下来我们会在Qt Creater来进行界面的编写,并且在荔枝派中运行。那么我们有必要了解一下Qt到底是什么呢?它又为什么可以在荔枝派中运行呢? QT是一个跨平台的应用程序和用户界面框架,用于开发具有图形界面的软件。而…