微信扫码
添加专属顾问
我要投稿
探索文档智能解析技术新突破,一文尽览GraphRAG多模态应用范式。 核心内容: 1. 文档智能解析技术链路与文档层级关系构建 2. 多模态图索引构建与检索生成流程 3. 知识图谱在解决chunk关联及细粒度问题中的应用 4. 文档多模态RAG技术进展与实践
导读 本次分享聚焦多模态 GraphRAG,深度剖析了文档智能解析的技术链路,并梳理了相关工作进展,全方位呈现了文档智能、知识图谱与大模型结合的应用范式。
1. 文档智能解析技术链路与文档层级关系构建
2. 多模态图索引构建与多模态检索生成流程
3. 知识图谱解决 chunk 之间关联以及细粒度问题
4. 文档多模态 RAG 相关工作进展
5. 总结
6. 问答环节
分享嘉宾|余俊晖 360 高级算法工程师
编辑整理|卢学林
内容校对|李瑶
出品社区|DataFun
01
文档智能解析技术链路与文档层级关系构建
首先来整体介绍一下文档智能解析技术方案。
上图中对传统 RAG 和微软 GraphRAG 的链路进行了对比,GraphRAG 在知识库和知识图谱的构建方面开展了大量工作。知识库的构建是整个流程中至关重要的一个环节,所以接下来会重点介绍知识库和文档构建的技术链路。
文档处理技术经历了一系列演变,从早期基于规则模板,发展到利用 PDFParse 等工具来进行解析,再到基于深度学习的版面分析。当前在深度学习的基础上有各种分析技术,比如板式分析、公式识别、公式检测、表格解析等。
随着大模型的发展,智能文档处理主要参与到大模型语料加工的工作中,在RAG系统中主要承担数据清洗的相关工作。
文档智能解析有三个技术方向,OCR-PIPELINE、OCR-Free 和 PDF-Parse。
OCR-PIPELINE
输入 pdf 文档后,将其转换为图片,并进行版式分析,把内容进行区块切割,针对文档中的段落、标题、公式等区块进行相应的处理。比如使用 OCR 识别文本中的标题、段落;通过表格分析处理文本内的表格;利用公式解析将文本内的公式转换为 LaTeX 格式;对图片也进行相应的处理。得到区块的 bounding box 后对其进行阅读顺序的排序,最终进行文档的恢复,转化为 markdown 格式。
OCR-Free
多模态大模型端到端的智能解析,主要是以数据驱动的多模态大模型。
PDF-parse
对于一些可以直接编辑的 pdf 文档,文字提取直接使用 PDFParser 的效果会比用 OCR 模型的效果更好。
OCR-PIPELINE 方案具有以下优点:其一,能够获取 bounding box 信息、版式标签信息等,并进行相应处理;其二,模块灵活,可单独做优化;其三,支持 CPU 离线部署,对于垂直场景可研发版式分析的轻量模型;其四,支持扫描版文档。
然而,该方案也存在缺点:OCR 链路依赖于场景数据,现在大部分是采用目标检测的方案去做版式划分,导致泛化性较差;另外,精度不高,在版式分析、表格解析、段落合并等环节均有改进空间;第三,CPU 环境下速度较慢,涉及模块众多,整体速度较慢。
OCR-FREE 方案利用近期开源的 OCR 大模型 olmOCR 和 mistral ORC 等,端到端地解析出 makdown 格式,为模型做预加工。尽管模型官方宣称效果很好,但实际测试结果显示欠佳。
这种方案的缺点也很明显:首先不支持区域分块,不输出 bounding box 信息;第二,不支持 CPU 离线部署;第三,速度很慢,消耗大量 GPU 资源;第四,部署成本高,针对长文本情况,显存占用大;第五,存在幻觉问题,容易出现多字少字等和原文不一致的情况;第六,对于比较复杂的文档无法做截图存储。
PDF2TEXT 方案,利用规则驱动的工具,速度快、效果好,在可编辑场景下比 OCR的文字信息识别更为准确。
其缺点是不支持扫描版本文档,并且对图片和表格等处理效果欠佳。
OCR-PIPELINE 中最关键的就是版式分析。
版式分析是一个目标检测任务,用于对文档的区域进行划分,核心在于标签的定义,包括正文、标题、图片、图片标题、表格等等。
目前表现较为出色的是上海人工智能实验室的 DocLayout-YOLO,在数据的标注和多场景的数据上面做了大量工作,使泛化性得到了有效提升。
版式分析模型与文档类型强相关,高度依赖于场景数据的标注,以及标注数据的多样性,在后面的文档恢复或 markdown 转录时,需要取舍一些标签,所以要有对粒度的控制。
去年四月份,我们也开源了一些版式分析的模型,主要针对中文论文、英文论文、中文研报和教材这四个领域,在这四个场景下进行了细粒度的标注,训练出了一个轻量化的模型。模型基于 YOLOv8,属于轻量化的模型,单个模型只有 6.23MB,所以在下游垂直场景中速度很快。
版式分析的大部分工作集中在标注环节,而标注高度依赖于对业务的理解,业务需要控制标签的力度,然后我们进行相应的数据标注,以满足垂直领域场景的要求。
文档解析中的难点之一是表格解析,分为多线表、缺线表、无线表三种类型。受限于传统 CV 的方法,存在多尺寸、分辨率低、跨页处理等多种情况,而可训练的场景数据极为稀缺。
传统 CV 方法主要检测 cells 和 table structure,将 OCR 的文本和表格的结构进行 match,算其间的 IOU 阈值,然后 merge,最后去做表格的重建,输出 excel 格式或者是 html 格式,html 兼容 markdown 语法,所以在 markdown 里面可以很好地展示。
关于端到端的形式,我们也做了一些自己的工作。端到端的一个缺点就是非常消耗资源,多模态大模型基于数据驱动,我们研究发现端到端的数据极难构造。我们通过一些小模型结合合成数表格数据的方法,训练了一个端到端的 7B 左右的多模态表格解析模型。该模型的输入为表格截图,转成 html。其缺点是存在严重的幻觉问题,对于一些特定样例的表格,效果并不理想。
对于一些可编辑的 pdf 表格,可以利用文本自身信息进行加速。上图右侧列出了一些常用的开源的表格解析模型,及其对比效果,目前最好的是百度开源的 SLANet-plus 模型表现最佳,其在 TEDS 评价指标上取得了较好分数。实际测试表明该模型也是对有线表格解析得比较好。
我们自研了一些公式解析模型,将公式截图转成 LaTeX 语法,markdown 可以支持 LaTeX 公式渲染。该工作在 ICPR 2024 的多行数学表达式识别任务中获得了冠军。
我们的方案基于传统的 VisionEncoderDecoder 模型架构,采用预训练加微调的方式,在训练过程中采用早停机制来防止过拟合。拟合目标是 ExactMatch(精确匹配)和 EditDistance(编辑距离)
后期我们对上述工作进行了改进,发表了一篇论文,提出层次细节聚焦识别网络(HDNet),已被 ICASSP 接收。
改进主要包括一些预训练,以及更科学的评估。对于复杂的层级的公式,类似多模态预训练中的动态分辨率方法,其是随机 crop 图片,而我们是更加复杂的数据公式,按照层级的方式对数据公式进行划分,起到类似数据增强的效果。通过这个方法取得了比较好的成果,在 Fair-CR 评价指标上达到了 0.963。而且模型的参数量较小,约 300m,参数量上低于业内相关模型。
图表解析方面,图表中包含数值图、柱状图、饼状图等,核心是输出图表摘要,或解析出 json 数据,便于后续进一步渲染。或通过解析出的 json_dict,进行编辑或可视化。
图表中的另一个重要部分是流程图,目前大多是将其转成可渲染的 markdown 格式。传统方案主要是采取 CV 的目标检测分割方案,现在依靠多模态大模型,可以端到端地输出流程图的 Mermaid 格式,做进一步的渲染。
去年我们针对多模态大模型在流程图上的能力做了一些评测。评测发现 GPT4o 模型在流程图解析上仅得到 56.63 分,仍存在很大的优化空间。在开源模型中,Phi-3-Vison 多模态大模型获得了一个比较高的分数,该模型主要在训练的数据上进行了一些预训练。这也说明多模态大模型目前还是数据驱动的模式。
文档解析中的一个核心问题是阅读顺序的排列,对文档的还原或转换为 markdown 起到了枢纽作用,上接布局分析,下接 markdown 的转换。
之前主要是采用基于规则的方案,按照 bbox 排序,这种方式简单,但效果一般。CV 的方法其实也属于基于规则的方案,主要是 XY cut,按从左到右、从上到下的阅读顺序。
现在出现了基于语义的方法,主要工作是 LayoutReader。它可以对划分出来的区块去做相应的排序,但是它有一个缺点是高度依赖于标注数据。
最新的工作是 DLAFormer,它是一个端到端的模型,主要是将阅读顺序和版式分析建模成的关系预测任务。
通过版式分析可以得到文档的标题,最后通过阅读顺序还原成 markdown 的时候可以得到其层级关系。
下面介绍 Doc2ToC 工作。在获取标题之后,可以构建目录,得到章节信息,建模成 parent-of 的关系。这一工作非常依赖于版式分析中对标题的定义,标题的粒度需要定义成多级的标题,标注方式非常不统一,我们发现每个版式里面可能标题和段落标题的字号或字体都相近,这可能对后续的版式识别模型影响较大。
第二,通过 PDFParser 这种工具可以获取一些字体的信息,但是基于深度学习的模型或者 OCR 的模型很难获取字体信息。
第三,基于语义的方法,可通过一些 BIO 标注去计算 title 和段落之间跳转的概率,拿到标题和段落之间的分界点,也可进行段落标题的识别。
第四,融合位置和语义的关系,有一些工作是去预测其间的父子关系,这种方式速度可能较慢,标注工作量较大。
Figure2meta 这个工作是针对文档解析中图表 meta 信息的抽取。文档解析以后,得到很多表格和图表,对于图表可进一步细分,通过路由的控制去分成流程图、数值图、普通图等类别。分类之后做进一步的信息抽取,抽取出<figure,title>、<figure,reference>、<figure,boudingbox>的信息,用于图表的渲染。
实现思路为,对于简单的布局,可以利用 boundingbox 实现,获取到 caption/title 信息,通过正则或版式分析模型对其 boudingbox 按就近原则进行匹配。也可进行有监督模型训练,比如用bg去索引段落中的语义信息,按相似性进行绑定。
类似地,<figure/reference>也可通过一些启发式规则获取 boudingbox,结合阅读顺序和就近原则进行匹配,也可进行有监督的分类。
<figure,boundingbox>,可以直接获取版式分析结果,因为版式分析可以得到其坐标信息。
<figure,type>,可训练一个分类模型,将图片细分为流程图、数值图、普通图等类型。
最后可得到 json 数据。
DocChartSearch&Recmmend 工作主要是在一些应用场景下,基于图片构建一些API去做图表的检索,以及以图搜图、文图搜索等一些具体的下游任务。
文档解析中有层级图的概念,即 DocGraph。通过布局分析,进行区域间关系的抽取,如一个表格与其相应的标题、来源、引用段落、所属章节之间的关系,以及层级逻辑关系。
代表性工作包括 DocStruct、HRDoc、Detect-Order-Construct 等,主要是构建层级图。
在文档进行表述的时候,图表会作为一个链接元素,引用到文档的描述中,在 RAG 中,经常会召回一些 chunk,可能提示“如表所示”,但此时图可能已经丢失,将召回的 chunk 传递给多模态大模型,模型可能无法回答。我们可以做一些类似于实体链接中的 entity-linking 的工作,将图和描述进行 link。
整个文档解析链路非常长,误差会一步步传播。在应用场景中,用户可能既要求快又要求准。上图中列出了我们在实际的文档解析研发过程中遇到的一些问题及其解决方案,供参考。
02
多模态图索引构建与多模态检索生成流程
多模态图结构索引的构建流程如上图所示。多模态数据源通过一个预处理模块,分配到不同的子模块。文本模块,可进行文本处理,比如传统的 NLP 任务,或者利用大模型进行分词、实体识别;图像处理模块,进行特征抽取或者目标检测;视频处理和图像类似,一帧帧的视频可以看作一张张图片,进行相应的处理;音频处理模块,对语音转文本。之后,跨模态进行关联,构建图结构。
图结构的构建包括节点的创建,如实体、图像、视频片段;边关系的建立,主要是时空、语义和跨模态之间的关系;最后存储到图数据库,如 Neo4j、TigerGraph。嵌入部分主要是对抽取出的特征进行相应的嵌入,比如图像可采用 ViT 等嵌入模型,视频可使用 3D-CNN 等。之后进行跨模态的对齐,包括图片和文本的对齐、文本和视频的对齐,以及文本和音频的对齐等。最后,联合索引,采用 FAISS、Milvus 等向量数据库。
多模态检索的流程如上图。先对文档做版式分析,获取每个区块的一些元素,做 chunk 的划分。传统 RAG 链路中,对于文本就直接用文本,对表格和图片进行 summary,最终得到的仍是文本模态的信息,进行 embedding 操作后存储到向量数据库,用于后续检索。
更高维的形式是多模态嵌入,对文本模态做文本的嵌入,对表格和图片分别做表格和图片的嵌入,最后转储到向量数据库中。
检索生成的流程为,用户输入纯文本形式或文本加图片形式的 query,首先对 query 进行解析,分为文本解析、图像解析、语音解析,形成多模态检索。检索有多种检索策略,包括图模式匹配的子图检索、向量相似度检索、跨模态关联检索等。之后对检索出来的结果进行融合,做相关性排序,再送到大模型中做生成。
图文多模态检索可以利用多模态大模型,结合 prompt 的构造进行拼接,然后生成检索的答案数据,之后对答案数据进行标准化处理或引文来源的标注。
上图中列出了多模态 GraphRAG 的主要优势,包括更细致的检索、更高的准确性和可解释性等等。
03
知识图谱解决 chunk 之间关联以及细粒度问题
传统 RAG 方法存在诸多问题,比如 chunk 的模式会导致召回大量噪声片段;涉及聚合、过滤、统计时向量召回准确性低,因为向量模型对于数字比较敏感,所以鲁棒性不强,并且大模型在数学计算方面的能力有限;传统 RAG 的 chunk 之间彼此孤立,缺乏关联,在跨文档任务上表现不佳;对于答案涉及多文本块、多文档的问题,普通的向量召回或者 ES 召回能力有限;用大模型进行任务规划时,不确定性较高,在特定可控生成任务上表现欠佳;大模型改写、推荐任务非常发散,存在幻觉;领域语料不足,大模型跳出问答,需要学会拒答;RAG 整体理解受限,文本 embedding 后可解释性低。
知识图谱,通过引入专家知识,可以通过实体层级特征增强相关性,并且可以增强 chunk 之间的关联。例如微软的 GraphRAG 可以通过 search 摘要增强 chunk 之间的关系,从而提升相关性召回。假设已有 KG 数据存在,那么可以将 KG 作为召回信息源,补充上下文信息。此外,可将各类知识形成一个 KG,提供图视角上的 embedding,以补充召回的特征。知识图谱也是另一种形式的规则知识库,可作为规范引导大模型进行可控生成。利用结构化知识构建场景图谱,可以进行 Cyther 图检索。
然而,构建一个高质量、更新灵活、计算简单的大规模图谱成本极高。
在大模型的背景下,知识图谱应具有更为广泛的含义,并不局限于传统的三元组形式,而是可以扩充到更深层次的关系。例如文档领域,文档元数据级关系图谱,节点是各个文档的名称或者主题等元数据,关系为文档之间的相似关系或者父子关系;文档块级关系图谱,节点可以是各个 chunk(如通过版式分析识别出的标题、段落、表格或图片等),关系是 chunk 之间的父子、共现、相似等关系;文档实体级关系图谱,节点为文档中的特定实体类型及关系,或者关系键词网络。
典型的应用范式主要包括:
KG-enhanced prompt;
HiQA 方案(引入文档层级结构细分召回);
Linkedin KG-RAG 方案(双层嵌入索引);
UniQA-Text2cypher 的 KG-RAG;
HippoRAG 框架(考虑实体特异性);
GRAG 方案(考虑拓扑结构);
微软 GraphRAG 方案(集 KG 大成,先做实体关系的抽取,再构建社区摘要);
KAG 方案(将知识图谱全盘纳入到 RAG 范式中)。
各类应用范式的代表工作如上图所示。
我们认为,知识图谱增强大模型问答要浅投入,因为前期的知识库构建,还有后续的检索,整体耗时较长,且消耗大量计算资源。
一些相关优化工作,如 LightRAG,在 GraphRAG 上进行了简化,主要去除了社区、社区摘要等环节,使整个系统更为轻量,知识更新也更快。但无论是 LightRAG,还是 GraphRAG,知识图谱本身构建不准确的问题都较为棘手。
对比传统 RAG、GraphRAG 和 KGQA:
RAG 主要进行 chunk 和向量检索,方式简单,但精确性和逻辑性较差。
GraphRAG 可进行实体关系抽取,再做社区摘要,这样文档语义关联性更强,但缺点就是图谱质量不高,逻辑性不足。
KGQA,指的是早期 pipeline 的 KGQA 的方式,要做很多细致的操作,比如 query 解析、实体链接、语义推理等,然后做原文的引用。其优点是比较精确,逻辑性较高,因为每个链路都需进行相应优化,生成结果可信度较高,尤其在时间和数值问答方面较为准确。缺点则是图谱构建成本较高,信息可能有损,假设实体链接做得不好,可能导致链接实体有误,知识缺失。此外,可读性较差。
总结而言,KG 方案构建门槛高、知识稀疏;RAG 方法缺少语义和逻辑关联;GraphRAG 高度依赖开放域信息抽取,会引入大量噪声,最后用大模型进行生成,可能存在幻觉问题。
04
文档多模态 RAG 相关工作进展
目前,涌现出大量文档多模态 RAG 相关工作,输入文档截图,通过大模型实现端到端的问答,省去了之前的 OCR pipeline 链路。下面介绍一些代表性的工作。
解析式文档多模态 RAG,其核心思想是将文档切分为页面,再利用版式识别的方式对文档进行各种模态元素的分割、解析、提取,然后再嵌入、检索。主要包括三种路线:
对于文本和图片模态直接做 embedding,通过多模态的嵌入模型执行向量检索,通过相似度搜索,将原始图片和文本块传入多模态大模型去做问答的生成。此路线的核心大模型为多模态大模型。
使用多模态大模型对图片生成摘要,将非文本模态转化为纯文本,并使用 textembedding 的方法做嵌入,将文本块传递给文本生成模型以进行答案的生成。这里主要利用多模态大模型对图片做摘要,使用的是纯文本的大模型。
使用多模态大模型对图像生成文本摘要,再对图像摘要文本进行 textembedding 以获得嵌入表示,同时使用参考原始图像嵌入和检索图像摘要,最后将原始图像和文本块传递给多模态大模型进行整合。这里用到的是多模态大模型。
DocVQA 式文档多模态 RAG,其核心思想是将文档切分成页面,不再细分区块,直接把文档整页送入大模型进行 VQA 工作。
代表性的工作如 ColPali,利用多模态大模型进行检索,以及后续演进出的 VisRAG、M3DocRAG,均为端到端利用多模态大模型进行知识问答。
多模态大模型 RAG 的实践流程可概括如上图所示。首先,将文档转成页面,通过 ColPali 等工具将图片编码成向量数据,同时对文本进行相应编码,之后将图片的 embedding 和 prompt 的 embedding 同时输入多模态大模型,生成问答。
05
总结
最后,对当前工作中的要点总结如下:
语料加工是 RAG 中的一个重要环节,占据龙头地位,其加工的程度和质量直接影响知识问答的效果。
多模态大模型为文档处理带来新契机,例如可利用大模型进行端到端的处理,或是使用大模型对细分块进行处理,还有更多潜在场景值得探索;
需要思考如何将文档挖得好、挖得深,虽然已经有很多工具用于深度挖掘,但当前仍难以脱离人工操作,要保证质量可信,需要人进行 check;
文档智能因为大模型的应用而再次受到关注,但传统的很多长尾问题还未得到根本解决;
知识图谱要积极拥抱变化,之前的包袱太重,但不能丢,内涵要改变,要从结构、粒度、形式等多方面发展。
在一些资源受限且文字密集型的场景中,之前的小模型方案(如传统 NLP/CV/BERT 等)仍具有应用价值,不可摒弃。
以上即为本次分享的全部内容,谢谢大家。
06
问答环节
Q1:在真正落地时应该如何选择一个合适的方案?
A1:在搭建 MMOCR 多模态大模型的实践中发现,该模型对资源的消耗极大。即便是企业用户,可能也难以具备充足资源用于部署多模态大模型。此外,多模态大模型属于数据驱动型模型,在前期训练阶段,可能需要成百上千万的数据才能训练出一个多模态大模型。再者,关于幻觉问题,普通 RAG 在处理自上而下这类简单版式时,效果或许较好,但面对包含多种元素的复杂版式,效果可能欠佳。对于简单表格,多模态大模型能够端到端输出为 markdown 格式。然而,图片多模态大模型无法进行截图或定位操作。综上所述,在资源有限的情况下,建议采用 pipeline 模式。
Q2:标题识别不准有什么优化方法?
A2:标题识别的准确性主要与版式识别中标签的定义相关。其一,标题级别可定义为一级标题、二级标题、三级标题等。但在实际落地过程中发现,尽管标题定义粒度精细,采用 CV 方式时有时会出现漏检情况,从而导致识别不准确。建议将标题定义为统一形式,标题分级可通过一些规则进行后处理。其二,可以训练一个语义模型。若语义模型获取的数据量足够多,其具备一定的标题层级划分能力。通过语义标记,结合相应规则的后处理,能够实现标题分级。不过,很难保证能够做到尽善尽美。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-05-07
Adobe首发多Agent、跨模态框架MDocAgent:复杂文档理解性能爆炸12%,错误率直降21%
2025-05-07
多模态文档检索开源方案-三大竞赛获奖方案技术链路
2025-05-05
推翻传统RAG,腾讯用生成式检索打开多模态新局面
2025-04-30
用AI大模型把手写笔记转换为LaTeX PDF文档
2025-04-30
Qwen能吞下整本扫描版PDF,直接转Word了,这波操作太赞了!
2025-04-28
3D 小白亲测:用 Trae + Blender MCP 从零开始 AI 建模(附踩坑指南)
2025-04-27
行业落地分享:作业帮问答检索系统实践
2025-04-27
大模型赋能CAD图纸智能识别与集成实战指南
2024-09-12
2024-06-14
2024-06-17
2024-08-06
2024-08-30
2024-05-30
2024-11-28
2024-10-07
2024-10-16
2024-04-21
2025-04-08
2025-04-05
2025-03-30
2025-03-26
2025-03-05
2025-03-02
2025-01-08
2024-12-13