|
ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 1.5px;color: rgb(0, 0, 0);font-size: 14px;text-align: justify;visibility: visible;line-height: 2em;">导读本次分享聚焦多模态 GraphRAG,深度剖析了文档智能解析的技术链路,并梳理了相关工作进展,全方位呈现了文档智能、知识图谱与大模型结合的应用范式。ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 1.5px;line-height: 2em;visibility: visible;">1.文档智能解析技术链路与文档层级关系构建 2.多模态图索引构建与多模态检索生成流程 ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 1.5px;line-height: 2em;">3.知识图谱解决 chunk 之间关联以及细粒度问题ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 1.5px;line-height: 2em;">4.文档多模态 RAG 相关工作进展ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 1.5px;line-height: 2em;">5.总结ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 1.5px;line-height: 2em;">6. 问答环节 ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;text-align: left;line-height: 1.75em;">分享嘉宾|余俊晖 360 高级算法工程师ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;text-align: left;line-height: 1.75em;">编辑整理|卢学林ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;text-align: left;line-height: 1.75em;">内容校对|李瑶ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;text-align: left;line-height: 1.75em;">出品社区|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和mistralORC等,端到端地解析出 makdown格式,为模型做预加工。尽管模型官方宣称效果很好,但实际测试结果显示欠佳。
这种方案的缺点也很明显:首先不支持区域分块,不输出bounding box信息;第二,不支持CPU离线部署;第三,速度很慢,消耗大量GPU资源;第四,部署成本高,针对长文本情况,显存占用大;第五,存在幻觉问题,容易出现多字少字等和原文不一致的情况;第六,对于比较复杂的文档无法做截图存储。
PDF2TEXT方案,利用规则驱动的工具,速度快、效果好,在可编辑场景下比OCR的文字信息识别更为准确。
其缺点是不支持扫描版本文档,并且对图片和表格等处理效果欠佳。
OCR-PIPELINE中最关键的就是版式分析。
版式分析是一个目标检测任务,用于对文档的区域进行划分,核心在于标签的定义,包括正文、标题、图片、图片标题、表格等等。
目前表现较为出色的是上海人工智能实验室的DocLayout-YOLO,在数据的标注和多场景的数据上面做了大量工作,使泛化性得到了有效提升。
版式分析模型与文档类型强相关,高度依赖于场景数据的标注,以及标注数据的多样性,在后面的文档恢复或markdown转录时,需要取舍一些标签,所以要有对粒度的控制。
去年四月份,我们也开源了一些版式分析的模型,主要针对中文论文、英文论文、中文研报和教材这四个领域,在这四个场景下进行了细粒度的标注,训练出了一个轻量化的模型。模型基于YOLOv8,属于轻量化的模型,单个模型只有6.23MB,所以在下游垂直场景中速度很快。
版式分析的大部分工作集中在标注环节,而标注高度依赖于对业务的理解,业务需要控制标签的力度,然后我们进行相应的数据标注,以满足垂直领域场景的要求。
文档解析中的难点之一是表格解析,分为多线表、缺线表、无线表三种类型。受限于传统CV的方法,存在多尺寸、分辨率低、跨页处理等多种情况,而可训练的场景数据极为稀缺。
传统CV方法主要检测cells和tablestructure,将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方式时有时会出现漏检情况,从而导致识别不准确。建议将标题定义为统一形式,标题分级可通过一些规则进行后处理。其二,可以训练一个语义模型。若语义模型获取的数据量足够多,其具备一定的标题层级划分能力。通过语义标记,结合相应规则的后处理,能够实现标题分级。不过,很难保证能够做到尽善尽美。 |