写点什么

文档解析与向量化技术加速 RAG 应用落地

常扬

  • 2024-09-29
    北京
  • 本文字数:6105 字

    阅读完需:约 20 分钟

大小:3.12M时长:18:10
文档解析与向量化技术加速 RAG 应用落地

在不久前举办的 AICon 全球人工智能开发与应用大会上,合合信息智能创新事业部研发总监,复旦博士常扬从 RAG 应用落地时常见问题与需求(文档解析、检索精度)出发,分享了针对性的高精度、高泛化性、多版面多元素识别支持的文档解析技术方案与整合长文档解析引擎、层级切片技术的向量化 Embedding 模型技术方案,以及开放域多模态信息抽取应用与知识库问答应用等实际场景的产品实践案例。本文为常扬的演讲整理。


在将于 2024 年 10 月 18-19 日举办的 QCon 全球软件开发大会(上海站),Zilliz Senior Product Manager 张粲宇也从自身的 RAG 场景出发,分享了 RAG 的挑战,以及通过采用混合检索技术和其他技巧,最终把准确率提升到 90% 以上的经验。欲了解更多内容,可访问大会官网获悉。


近年来,大模型的崛起为人工智能领域带来了革命性的变化。然而,在实际应用中,我们发现仅依靠大模型自身的知识和上下文并不能完全满足用户的需求。检索增强生成(Retrieval-Augmented Generation, RAG )应运而生,旨在通过引入外部知识库,解决领域知识缺乏和信息过时的问题。但其本身在产品化落地的过程中面临检索召回率低、生成质量差的问题。


我会从第一性原理出发,分析其核心突破点:文档解析技术向量化技术,看这两个技术如何发展,加速 RAG 应用落地 的。

RAG 的背景与问题


在传统的大模型应用中,模型的知识来源主要是预训练数据和用户提供的上下文。然而,面对专业领域的复杂问题,模型往往难以给出准确、及时的回答。RAG 的核心目标是将外部的领域知识与大模型结合,使其能够生成更准确、更专业的回答。


LLM(大型语言模型)应用知识的数据来源包括“用户上下文输入和用户意图”、“大模型知识”和“外部文档”。RAG 位于三个知识源的交集处,结合了外部文档、用户输入的上下文、模型的知识进行生成。RCG(Retrieval-Centric Generation)专注于将知识检索与 LLM 的生成分开,把检索知识作为核心来源,而微调(Fine-Tuned LLM)则通过使用外部数据微调模型,提升模型在特定领域的理解能力。



RAG 的核心流程可以简化为以下三个步骤:


  1. 知识库构建(Indexing):对外部文档进行解析、清洗、向量化,构建高质量的索引。

  2. 检索(Retrieval):根据用户的查询,在向量空间中检索最相关的内容。

  3. 生成(Generation):大模型基于检索结果生成最终的回答。


在这个流程中,知识库构建和检索是关键的技术环节,直接影响最终生成的质量。



尽管 RAG 有着广阔的应用前景,但在实际落地过程中,我们发现了许多问题。一篇研究论文总结了 RAG 应用中常见的 12 个问题,包括:



  • 内容缺失:检索结果未能覆盖用户的问题。

  • 不完整回答:生成的内容缺乏细节或关键信息。

  • 性能不足:检索和生成过程耗时过长,无法满足实时性要求。

  • 不可扩展性:面对海量数据时,系统的性能显著下降。


等等这些问题的存在,使得很多 RAG 产品难以从原型(MVP)走向真正满足市场需求的产品(PMF)。


在 AI 产品的开发中,最小可行产品(MVP) 的构建相对容易,但要实现产品市场契合(PMF),真正满足用户需求,却充满挑战。


  1. 理解大模型的技术边界:既不要过度高估大模型的能力,也不要忽视其潜力。明确其适用范围和限制。

  2. 深入理解业务场景:识别大模型和 RAG 技术最适合的应用领域,确保技术与业务需求的契合。

  3. 优先使用最好的模型:在验证方案可行性时,尽可能使用性能最优的模型。如果最佳模型仍无法满足需求,可能需要重新评估方案。

  4. 构建产品壁垒:考虑产品的独特价值和竞争优势,而不仅仅是技术实现。确保产品在市场上具有可持续的竞争力。



从第一性原理出发,要解决上述问题,我们需要回归本质,关注 RAG 流程中的关键环节:


  1. 高质量的知识库构建:确保文档解析的准确性,将领域知识准确地转化为文本和向量表示。

  2. 精确的检索机制:利用先进的嵌入模型,提高在向量空间中检索相关内容的准确性。


文档解析技术


在大模型 RAG 应用中,文档解析是一个关键环节。如何将复杂的 PDF 文档准确、高效地转换为大模型能够理解的格式,直接影响到模型的性能和应用效果。下面将深入探讨通用文档解析的挑战与解决方案,重点介绍从  PDF  到 Markdown 的转换过程,以及如何通过物理和逻辑版面分析,实现对各种复杂文档的高质量解析。


从计算机的角度来看,文档主要分为两类:


  1. 有标记的文档:如 Word、Markdown、HTML、JSON 等。这些文档具有明确的结构,计算机可以直接解析和理解。

  2. 无标记的文档:如图像、 PDF  等。这些文档缺乏结构信息,计算机无法直接理解其内容。



PDF 是一种常见的文档格式,其本质是一系列显示打印指令的集合,而非结构化的数据格式。例如,一个简单的“ Hello World ”  PDF  文件,用文本编辑器打开后会发现大量的排版指令。这使得计算机在解析  PDF  时,难以直接获取其中的结构化信息。



解析 PDF 的挑战有:


  • 结构缺失:PDF 以视觉呈现为主,缺乏逻辑结构,难以直接提取段落、标题、表格等元素。

  • 复杂排版:多栏布局、跨页内容、嵌入图像和公式等,增加了解析难度。

  • 元素遮挡:印章、手写批注等覆盖在文本上,干扰内容识别。


为了让大模型有效地理解 PDF 中的内容,需要将其转换为一种模型熟悉的格式。Markdown 成为了最佳选择,原因如下:


  • 结构清晰:支持多层标题、粗体、斜体、列表、表格、数学公式等,能够完整地表达 PDF 中的信息。

  • 专注内容:Markdown 关注内容本身,而非排版,符合大模型的训练特点。

  • 模型友好:大模型在训练过程中,接触了大量的 Markdown 语料,对其有良好的理解能力。


Markdown 的优势:


  • 简洁优雅:语法简单,易于编写和阅读。

  • 广泛应用:在技术文档、博客等领域被广泛使用,具备良好的生态环境。

  • 易于转换:可以方便地转换为 HTML、 PDF 等格式,满足多种需求。



复杂文档布局的解析难点有很多,比如:


  • 法律条文:包含多级标题和列表,需要准确识别层次关系。

  • 扫描书籍:可能存在噪声、阴影,OCR 识别难度大。

  • 学术论文:包含复杂的公式、表格和引用格式。

  • 产品说明书:双行表头、多栏布局,对解析精度要求高。


有以下的典型挑战:


  • 多栏布局双列、三列布局,跨页内容,如何保持正确的阅读顺序?

  • 复杂表格合并单元格、嵌套表格,需要精确解析结构。

  • 公式和图像数学公式、图像与文字混排,要求高精度的识别和定位。

  • 元素遮挡和噪声印章、手写批注、扫描噪声,干扰内容的提取。


现有解析方法具备一定的局限性。基于规则的解析库,典型代表 PDF Miner、Py PDF 、Mu PDF 等。优点对电子版 PDF 的解析效果较好,速度快。缺点是无法处理扫描件和图像型 PDF 以及对复杂布局支持不足,难以准确还原阅读顺序。


基于深度学习的解析库,典型代表 Unstructured、Layout-Parser、PP-StructureV2 等。优点是能处理扫描件,具备一定的版面分析能力。缺点是效率较低,处理大型文档耗时长以及对复杂布局的支持有限,精度有待提高。


基于大模型的解析库,典型代表 GPT- PDF 。优点是具备多模态理解能力,直接处理图像和文本。缺点是计算资源消耗大,实时性差以及受限于大模型的输入长度,对长文档支持不足。



针对上述挑战,我们提出 TextIn 文档解析技术:


  1. 解析更稳:无论何种排版和格式,都能正确提取文档元素,并还原正确的阅读顺序。

  2. 识别更准:高精度地识别文本、表格、公式、图像等内容。

  3. 性能更优:满足实时性需求,支持大规模文档的快速解析,适用于 RAG (检索增强生成)应用场景。


具备以下功能特性:


  • 全面支持兼容电子版和扫描版 PDF 。

  • 预处理优化文档图像预处理,提高 OCR 精度,减少噪声干扰。

  • 深度分析物理版面分析和逻辑版面分析相结合,准确还原文档结构。

  • 元素识别全面识别段落、标题、表格、公式、页眉页脚等内容。



我们的解析流程主要分为三个阶段:


1. 文档预处理


拆分文档将多页文档拆分为单页,便于并行处理。


类型识别区分电子版和扫描版,选择适当的处理策略。


2. 版面分析


物理版面分析基于视觉特征,划分页面区域,如段落、列、图像、表格等。


逻辑版面分析基于语义特征,构建文档的目录树,确定元素的层次关系和阅读顺序。


3. 内容重建


元素识别对文本、表格、公式、图像等进行精确识别。


格式转换根据需求生成 Markdown 或 JSON 格式,方便大模型理解或产品呈现。



物理版面分析逻辑如下:方法选择采用单阶段检测模型,兼顾精度和效率,避免复杂的多阶段流水线。数据处理注重数据的多样性和分布,增强模型的泛化能力。层级结构按照页(Page)→ 区块(Section)→ 列(Column)→ 段落(Paragraph)→ 文本片段(Text Slice)进行解析。阅读顺序还原策略从上到下、从左到右,结合页面布局和元素位置,准确还原阅读顺序。



逻辑版面分析逻辑如下:模型架构采用 Transformer,利用自注意力机制,捕获元素间的全局关系。父子关系确定标题与其子内容的从属关系,旁系关系识别同级元素之间的顺序关系,目录树构建通过关系预测结果,生成文档的逻辑结构树,方便内容的组织和导航。



面对多种复杂的文档解析需求,如何客观评估不同解析方法的效果,是一个重要问题。传统的文字和表格评估方法,无法全面衡量复杂布局和结构的解析质量。我们开源了 Markdown Tester,指标定义针对段落、标题、表格、公式、阅读顺序等核心元素,定义了识别率、召回率、F1 值等评价指标。结构评估引入树状编辑距离,评估目录树、表格结构与原文档的相似程度。可视化展示通过雷达图等方式,直观展示各解析方法在不同指标上的表现。



在实际应用中,解析效率至关重要。特别是在 RAG 场景下,需要对大量文档进行实时解析,要求解析过程既快又准。我们进行了以下优化策略,算法模块优化针对耗时模块,如版面分析和元素识别,优化算法,提高执行效率。并行处理采用分布式集群结构,对文档解析流程进行并行化处理,充分利用计算资源。资源调度智能调度计算任务,平衡负载,减少等待时间。


我们目前实现处理速度实现了对 100 页文档的解析,P90(90% 请求的响应时间)小于 1.5 秒。稳定性在大规模文档解析任务中,保持了高稳定性和低失败率。扩展性系统设计支持水平扩展,能够应对更大的数据量和更高的并发需求。


向量化技术


在现代自然语言处理任务中,向量化(Vectorization)技术扮演着关键角色,特别是在检索增强生成( RAG )模型中。下面将探讨向量化的原理、模型选择以及多尺度训练方法,揭示其在实际应用中的重要性和优化策略。


向量化的核心思想是将大量的文本数据转换为具有方向和数值的向量列表。这种表示方式使计算机能够利用矩阵运算的高效性,快速计算文本之间的语义相似度。在 RAG 模型中,向量化主要用于信息检索,即通过计算用户问题和文档块的向量相似度,找到最相关的文本内容。



在选择嵌入(Embedding)模型时,许多人可能会在网上查找评价效果较好的模型,或者自行进行评测。然而,在评估之前,建议先查看像 Hugging Face 上 MTEB 和 C-MTEB 评测基准排名,这些指标涵盖了文本分类、聚类、成对分类、重排序、检索等任务,能够大致了解每个模型在不同任务上的表现。



在选择合适的嵌入模型时,需要考虑以下六个关键因素:


1. 特定领域适应性:嵌入模型的训练依赖于大量语料,不同领域的语料量和质量会影响模型在该领域的表现。例如,在工业领域,如果训练语料较少,模型的性能可能不理想。因此,即使某个模型在排行榜上名列前茅,也应在自己的领域数据上进行测试。


2. 检索精度:对于以检索为核心的任务,模型的检索精度至关重要。需要评估模型在实际检索场景下的准确率和召回率。


3. 语言支持:根据业务需求,选择支持所需语言的模型,确保在多语言环境下的有效性。


4. 文本块长度(Chunk Size):文本块的长度应根据任务需求进行调整。如果处理的是信息密度较低的长文本,如小说,可能需要更长的文本块。而对于信息密度高、需要精确检索的内容,较短的文本块可能更合适。


5. 模型大小与推理成本:模型的大小直接影响推理的资源消耗和成本。在资源有限的情况下,需要在模型性能和资源消耗之间取得平衡。


6. 检索效率:在需要处理海量数据的场景下,检索效率变得尤为重要。模型的计算复杂度和向量维度都会影响检索速度。



我们的模型采用了对比学习的方法,这与业界领先的实践保持一致。其中一个较为特殊的点是引入了多尺度训练(Multi-Resolution Learning,MRL)。在训练过程中,我们采用不同的尺度,如 1024、512、256、128 等长度的 Token,计算整体的损失函数。这样做的目的是:


  • 保证信息质量集中在前序序列:通过多尺度训练,模型能够在较短的序列中捕获高质量的信息,确保在截断或限制序列长度时,重要信息不会丢失。

  • 提高检索效率:在资源受限或需要高效检索的情况下,可以使用较短的向量表示,而不会显著降低精度。

  • 减少维度,保持精度:通过多尺度训练,模型在降低向量维度的同时,尽可能保持了语义表示的准确性。



综上所述,向量化技术在 RAG 模型中具有不可替代的作用。通过慎重选择嵌入模型,结合多尺度训练等优化方法,我们能够在提高检索精度的同时,优化资源使用,实现高效、准确的文本信息检索。

总结


我们的目标始终是打造真正可用、好用的产品,实现从 MVP(最小可行产品)到 PMF(产品市场契合)的飞跃。只有当产品真正满足用户需求,具备市场推广价值,才能称之为成功的产品。


在 RAG (检索增强生成)应用中,我们发现了两个突出的核心问题:文档解析和向量化。为了解决这两个问题,我们专注于以下研究方向:


1. 通用文档解析


我们致力于实现快速、精准、稳定的文档解析,支持各种类型的文档,包括扫描件和多种版式。通过提高解析的稳定性,确保阅读顺序的正确,还原文档的真实结构。同时,提升解析的精度和效率,使解析过程更准确、更高效。


2. 高性能的嵌入模型(Embedding)


在向量化过程中,我们注重模型的精度和效率。选择最适合业务需求的嵌入模型,能够更高效地进行信息检索,提高检索的精确度和速度。这不仅包括模型本身的优化,还涉及对领域数据的深入理解和应用。



我们相信,专注于问题的本质,才能取得最大的收益。如果您对我们的技术和产品感兴趣,欢迎访问我们的官网 textin.com。在网站上,您可以了解更多关于通用文档解析、嵌入模型技术,以及我们的财报分析、分析师问答等产品信息。


感谢您的阅读和关注。


作者介绍:


常扬,合合信息智能创新事业部研发总监,复旦博士,复旦机器人智能实验室成员,国家级大学生赛事评审专家,多个技术社区 AI 专家博主,发表多篇 SCI 核心期刊学术论文,负责合合智能文档处理业务线的产品、技术、云服务平台研发工作,研究方向智能文档处理、多模态大模型。任职期间,先后主导了人工智能数据清洗平台,卡证识别、票据识别、行业文档定制等信息抽取产品,TextIn 智能文字识别云服务平台,TextIn 票据机器人、财报机器人、合同机器人等智能文档场景落地产品,为金融、制造、物流等行业提供智能文档处理产品与解决方案,在企业信息化转型领域具备丰富的技术落地经验和行业场景洞察力。


会议推荐


InfoQ 将于 10 月 18-19 日在上海举办 QCon 全球软件开发大会 ,覆盖前后端 / 算法工程师、技术管理者、创业者、投资人等泛开发者群体,内容涵盖当下热点(AI Agent、AI Infra、RAG 等)和传统经典(架构、稳定性、云原生等),侧重实操性和可借鉴性。现在大会已开始正式报名,可以享受 9 折优惠,单张门票立省 480 元(原价 4800 元),详情可联系票务经理  17310043226 咨询。



2024-09-29 15:4413603

评论

发布
暂无评论

(JavaSE)数据类型变量与运算符

爱好编程进阶

Java 程序员 后端开发

耗时三年终于整理出了SSM+微服务+Nginx+Redis+MySQL的PDF了!

Java架构追梦

Java 后端开发

15 个优秀开源的 Spring Boot 学习项目,一网打尽!

爱好编程进阶

Java 程序员 后端开发

2021全网最全Activiti7教程02(Activiti7入门使用-欢迎收藏)

爱好编程进阶

Java 程序员 后端开发

BATJ关于Redis的高频面试真题

爱好编程进阶

Java 程序员 后端开发

《数字经济全景白皮书》Z世代用户洞察篇 完整版 发布

易观分析

Z世代

让 Rust 的 CI 加速 2~3倍速度

非凸科技

rust 构建 cl cithub 缓存空间

微服务实战文档分享,阿里内部的Spring cloud微服务精髓都在里面

Java架构追梦

Java 微服务 阿里

不愧是字节跳动技术官,算法精髓全写这本666页笔记里了

Java架构追梦

Java 程序员 数据结构与算法、

CoProcessFunction实战三部曲之三:定时器和侧输出

爱好编程进阶

Java 程序员 后端开发

维权思考

成周

2021-11-9【数据结构平时实验】

爱好编程进阶

Java 程序员 后端开发

终于有人把tomcat讲清楚了!阿里大牛推荐的tomcat架构解析文档

Java架构追梦

Java 后端开发 JVM’

内存不超过5M,datop 在识别冷热内存及跨 numa 访存有多硬核?| 龙蜥技术

OpenAnolis小助手

cpu 内存 datop 轻量级 muma

13-注解增删改查

爱好编程进阶

Java 程序员 后端开发

Apache ShardingSphere 企业行|走进汽车之家

SphereEx

数据库 企业 ShardingSphere SphereEx apache 社区

元宇宙核心技术--脑机接口

CECBC

2年工作经验的Java程序员面试经历

爱好编程进阶

程序员 后端开发

快来跟20年京东T9架构师学习进阶微服务+Docker+Dubbo+SpringBoot

Java架构追梦

spring java面试 后端开发

区块链 重塑不良资产互信机制

CECBC

动手实操丨RC522射频卡模块与IC卡完成充值消费查询的技术实现思路

华为云开发者联盟

stm32 RC522射频卡模块 IC卡 RC522

显卡只是为游戏而生吗?GPU服务器了解一下

Finovy Cloud

GPU服务器 GPU算力

CGBTN2111-DAY02总结复习

爱好编程进阶

Java 程序员 后端开发

云图说 | 华为云医疗智能体EIHealth,AI赋能基因组研究

华为云开发者联盟

华为云 云图说 EIHealth 医疗智能体 基因组

Stack 顿悟三部曲(1):从CPU的视角说起

蓬蒿

cpu 堆栈 计算机原理 stack

2021年4月23号,成功斩获阿里(Java岗

爱好编程进阶

Java 程序员 后端开发

4年JAVA外包终上岸,我只能说避雷这些公司

爱好编程进阶

Java 程序员 后端开发

7Z命令行

爱好编程进阶

Java 程序员 后端开发

BAT华为等一线大厂Java工程师必读书单

爱好编程进阶

Java 程序员 后端开发

架构师成长路线

架构师汤师爷

软件架构 架构师 成长路线

centos7的启动流程(systemctl)

爱好编程进阶

Java 程序员 后端开发

文档解析与向量化技术加速 RAG 应用落地_AI&大模型_InfoQ精选文章