私有大模型:针对长结构文档的回答方法

作者: Jon Saad-Falcon, Joe Barrow, Alexa Siu, Ani Nenkova, David Seunghyun Yoon, Ryan A. Rossi, Franck Dernoncourt

摘要:
大型语言模型(LLMs)在处理长文档问答(QA)时面临着无法适应其小上下文窗口的问题。为了解决这一问题,大多数现有工作集中在从文档中检索相关上下文,并将其表示为纯文本。然而,像PDF、网页和演示文稿等文档天然地具有不同页面、表格、部分等结构。将这些结构化文档表示为纯文本与用户对这些文档丰富结构的心理模型不一致。当系统必须查询文档以获取上下文时,这种不一致性会凸显出来,使得看似简单的问题也会难倒QA系统。为弥合处理结构化文档的这一根本差距,我们提出了一种称为PDFTriage的方法,使模型能够基于结构或内容检索上下文。我们的实验展示了PDFTriage增强模型在多个现有检索增强LLMs失败的问题类别上的有效性。为了促进这一基础问题的进一步研究,我们发布了一个基准数据集,其中包括900多个人工生成的问题,覆盖80个结构化文档,涉及10种不同类别的问答类型。我们的代码和数据集将在Github上发布。

引言

当文档无法适应LLM有限的上下文窗口时,可以部署不同策略来获取相关上下文。当前的方法通常依赖于预检索步骤从文档中获取相关上下文。这些预检索步骤往往将文档表示为纯文本块,与用户查询共享某些相似性并可能包含答案。然而,许多文档类型具有丰富的结构,例如网页、PDF、演示文稿等。将这些结构化文档表示为纯文本往往与用户对结构化文档的心理模型不一致。这可能导致对用户来说显而易见的问题在使用LLM的文档QA中失败。例如,考虑以下两个问题:

  1. “你能总结一下第5-7页的主要要点吗?”
  2. “表3中哪一年收入最高?”

在第一个问题中,文档结构被明确引用(“第5-7页”)。在第二个问题中,文档结构被隐含引用(“表3”)。在这两种情况下,识别关键上下文并回答问题都需要文档结构的表示。将文档视为纯文本会丢弃回答这些问题所需的相关结构。

我们提出通过允许模型基于结构或内容检索上下文来解决这一文档简化问题。我们的方法称为PDFTriage,使模型能够访问有关文档结构的元数据。我们通过为提示增加文档结构元数据和一组可由模型调用的检索函数来利用文档结构。我们的实验表明,通过提供结构和发出结构查询的能力,PDFTriage增强的模型能够可靠地回答现有检索增强LLMs无法回答的多类问题。

方法

image.png

PDFTriage方法包括三个步骤来回答用户的问题,如图1所示:

  1. 生成文档元数据:
  • 提取文档的结构元素并将其转换为可读的元数据。使用Adobe Extract API,我们将PDF转换为类似HTML的树结构,从中提取章节、章节标题、页面信息、表格和图形。
  1. 基于LLM的分类:
  • 查询LLM以选择文档中精确的内容(页面、章节、检索的内容)。
  1. 使用检索到的内容回答问题:
  • 根据问题和检索到的内容生成答案。
文档表示

我们考虑用户将交互的数字PDF文档作为结构化文档。使用Adobe Extract API,我们将PDF转换为类似HTML的树结构,允许我们提取章节、章节标题、页面信息、表格和图形。生成的元数据映射为JSON类型,用作LLM的初始提示。

LLM查询文档

PDFTriage方法利用五种不同的函数:fetch_pages, fetch_sections, fetch_table, fetch_figure 和 retrieve。每个函数允许PDFTriage系统收集与给定PDF文档相关的精确信息,中心围绕标题、子标题、图形、表格和章节段落中的结构化文本数据。

问题回答

为了初始化PDFTriage进行问题回答,我们使用GPT-3.5的系统提示格式输入以下内容:

你是一个专家文档问答系统。你通过查找文档中的相关内容并根据这些内容回答问题。
文档: <文档的文本元数据>

使用用户提示,我们输入没有额外格式的查询。接下来,PDFTriage系统使用已建立的函数查询文档以获取回答问题所需的任何信息。每次轮询中,PDFTriage使用一个函数收集所需的信息,然后处理检索到的上下文。在最后一次轮询中,模型输出问题的答案。

实验与结果

我们构建了一个以文档为中心的问答任务集来测试PDFTriage的有效性。每个任务评估文档问答的不同方面,分析文本、表格和图形中的推理能力。

主要实验

我们使用PDFTriage方法回答所选PDF文档数据集中的各种问题。这个策略利用PDF的结构和GPT-3.5的交互系统功能,更精确和准确地提取答案。

检索基线
  • 页面检索: 我们为每个文档的页面建立索引,使用text-embedding-ada-002嵌入进行检索,并将每页的文本作为回答问题的上下文。
  • 文本块检索: 我们将文档的所有文本连接在一起,然后分块为100个单词的片段,使用text-embedding-ada-002嵌入进行检索,并将每块文本作为回答问题的上下文。
人工评估

我们建立了一项人工标注研究来衡量PDFTriage与检索基线之间的差异。我们雇佣了12位有经验的英语标注员来评估每个系统生成的答案。

结果与分析

  • PDFTriage优于基于检索的方法: 在人工标注研究中,标注员更喜欢PDFTriage生成的答案。PDFTriage在多种问题类型上表现更好。
  • PDFTriage提高了答案质量、准确性、可读性和信息性: PDFTriage的答案在准确性和整体质量上得分最高。
  • PDFTriage在文档长度上表现一致: 文档长度对PDFTriage的效果影响较小。

结论与未来工作

我们提出了PDFTriage,这是一种专门用于文档任务的问答技术。我们的方法与现有的问答技术(如页面检索和文本块检索)进行了比较,展示了PDFTriage的优越性。我们正在考虑以下方向的未来工作:

  1. 开发多模态方法,将表格和图形信息整合到GPT-4文档问答中。
  2. 在PDFTriage方法中结合问题类型,提高方法的效率和效果。

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

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

相关文章

【计算机视觉】数字图像处理基础知识(模拟和数字图像、采样量化、像素的基本关系、灰度直方图、图像的分类)

一、图像的基本概念 图像(image)&#xff1a;图像这个简单单词其实包含两方面含义&#xff1a; “图”&#xff1a;是指物体反射光or透射光的分布“像”&#xff1a;接收和记录其分布所得到的结果&#xff08;如&#xff1a;人的视觉系统所接收“图”在人脑中形成的映像或认识&…

LLVM入门教学——SanitizerCoverage插桩(Linux)

1、介绍 LLVM 的 SanitizerCoverage 是一种代码覆盖工具&#xff0c;设计用于支持基于 fuzzing 的测试和其他安全相关工具。SanitizerCoverage 在编译时插桩代码&#xff0c;以在运行时收集覆盖信息&#xff0c;从而帮助识别未覆盖的代码路径&#xff0c;提高测试的有效性和全…

算法-随机快排及荷兰国旗优化

文章目录 算法介绍 :1. 随机快排解析2. 荷兰国旗问题3. 随机快排优化4. 总结随机快排 算法介绍 : 随机快速排序和传统的快速排序的逻辑本质是一致的,都是找到一个值作为划分的中间位置,左边数值均小于该数值,右边数值均大于该数值,但是与传统的快排又不一致的是,我们的这个位置…

国内的期权模拟账户怎么申请?

国内的期权模拟账户可以在券商和期权分仓平台处申请开通&#xff0c;期权相比于股票具有杠杆投资、风险控制等新特性。 期权模拟交易客户端能够提供期权的开平仓交易、备兑开仓&#xff0f;平仓、行权等交易指令&#xff0c;下文为大家介绍国内的期权模拟账户怎么申请&#xff…

2024 cicsn Ezheap

文章目录 检查 libc2.35利用adddeleeditshow 思路exp结果 检查 libc2.35 利用 add 0x80个chunk&#xff0c;遍历选一个没有被用的&#xff0c;输入的size<0x501,然后malloc后会清零安装输入的size&#xff0c;然后输入内容&#xff0c;长度也是输入的size dele 指定索引…

第十六课,海龟画图:设置画笔颜色、宽度函数,移动画笔函数

一&#xff0c;turtle.color()&#xff1a;画笔颜色函数 这个函数能设置画笔画出来的颜色&#xff0c;当然&#xff0c;使用它之前你需要认识有哪些“颜料”可供你选择&#xff0c;turtle库的color()函数可以选择以下颜色&#xff1a; "white" 白色&#xff08;建议…

3步轻松月入过万,APP广告新模式大揭秘!

万万没想到&#xff1a;用这个APP广告模式&#xff0c;月入过万竟然如此简单&#xff01; 在移动应用开发的世界里&#xff0c;变现一直是一道难题。 许多APP开发者和产品经理为了提高收益、增强用户黏性&#xff0c;不断尝试各种策略。 然而&#xff0c;很多时候&#xff0c…

2024-6-1 石群电路-20

2024-6-1&#xff0c;星期六&#xff0c;18:24&#xff0c;天气&#xff1a;晴&#xff0c;心情&#xff1a;晴。已经到学校啦&#xff0c;本来打算今天休息一天不更了&#xff0c;但是觉得可以更新完再休息&#xff0c;没有这么累&#xff0c;哈哈哈哈&#xff0c;这就不得不说…

阿里云部署nodejs

目录 1、安装node.js 1-1 进入opt/software 1-2 下载node.js安装包 1-3 解压 2 配置环境变量 2-1 vim中配置环境变量 2-2 命令行中保存环境变量 2-3 检查安装版本 2-3 更换镜像 3、上传node.js项目 1-1 启动项目 1-2 配置对应的安全组 ​编辑 4、pm2启动多个node项…

Linux目录的基本结构(RHEL8系统基本使用之文件操作)

1.Linux的目录树结构 2.各目录的功能介绍 3.理解文件路径表示方法 Who&#xff1f;——>当前登录的用户 Where?——>路径 我要在哪儿创建文件&#xff1f; 我要删除什么地方的什么文件&#xff1f; 我所要查看的文件在哪里&#xff1f; What?——>操作命令 Ho…

Ultralytics x SwanLab:可视化YOLO模型训练

Ultralytics是YOLO官方团队推出的CV训练与推理框架&#xff0c;不仅支持目标检测任务&#xff0c;还支持分割、姿态识别、分类等更多任务。 SwanLab是一个深度学习实验管理与训练可视化工具&#xff0c;由西安电子科技大学团队打造&#xff0c;融合了Weights & Biases与Ten…

java web爬虫

目录 读取本地文件 从网站读取文件 java爬虫 总结 读取本地文件 import java.io.File; import java.io.PrintWriter; import java.util.Scanner;public class ReplaceText {public static void main() throws Exception{File file new File("basic\\test.txt"…

vue3:插槽、具名插槽、条件插槽、作用域插槽、具名作用域插槽 一次性搞清楚 --- 通俗易懂

1、插槽的使用&#xff1a; ~父组件index.vue&#xff1a; <h3>我是父组件testSlot</h3> <!-- 调用子组件alertBox测试插槽 --> <alertBox></alertBox> <alertBox>Something good will be happened. /alertBox> <br> ~alertBo…

钓虾馆计时计费怎么用,佳易王钓虾馆钓鱼场计时器工具软件操作教程

钓虾馆计时计费怎么用&#xff0c;佳易王钓虾馆钓鱼场计时器工具软件操作教程 一、前言 以下软件操作教程以&#xff0c;佳易王钓虾馆钓鱼场计时计费软件为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 可以多种单价计费方式&#xff0c;在系统…

Elasticsearch 认证模拟题 - 4

一、题目 生成快照&#xff0c;或快照生命周期 1.1 考点 快照生命周期&#xff08;最好通过界面化配置&#xff09;创建仓库创建快照 &#xff08;因为这个需要部署共享文件&#xff0c;所以这个我就在虚拟机上简单操作一下&#xff09; 注&#xff1a; 部署共享文件系统可…

【开发利器】使用OpenCV算子工作流高效开发

学习《人工智能应用软件开发》&#xff0c;学会所有OpenCV技能就这么简单&#xff01; 做真正的OpenCV开发者&#xff0c;从入门到入职&#xff0c;一步到位&#xff01; OpenCV实验大师Python SDK 基于OpenCV实验大师v1.02版本提供的Python SDK 实现工作流导出与第三方应用集…

MySql全文索引+Ngram

一、关于Ngram 1.1 什么是ngram MySQL 内置的全文解析器使用单词之间的空格作为分隔符&#xff0c;这对于不使用空格做分隔符的语言是一种限制。为了解决这一限制&#xff0c;MySQL提供了一个支持中文、日文和韩文&#xff08;CJK&#xff09;的ngram全文解析器。ngram 全文解…

图像加雾算法的研究与应用

目录 前言 一、图像加雾 1、基于传统方法的雾图合成 2、基于深度学习的雾图合成 3、基于Lightroom Classic实现软件加雾 4、基于深度图的方法实现加雾 二、开源的数据集 三、参考文章 前言 在去雾任务当中&#xff0c;训练和评估去雾算法需要大量的带有雾霾和无雾霾的…

聊聊几种常见的分布式Session解决方案

highlight: xcode theme: vuepress 问题引入&#xff1a;什么是分布式Session&#xff1f; 分布式 Session 是指在多台服务器之间共享和管理用户的会话数据&#xff0c;使得用户的会话状态能够在不同的服务器上保持一致。这样&#xff0c;无论用户的请求被路由到哪台服务器&…

【Go语言精进之路】构建高效Go程序:掌握变量、常量声明法则与iota在枚举中的奥秘

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 引言一、变量1.1 基础知识1.2 包级变量的声明形式深入解析&#x1f4cc; 声明并同时显式初始化&#x1f4cc; 声明但延迟初始化&#x1f4cc; 声明聚类与就近原则 1.3 局部变量的声明形式深入探讨&#x1f4cc; 延迟初始化的…