Substack译文文档智能是做好RAG离不开的那道坎
作者: Atman语言智能 来源: Atman语言智能
译文部分
引言
按逻辑布局结构对文档进行分块可提高大型文档的 LLM 性能。
正文
大型语言模型 (LLM) 的卓越功能为大规模分析文档提供了难以置信的机会。然而,由于 LLM 一次可以分析的文本量(又名 LLM 上下文窗口),使文档中的文本(尤其是大型 PDF)可供 LLM 一直是一个挑战。
解决问题的方法大致有两种:
①将文档转换为原始文本并将文本分解为小块文本,通常小于 LLM 上下文窗口大小(大约 2000-3000 个单词)。
②越来越多的研究致力于让大模型能够在更大的背景下工作,这些背景可以扩展到数百页的文本。
这两种选择都有严重的缺点,我将在下面讨论。
此时,如果您想直接解决问题,请参阅github 链接。
朴素分块
让我们看看朴素的分块。文档通过布局表达其含义:
朴素分块:节和小节
标题和嵌套副标题代表描述下面所有文本的主题。下图说明了文档中嵌套标题结构所隐含的语义如何因不了解文档结构边界的天真分块而丢失。
图 1. 标题结构隐含的语义由于不具有布局感知能力的分块而丢失。
朴素分块:列表和子列表
分块列表和子列表同样会导致文档结构隐含的语义丢失,如下所示。有时,基于页面的分块方法用于将更多内容推入块中,以便大模型可以访问更大的上下文。然而,正如您从下图中看到的,基于页面的分块也会导致上下文中的信息丢失,因为列表项将与列表项的其余部分和引导句分开。
图 2. 列表项可以通过令牌或页面级别的布局无意识分块来取消链接。
朴素分块:表格
同样,对于表格,在分块时不知道适当的边界可能会导致信息和含义的丢失,如下图所示。
图 3. 不考虑表边界的分块将会丢失信息。
智能分块
当文档读取器/加载器了解文档结构时,它可以创建智能块,如下节所述。
智能分块:节和小节
智能分块可识别节和子节,以及它们各自的嵌套结构。它将线条合并成连贯的段落,并在章节和段落之间建立联系。请注意,在下图中,主标题3与其所有子块3.1、3.2、3.3一起重复,为小节提供必要的上下文。它提供了使用每个小节中较小的块或整个部分进行LLM分析的选项。
图 4. 上下文感知分块保留了部分并与部分层次结构链接在一起,以将上下文保留在较小的块中。
最佳分块:列表
最佳列表分块将所有列表项合并为一个块,并将第一个前导段落保留在上下文中,如下所示。这种分块允许LLM在单个块中获取所需的所有上下文信息,从而使生成准确。不会因为页面拆分或列表项与其他列表项和引入句分离而丢失任何信息。
图 5. 列表的最佳分块将所有列表项与引导句一起保留在一个块中。
最佳分块:表
最佳的表分块保留了表布局以及表标题和子标题。这将打开表以对表数据进行各种基于LLM的分析。
图 6. 表的最佳分块保留了表边界和层次结构。
更大的上下文窗口怎么样?
近几个月来,大量研究致力于将上下文窗口扩展到十亿个令牌! Anthropic和Cohere都提供了文档上传API。这确实是一项杰出的技术进步。然而,该解决方案的大规模实用性仍有待观察。对于单个文档上的摘要类型提示来说,这可能是一个很好的解决方案,但仍然无法扩展到数千个文档上的检索增强生成(RAG)。文档的最佳分块以及从节标题和引导句中注入长期运行的上下文为高效的RAG提供了足够的信息。这是一种经济高效且低延迟的解决方案。
输入LayoutPDFReader
目前大多数PDF和文档阅读器都将PDF文档转换为纯文本 blob。即使某些API确实提供了更多信息,例如PDF中文本块的框坐标,它们也不会解析层次结构信息并将相关文本块链接在一起以创建LLM的完整上下文。布局感知分块将推动LLM应用程序,尤其是RAG的实用性更上一层楼。LayoutPDFReader是一款快速阅读器,可将PDF中的文本拆分为布局感知块,并为LLM开发人员提供一种便捷的方法来索引、访问和分析PDF的不同部分。
- 本文由爱特曼云翻译ACT提供 -
公众号:Atman语言智能
售前与商务合作:[email protected]
售后与问题咨询:[email protected]
苏州公司:苏州市工业园区金尚路仙峰大厦南楼5层
北京公司:北京市海淀区北四环中路智优沃大厦4层
更多AI工具,参考Github-AiBard123,国内AiBard123