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

作者: 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方法中结合问题类型,提高方法的效率和效果。

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

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

相关文章

Yolov10笔记

一、前言 清华大学团队设计的Yolov10. 在这项工作中&#xff0c;我们主要从后处理和模型结构两方面进一步优化YOLO系列模型的性能和延迟平衡。我们首先为YOLO引入了端到端训练的一致双重分配&#xff0c;这在大大降低推理延迟的情况下保证了性能。此外&#xff0c;我们针对YOLO…

DBeaver添加DM8驱动(maven下载和jar包下载配置)

DBeaver 24.0.3添加DM8驱动 下载DBeaver下载DM达梦驱动下载 安装配置使用自带Dameng自行添加达梦驱动 因为最近公司项目有信创要求&#xff0c;所以下载了达梦数据库。使用自带的达梦管理工具不是很方便&#xff0c;于是换了DBeaver。 哼哧哼哧安装好后&#xff0c;创建数据库连…

前端功能拖拽篇:dragleave拖拽事件穿透子元素的优雅解决方案

文章目录 前情提要应用场景⭐拖拽改变元素位置⭐拖拽改变目标区域的样式⭐dragleave拖拽事件穿透子元素的优雅解决方案 最后 前情提要 在前端工作过程中&#xff0c;避免不了要接触各种技术&#xff0c;拖拽就是其中一个&#xff0c;大部分关于拖拽的基础知识和Demo都在MDN中写…

【智能算法】吸引-排斥优化算法(AROA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2024年&#xff0c;K Cymerys受到自然界中吸引-排斥现象启发&#xff0c;提出了吸引-排斥优化算法&#xff08;Attraction–Repulsion Optimization Algorithm, AROA&#xff09;。 2.算法…

Verilog HDL基础知识(二)

引言&#xff1a;本文继续介绍Verilog HDL基础知识&#xff0c;重点介绍赋值语句、阻塞与非阻塞、循环语句、同步与异步、函数与任务语法知识。 1. 赋值语句 在Verilog中&#xff0c;有两种进行赋值的方法&#xff0c;即连续赋值语句和过程赋值语句&#xff08;块&#xff09…

[vue2项目]vue2+supermap[mapboxgl]+天地图之地图的初始化

Supermap参考教程 天地图 一、安装 1、终端:npm install @supermap/vue-iclient-mapboxgl 2、在package.json文件的dependencies查看@supermap/vue-iclient-mapboxgl依赖是否安装成功。 3、在mian.js全局引入 import VueiClient from @supermap/vue-iclient-mapboxgl; Vue.u…

新一代目标检测来了:YOLOv10 | 理论概要

点击下方卡片&#xff0c;关注“小白玩转Python”公众号 YOLO的简史 在我们深入探讨YOLOv10之前&#xff0c;让我们回顾一下YOLO的发展历程。YOLO在实时目标检测领域一直是先驱&#xff0c;兼顾速度和准确性。从YOLOv1到YOLOv9&#xff0c;每个版本在架构、优化和数据增强方面都…

Ansible04-Ansible Vars变量详解

目录 写在前面6 Ansible Vars 变量6.1 playbook中的变量6.1.1 playbook中定义变量的格式6.1.2 举例6.1.3 小tip 6.2 共有变量6.2.1 变量文件6.2.1.1 变量文件编写6.2.1.2 playbook编写6.2.1.3 运行测试 6.2.2 根据主机组使用变量6.2.2.1 groups_vars编写6.2.2.2 playbook编写6.…

场外个股期权零门槛开户安全吗?

一般来说场外个股期权是需要5000w门槛验资20个交易日的&#xff0c;但门槛对于大多数散户而言是很难达到的&#xff0c;因此场外个股期权零门槛开户因此产生&#xff0c;个人散户参与场外个股期权可以通到机构通道方直接下单交易&#xff0c;下文为大家揭秘场外个股期权零门槛开…

基于SpringBoot的旅游攻略信息系统的设计与实现

文档介绍 用户群体 针对已经学习过SpringBoot的同学,希望通过一个项目来加强对框架的应用能力,增加项目经验 针对需要完成大学期间的毕设项目的同学,可以通过此文档了解整个系统技术架构,为自己的毕设论文提供指导性建议 文档内容 此文档内容可以让学习此实战项目的同学有一…

2024年5月月终总结

一转眼4月份又过去了&#xff0c;按照年初的承诺&#xff0c;每月照例要写一个月总结&#xff0c;简单回顾下: 1) 英语学习继续进行&#xff1a; 百词斩&#xff1a; 不背单词&#xff1a; 每日英语听力&#xff1a; 2&#xff09;中医学习每天15分钟&#xff0c;没有中断。 …

数据库系统概论(超详解!!!)第十节 过程化SQL

1.Transact-SQL概述 SQL(Structure Query Language的简称&#xff0c;即结构化查询语言) 是被国际标准化组织(ISO)采纳的标准数据库语言&#xff0c;目前所有关系数据库管理系统都以SQL作为核心&#xff0c;在JAVA、VC、VB、Delphi等程序设计语言中也可使用SQL&#xff0c;它是…

AIGC全面揭秘:人工智能内容生成的无限可能!

一、引言 随着人工智能技术的不断发展&#xff0c;AIGC&#xff08;人工智能生成内容&#xff09;技术逐渐受到广泛关注。本文将全面介绍AIGC的相关知识。 二、AIGC简介 AIGC是利用人工智能技术自动生成内容的一种技术。它可以根据给定的输入数据和规则&#xff0c;自动产生符…

详解 Spark 编程之 RDD 依赖关系

一、依赖与血缘关系 依赖&#xff1a;两个相邻 RDD 之间的关系血缘关系&#xff1a;多个连续的 RDD 的依赖由于 RDD 不会保存数据&#xff0c;为了提高容错性&#xff0c;每个 RDD 都会保存自己的血缘关系&#xff0c;一旦某个转换过程出现错误&#xff0c;可以根据血缘关系重新…

开源VS闭源:AI未来的十字路口

人工智能领域的发展日益加速&#xff0c;其中关于模型的开源和闭源策略引起了业界的广泛关注。开源策略指的是将软件的源代码公开&#xff0c;允许任何人自由使用、研究甚至改进&#xff1b;而闭源策略则是指软件的源代码不公开&#xff0c;只有特定的个体或组织有权访问和修改…

【IPFS应用开发】基于IPFS的视频播放器

本系列文章是针对 https://blog.csdn.net/weixin_43668031/article/details/83962959 内容的实现所编写的。开发经历包括思考过程、重构和推翻重来。 基于IPFS的视频播放器 想写一个真正的、基于IPFS的&#xff0c;可以播放IPFS上的视频的程序支持多种数据加载格式同时支持单文…

docker部署Minio对象存储及使用

1.拉取镜像 docker pull minio/minio2.创建数据目录 mkdir -p /data/minio/data3.启动容器 docker run -p 39000:9000 -p 39090:9090 \ --name minio \ -d --restartalways \ -e "MINIO_ACCESS_KEYjyadmin" \ -e "MINIO_SECRET_KEYjyzx2023" \ -v /data…

C++数据结构之:链List

摘要&#xff1a; it人员无论是使用哪种高级语言开发东东&#xff0c;想要更高效有层次的开发程序的话都躲不开三件套&#xff1a;数据结构&#xff0c;算法和设计模式。数据结构是相互之间存在一种或多种特定关系的数据元素的集合&#xff0c;即带“结构”的数据元素的集合&am…

用esp prog烧录ESP32-C3板踩坑

附ESP32C3的GPIO一览&#xff1a; vscode选择Jtag烧录&#xff0c;终端输出esp_usb_jtag: could not find or open device&#xff1a; D:\Devtools\Espressif\tools\openocd-esp32\v0.12.0-esp32-20230921\openocd-esp32\bin\openocd.exe -f board/esp32s3-builtin.cfgOpen O…

xxl-job的使用

介绍 在分布式中&#xff0c;很多微服务可能存在多实例部署的现象&#xff0c;如果在某个具体的微服务中实现一个定时任务&#xff0c;而该微服务存在多个实例的话&#xff0c;那么会导致该定时任务在不同实例中都会进行执行&#xff01;这很容易导致脏数据、数据重复等问题&am…