第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

哪種PDF提取工具最適合用于RAG?我試用了LlamaParse、Unstructured和Vectorize

PDF文件提取

如果你在开发基于检索的生成(RAG)应用,你最终会需要处理 PDF 文件。

如果你之前没有仔细研究过 PDF 是如何工作的,你可能会惊讶于从这些文档中可靠地提取你想要的数据有多么困难。

那是因为PDF更接近打印机在纸上打印内容的处理方式。

这使得PDF成为印刷文档的理想选择,这些文档在定义页面布局时需要灵活性,支持多栏文本。你可以在页面中间插入跨越多个栏的图片。你可以用PDF打印纯文本文档。你可以用它们制作复杂的用户指南。你可以用PDF来制作设计精美的小册子。

这让 PDF 成为多种场景中的理想选择。

这使得他们在将PDF文档转换成适合检索增强的生成的高度结构化格式时变得非常棘手。

幸好,随着大型语言模型的出现以及RAG的兴起,带来了许多进步,让这个任务变得更容易。

在这篇文章中,我尝试了几种解决方案。这些方案包括独立的库和云端服务。最后,我选出了三种最佳的PDF提取工具用于RAG用途,并在复杂PDF文件上对它们进行了测试,以测试它们各自处理这些挑战的能力。

竞争者们

经过一番比较后,我最终选择了UnstructuredLlamaParse以及Vectorize

所有这些选项都支持多种文档格式,包括但不限于PDF,包括Microsoft Word、RTF、JSON、图片文件、PowerPoint等。(如果您也需要对这些其他文档格式进行类似比较,请在评论中告诉我一声。)

此外,所有这些解析器都可以生成内容的 Markdown 表示。这对于 RAG 来说非常重要,因为很多上下文信息是通过标题、图片、图表和格式来传递的。我们希望保留这些信息,以便 LLM 能更好地理解和处理这些内容,从而更好地“思考”这些信息。

在这次比较中,我们将只比较PDF文件。我想先说明一点情况,这三种都是高品质的选项,代表了同类中的佼佼者。

Unstructured.io

Unstructured 它最初是一个 PDF 库,因此因此变得广受欢迎,因为它早期与(LangChain)的集成。

在过去的两年中,该公司扩展了其开源库,并增加了用于文档提取的云服务。

无结构公司提供了三种云提取选项。他们的基础选项适用于纯文本文档,价格为每1000页2美元,高级选项为每1000页20美元,而铂金选项每1000页30美元,可以处理诸如手写等复杂情况。

建议使用高级功能处理PDF文档,所以我们将在这里进行比较。

您可以将Unstructured的解析器用作其云数据管道的一部分,或作为独立的API。

羊驼解析器

Llama 解析 来自 LlamaIndex 的创建者,并包含在他们的 Llama 云端服务中。同样,Llama 解析也提供了多种选择。

他们的经济型方案从每1,000页3美元起,而Llama Parse的高级版本则贵很多,每1,000页45美元。

虽然 Llama Parse 提供了每月一定数量的免费解析页面,但是一旦过了这个限制,它就成为了所比较的选项中最昂贵的选择。

你可以将 Llama Parse 用于 Llama Cloud 管道中的一个环节,或者作为独立 API。

Vectorize.io 向量化工具

[Vectorize],(https://vectorize.io/) 是一个 RAG 作为服务的平台,提供了两个抽取工具。

他们的快速提取器在使用他们的RAG管道服务时无需额外费用。它被设计用于简单文档所需的简单文本提取。

他们还提供了Vectorize Iris,这是一个视觉模型提取工具,可以用于他们的RAG流程中,每1,000页只需15美元。

价格每1,000页从0到15美元不等,在比较中,Vectorize是最便宜的托管选项。

目前来说,Vectorize只将他们的解析工具作为RAG流程的一部分提供,而不是作为一个独立的解决方案,但他们提供一个测试工具,你可以用来预览PDF如何被解析。

评判标准

我想查看AI工程师在用RAG构建解决方案过程中经常遇到的有挑战性的PDF文件。因此,我决定评估每个提取工具,看看它们应对不同类型的PDF文档的效果,看看它们在处理你可能会遇到的各种PDF文档时的表现。

对于每个类别,我将给出我的看法,并解释他们在该领域的表现。并在适当的时候解释一下,给每个提取器一个评分。

出色 — 表示结果与预期一致,没有任何明显的问题。

不错的 — 表示结果可能不够完美,但还算可以接受。比如,一个提取器可能会把标题误认为是普通的加粗文本。

一般 — 意味着结果有一些比较明显的问题。例如,提取器可能因文档布局而混淆了内容,将两个不相关的文本部分合并在一起。

— 表示结果糟糕,无法使用或存在严重问题。例如,如果提取无法处理某种类型的文档,就会被标记为这个分数。

简单文本

首先,我们先来看一个非常简单的例子。这些PDF的文本在每页上都是一致的,没有复杂的排版。我们使用Project Gutenberg上的《傲慢与偏见》PDF来做这个例子。

这里我们要找的是一个基准线。PDF提取器应该能够准确地从纯文本PDF中提取文本内容。我们将分析竞争对手是否能够准确捕获文本内容,或者是否存在原始文本与提取文本之间的任何不一致。

简单的文本展示

正如预期的,经过测试的三个提取器在这项测试中表现非常出色。结果基本上非常相似且准确,所以无论选择哪个都不会错,如果你主要处理这类PDF。

有一点需要注意的是,Llama Parse 和 Vectorize 都检测到了新的段落,并用 \n\n 来表示这一变化,相比之下,Unstructured 更准确地反映了原始文档中的段落间距。从 RAG 的角度出发,用 \n\n 来表示结构,可能稍微有利于那些依赖这种特定字符组合来划分段落的分块器。

说归说,我也不能真的挑剔任何一个提取器在这个方面的表现。

多列布局

在PDF文档中找到将内容格式化为多列的情况非常普遍。这从信息手册或宣传册到学术论文都适用。我们将查看一篇已发表文章中的摘录,这些摘录包含简单的标题和文本,布局和装饰都很简单。

我们将主要关注两方面:

  1. 提取器在从一列到下一列之间提取文本做得怎么样?
  2. 提取器在跨页提取文本时表现如何?例如第1页的第3列在第2页的第1列继续了。
多列结果显示

非结构化

在大多数情况下,Unstructured的High Res提取器很好地处理了这种情况。当解析器到达一列底部并继续在下一行顶部时,确实引入了换行符,但这在使用RAG时不太可能引起任何问题。

无结构处理跨页列的方式与其他两个提取器不一样。在这个领域中,正确的行为可以有多种解释。不过,我认为无结构的处理方式对RAG来说是最合适的。注:RAG指的是...(如果上下文没有介绍的话,需要添加相应的解释)。

我们来看看这两页之间的间隔。

我们有一个常见的情况,页面底部有个页脚,下一页顶部有个页眉。可以说这些元素可以全部排除。然而,为了准确反映文档内容,应该包含这些元素,因为文档包含这些元素。

不过,Unstructured的解析器似乎反映了大多数Markdown使用标题来区分段落的事实。因此,Unstructured的输出确实包含了页尾和“NEWS FEATURE”,但它并没有将其作为标题来处理。这样一来,Markdown拆分器能够正确地将整个部分作为一个块提供给LLM。

如果是故意的,这体现了极高的细节处理,这将有助于RAG系统,因此我在这一个类别给Unstructured优秀评分。

llama 解析器

Llama Parse 在这次评估中遇到了一些困难。例如,你可以看到,当有一个短标题在一个页面上时,文本则会延续到下一页。

不过,Llama Parse 的输出将大部分文本误认为是标题。这本身可能不会引起太大问题,但是还有一个更大的问题呢。

在整个过程中,Llama Parse 将来自多个列的文本视为一个连续的整体。但这样一来,如果我们依赖此输出来支持我们的 RAG 应用程序,我们将输入乱码给大模型

即使 Llama Parse 能从单列中正确提取文本,有时也会因为标题而困惑,比如在这里可以看到标题“北爱尔兰的视角”,后面跟着文本“北爱尔兰交付……”。

尽管Llama Parse能够正确识别表格列,但它未能识别出标题,似乎将标题与后面的文字混在一起了。

尽管存在一些问题,Llama Parse 在某些方面还是能够相对不错地提取数据,因此可以说它在这一类别的表现还算及格。

向量化

在这一类别中,Vectorize的表现也非常出色。它的输出质量和Unstructured非常接近,仅在少数细节上有轻微差异或可能的哲学上的不同看法。

在整个文本中,Vectorize 将各列的文本保持独立,并生成了 RAG 需要的准确 Markdown 表示。正如之前提到的,Vectorize 的输出也包含了一些上下文提示,旨在帮助 LLM 更好地理解这些片段。

这种方法反映了Anthropic的研究人员在2024年发表的关于上下文检索的报告中发现的一些好处。因为Vectorize Iris仅在他们的RAG管线中可用,这为用户提供了在不进行额外后处理的情况下提高提取文本准确性的帮助。

然而,阻碍Vectorize获得优秀评分的主要因素是将标题拆分成多个部分。Vectorize将页面标题当作markdown标题来处理。

我认为还有另一种观点,这种行为可能是一个更准确的反映。然而,如果与RAG一起使用,我认为在这里生成纯文本而非标题稍微好一点。

非英语的PDF

语言模型和评估标准通常只关注英语内容。这里我们将看看一份阿拉伯语文档。

这里我们将主要看看三个标准和条件。

  1. 提取器处理非英语和非拉丁字母字符集的情况如何?
  2. 提取器处理从右向左的语言的情况如何?
  3. 这种语言的文本提取器能准确表示的程度如何?
非英语的成果

非结构化(翻译自英文 "unstructured")

无结构工具虽然能够提取使用阿拉伯字母的文本,但无法正确地表示文本。无论是单个单词的拼写还是文本的流畅度都不正确。

我们可以看到这里的单词拼写是镜像的,以最后一个字母开头,以第一个字母结尾。同样地,阿拉伯文是从右向左书写的,而非结构化商品描述则是从左向右显示的。

例如这个单词:ﻣﻮاﻓﻘﺔ

被提取为: fusulama

同意参与研究项目

这提取的未结构化文本为:“信息来源于阿拉伯文献”。

Llama 解析器

Llama Parse 更好地保留了正确的单词拼写,但也从左到右提取了文本,而不是从右到左。

我们可以看出,第一个标题中的第一个词被正确提取为:ﻣﻮاﻓﻘﺔ

然而,原文的完整标题是:同意参与研究调查:

Llama Parse逆向解析为:دراﺳﻲ ﺑﺤﺚ ﻓﻲ اﻟﻤﺸﺎرآﺔ ﻋﻠﻰ ﻣﻮاﻓﻘﺔ

可以说,Llama Parse 在这里可能得分较低,不过考虑到它至少拼写正确,我还是给了它一个及格的分数,而不是差评。

矢量化

Vectorize生成了最好的效果。它正确地提取了单词的拼写和语言的韵律。

我对 Vectorize 提取有一点小小的抱怨,那就是它将列表中的有序编号 i、ii、iii(罗马数字)替换成了 1、2、3(阿拉伯数字)。

然而,由于这可能不会影响RAG系统的性能,我仍然给Vectorize打了不错的分数,在这一项里。

带有图片的复杂布局示例

这些通常是扫描的印刷文档。这里我们将用到一本儿童电子游戏杂志的页面。

在这里我们想看看提取工具如何处理相关的文本块。在上面的图片中,这包括高亮部分的幻想人物和词汇,以及页面的主要内容。具体来说,我们要评估这些内容等等。

  1. 提取器能否将页面的相关部分组织成合理的Markdown格式?
  2. 提取器能否识别布局边界?
  3. 提取器如何处理页面中的图片?它是忽略这些图片?还是执行OCR?还是为非文本图片添加描述?
布局结果的复杂性

这信息是不结构的

无结构化处理的内容在测试中表现不佳,产生了混乱的结果,对布局没有清晰的认识。例如,在这一页中,我们在这页的左侧有正文文本,右侧有信息框,

最理想的是,我们希望提取器能够识别这些是独立的部分,并相应地进行解析。然而,Unstructured在这里未能达到这一要求。提取结果却把这两个不相关的文本合并在一起。

来自布局不同部分的文本被组合在一起,形成了一个不连贯的提取内容。将这个内容给你的LLM进行RAG,不太可能得出有用的结果,所以我在这里给Unstructured打了低分。

Llama 解析器

Llama Parse很好地识别了各个内容区块。你可以看到这里这一页有两个清晰的内容区块:

Llama Parse 处理得不错,准确地把它们分成了 Markdown 中的各个部分。

更值得讨论的是,第二个区块的内容是否真的适合用表格来表示。从RAG的角度来看,这不大可能会引发问题。然而,第一行被当作表头来展示可能会让LLM感到困惑。

此外,Llama Parse还将“FANTASY FIGURES: WoW IN NUMBERS”这一标题从几乎全大写的形式改为了“FANTASY FIGURES: WoW in numbers”。你还可以在“VOCABULARY”这一标题中看到这种变化。此外,它还将“CLUB’S GAMING DICTIONARY”这个标题错误地提取为“Gaming Dictionary”(缺少了所有格符号)。

llama Index 在这个例子中确实漏掉了一些关键内容。例如,页面正中有一个突出的文本标题,

尽管Llama Parse能够正确获取标题和正文文本,但它漏掉了一个重要功能。

尽管整体来说,考虑到布局复杂以及 Llama Parse 在提取该页面文本方面表现出色,我还是在这个分类中给了它一个相当不错的“好”评分。

矢量化过程

在这个例子中,向量化处理也做得很好。它为每个内容块创建了清晰的区域。

虽然 Vectorize 正确提取了文本并将标题的大小写保留了下来,但它在“2.8 million”这个文本中插入了一个反斜杠,将其变为了“2\.8 million”。在显示时,这会正确地显示为 2.8 million,然而,在 Markdown 中,. 并不是一个特殊字符,因此没有必要以这种方式转义。

撇开细节不谈,Vectorize 很好地完成了准确提取文字和图片说明的任务,以帮助 RAG 系统理解页面上的非文字信息。虽然诸如词汇部分的格式之类的细节丢失了,但从 RAG 的角度来看,这通常不会造成太大影响:

因为它保留了字母的大小写,并准确地捕获了页面上的所有内容,我将在这项中给Vectorize打优秀。

扫描的文件

在这里我们不仅关注干净扫描的文档,还会关注一些来自现实世界的文档,这些文档有时可能会显得比较杂乱。例如,通过手动扫描或传真得到的图像可能会倾斜,有时甚至会变形。我们将用这样的例子来考察这项标准。

这里我们将看看每个提取器是如何应对常见情况的:

  1. 提取器能否准确生成扫描 PDF 的 Markdown 表示形式?
  2. 提取器能否处理偏离中心或倾斜的文档?
  3. 提取器能否处理既包含打字内容又包含手写内容的情况?
扫描文档的结果

非结构化

可惜的是,Unstructured 无法处理这张扫描质量很差的文件,因为它生成了一个空白结果,所以在这个类别中的得分较差。

llama 解析器

鉴于这个输入的难度,Llama Parse 产生的结果虽然不错但还不够完美。比如说,在这里我们可以看到文档顶部的原文和 Llama Parse 处理后的结果。

比如说,你可以看到(印度政府)被提取为(Bharat)。

原来的日期 2018年02月19日 被错提为 2018年10月19日。

文本号“№2017/E(LR)I/NM1–10”有所不同,多了一个X,少了斜线。

我们还发现,URL在某些位置被截断了。路径部分在主URL之后被省略了。

这些差异可能会对检索和生成(RAG)系统产生重大影响,因为最终目标是使你的大语言模型(LLM)获得准确的结果。如果提取器生成了错误的日期和错误的网址信息,你可以想象这可能会让用户获得不准确的信息。

话说,这是一个特别具有挑战性的PDF文件,不过输出结果还算准确,但我还是觉得Llama Parse在这里可以得个“不错”的分数。

矢量化

矢量化处理在这个测试中表现优异。当传真机遇到纸张卡住的情况时,它几乎仍然准确无误地输出了所有内容。

比较我们上面查看的同样文本部分,你会发现这个工具正确地呈现了标题的所有细节。

全名、日期,以及编号“№2017/E(LR)I/NM1–10”,都与原文完全相同。

同样,扫描内容和网址完全一致。在这类工具中,Vectorize显然是最佳的,获得了优秀分数。

表格多

在构建需要处理PDF的RAG系统时,人们最常提出的一个需求是准确地表示表格数据。为此,我们将使用SEC文件作为示例,这些文件具有一些挑战性特点。

  • 表格的行和列没有用明显的实线来区分。
  • 表格里有缩进,有些单元格还能跨多列。
  • 表格里有行来汇总上方一组行的总计。

在这里我们将看看以下行为

  1. 提取器能否准确识别内容中的表格?
  2. 提取器如何处理表格中的格式,比如跨多列的文本?
  3. 提取器如何处理横跨多页的表格?
以表格为主的结果展示

非结构化

非结构化工具能够从我们使用的季度报告中提取文本,但表格的格式完全丢失了。例如,上面显示的表格被提取为:

尽管这些数据是准确的,但不太可能的是一个大型语言模型能够正确理解这些季度的业绩。

总的来说,因为丢失了所有的布局信息,我在这一类别中给Unstructured一个普通的评分。

llama 解析器

Llama Parse 在提取表格方面表现得很好。

在原来的PDF文件里,列分隔并不明显:

根据他的输入,我认为,Llama Parse在生成这张表格时做了一些合理的设计选择。在渲染后的Markdown中,更容易看出Llama Parse处理这些表格的方式。我觉得Llama Parse在生成这张表格时挺有想法的,特别是看看渲染后的Markdown,就能看出它是怎么处理这些表格的。

这个输出有几点值得讨论的特点。首先,“截至三个月的”作为第二列的标题似乎不太合适。不过,Markdown在处理跨越多列的单元格方面有限制,所以这样的选择还算可以理解。

同样地,原文中,第一列的项目各自占一行,这里它们与其他数据放在了一行。总的来说,我觉得这依然是一种很好的表示方式,并且如果在RAG系统中作为上下文提供给LLM,应该也能很好地处理。

当我们深入阅读季度报告时,我们会发现报告中的表格边界附近出现了更多微妙的情况。

比如,在合并资产负债表那一部分里,我们可以说有这张最大的表格。

然而,Llama Parse 将其分成了两部分。具体而言,它将“资产”作为表格标题处理,尽管这两个部分的格式相同,却将“负债和股东权益”这部分移到了另一个标题下。

值得一提的是,尽管原始表格中没有这个信息,Llama Parse 还聪明地在这一分段的表格顶部重复了表头。

由于这些表格的模糊性,我还是得说,在这点上 Llama 解析仍然应该得到优秀的评分。

矢量化

在这一例子中,Vectorize 与 Llama Parse 势均力敌。虽然做出了些微不同的选择,Vectorize 也准确地以合理的方式保留了表格结构。

在这里,Vectorize 更准确地表示了原本在不同行的项目。不过,它丢失了原始表格中通过缩进表示层次结构的事实。

回顾我们刚才用Llama Parse分析的较长表格,我们可以看到Vectorize将这个表格分成了两个表格,并保留了表头信息。与Llama Parse相比,Vectorize在保持标题一致性方面做得稍微好一点,这显示Vectorize在这方面表现得稍微好一点。

结论部分

我在这里查看过的每一个 PDF 提取器都有其优缺点和不同的价格。根据你的具体需求,这三种工具都可能非常适合你的下一个 RAG 系统。

从每个类别的结果来看,我的感受如下:

我会建议你可以试试这三种,看看你的结果跟我测试时的结果有什么不同。不可能测试你可能会遇到的所有情况,所以我建议你可以试试这三种选项,看看哪种最适合你。

此外,我总是推荐使用像SingleStore这样的数据库来构建强大的AI应用程序。SingleStore是一个一体化的分布式SQL数据库系统,它统一了事务处理和分析处理,非常适合AI应用开发。其独特的优势包括超快速的内存处理、实时分析,以及对向量搜索功能的原生支持——这使得高维数据的快速相似性匹配变得简单。

免费试用SingleStore!: 免费试用

该平台还结合了行存储和列存储的能力,使用标准SQL简化复杂的查询操作,能够处理结构化、半结构化和非结构化的各种数据。此外,其可扩展的云原生架构设计和内置的与流行AI工具的集成加速了开发,减少了运营成本,并提供了所需的高性能,以支持强大的企业级AI解决方案,推动下一代创新并保持现有的竞争优势。

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫(xiě)下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消