今天是2024年12月18日,星期三,北京,天气晴。
我们来看看多模态大模型在文档方面的进展,关于这块,其实我们已经有了一个系统专题(https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzAxMjc3MjkyMg==&action=getalbum&album_id=3724150715762409475)
今天,我们来看第10篇,对文档多模态RAG的最近进展进行回顾,一个是文档多模态RAG方案VisDoM,一个是DocVLM多模态OCR模型,从中可以再一次回顾已有方案的缺陷以及增强对这类技术的认知。
供各位参考,多思考,多总结,多实践;
一、文档多模态RAG方案VisDoM
文档多模态RAG进展,解决多文档问答系统中如何有效利用视觉丰富元素(如表格、图表和幻灯片)的问题,是个有趣的话题。如表格、图表和幻灯片,提供了结构化数据和视觉摘要,这对于回答某些类型的问题至关重要。表格通常呈现密集、有组织的信息,无法通过纯文本捕获。同时,图表和幻灯片可以直观地描绘趋势、关系或分布,这些需要超出文本描述进行解释。
我们之前已经介绍过visrag,murag,colpali等方案,但是,当给定相同上下文时,文本通常比视觉输入表现得更好,这可以归因于视觉LLMs的语言偏见以及视觉幻觉。
可以关注最近进展:《VisDoM: Multi-Document QA with Visually Rich Elements Using Multimodal Retrieval-Augmented Generation》(https://arxiv.org/pdf/2412.10704),提到一个方案-VisDoMRAG,采用并行RAG pipelne处理文本和视觉元素,每个管道都经过多步骤推理过程,包括证据整理、思维链推理和答案生成,也就是说,其核心在于一致性约束的模态融合机制,整个示意图如下:
同时有visual RAG和Textual RAG两个并行流程,最后将两个流程进行合并,做VisDomRAG。
进一步拆解技术流程,则可以看其中几个点,如下图所示:
给定一组文档,VisDoMRAG并行执行证据驱动的➊视觉RAG和➋文本RAG,通过证据整理和思维链推理引导LLMs根据各自检索到的上下文回答一个查询。推理链以及来自文本和视觉部分的答案通过➌模态融合被组装在一起,并使用推理链的一致性分析来对两种模态的输出进行对齐,以得出最终答案。
一个是独立推理。首先,分别对文本和视觉RAG pipeline进行独立的推理。文本RAG部分使用OCR(PyTesseract)从文档中提取文本,并将其分割成可索引的块,然后通过文本嵌入模型进行索引和检索。保留指示源文档和页码的元数据,以便于追溯性。
视觉RAG部分则使用视觉嵌入模型生成文档页面的页级粒度索引,并通过视觉检索模型检索与查询相关的页面。
一个是推理链对齐。将文本和视觉部分的推理链,这里利用思维链(CoT)对检索到的相关文档再进行处理,分别生response、evidence、chain of thought和Final Answer)。
然后通过一致性分析对这些推理链进行对齐,这个对齐的过程是判别的过程,LLM需要评估文本和视觉推理链的一致性,识别并解决任何不一致、矛盾或推理缺陷。整个的prompt如下:
一个是最终答案生成通过一致性分析和对齐后的推理链,LLM生成最终答案。这种机制的目的在于确保不同模态的推理过程在推理时保持一致,从而提高答案的准确性和可验证性。
最后的效果如下,可以再次看看其所使用的LLM:
二、文档智能进展之DocVLM多模态OCR模型
借此再回顾下问题,文档多模态处理,主要问题包括高分辨率图像带来的显著计算开销,以及现有方法在低分辨率输入下性能下降的问题。
典型的计算机视觉任务在低分辨率输入(通常是224×224或336×336像素)下也能取得良好的性能,而文档分析则要求显著更高的分辨率,导致大量的计算开销。
所以后续的改进思路都是直接在VLM中插入OCR提取的文本、使用压缩技术减少视觉特征的数量,以及结合OCR和视觉信息这些。
例如,对于图像视觉处理,常用的有三种策略:
一种是全图像处理与图像重采样,如Qwen2-VL(https://arxiv.org/abs/2409.12191):模型将整个图像作为单一输入进行处理,通过调整图像大小到固定的或范围受限的图像分辨率来控制视觉标记的数量。虽然这种图像处理保留了全局上下文,但相对于视觉标记的数量,它带来了二次的计算复杂性;
一种是基于补丁的处理与受控的patch计数,如,InternVL2(https://arxiv.org/pdf/2412.05271):这种策略将输入图像分割成spatial patch,每个patch独立处理,并通过限制patch数量来控制视觉标记的数量。虽然大多数实现都包含了一个低分辨率的全局视图,但主要关注局部处理可能会影响全局上下文的理解。随着图像数量的增加,这种方法的计算复杂性呈线性增长。与一次性处理完整图像相比,结果提高了效率,特别是对于大型图像;
一种是全尺度处理与特征下采样,例如,LlaVA-OneVision(https://arxiv.org/pdf/2408.03326):一些VLM最初会处理全尺度图像,但然后在将它们输入到LLM之前将视觉特征下采样到最大token计数。虽然这种方法能够捕捉全局和局部上下文,但在初始全尺度处理期间引入了显著的计算开销。
来看最近的进展,多模态文档智能进展,《DocVLM: Make Your VLM an Efficient Reader》(https://arxiv.org/pdf/2412.08746)。
可以看其实现思想:
在OCR编码器上,使用DocFormerV2的编码器组件处理OCR提取的文本和布局信息。该编码器包含344百万参数,仅使用编码器部分,省略了其视觉分支以减少冗余和计算复杂性。编码器处理两种类型的输入,用户指令和OCR数据(包括文本标记及其对应的二维位置信息)。
在查询压缩机制上,引入指令感知的压缩机制,将OCR编码器的输出浓缩为一组紧凑的学习查询。这些查询的数量通常为64个,通过OCR编码器嵌入的分布随机初始化。压缩过程利用M个可学习查询Q(通常M=64),并与OCR嵌入(EOCR)和指令嵌入(EInstructions)一起处理。从编码器输出中,仅保留与学习查询对应的M个特征。这些压缩特征随后被投影以匹配VLM的隐藏维度,并与视觉标记连接后进入语言模型。
在训练策略上,采用两阶段训练策略,OCR-LLM对齐阶段,冻结VLM,仅使用新引入的OCR模态进行训练,确保OCR组件与LLM输入空间对齐。视觉对齐阶段,重新引入视觉信息,鼓励OCR组件补充视觉特征。
当然,也有一个点比较有趣,处理多页文档。给定一个多页输入及其OCR信息,VLM独立处理每一页图像并将结果视觉特征连接起来。
对于OCR信息,探索了两种策略,一个是全局编码,即将整个文档的OCR信息压缩成64个可学习的查询;一个逐页编码,即将每一页的OCR信息分别压缩成64个可学习的查询,然后将其串联起来,得到64乘以学习到的页面数量。
在采用任一策略处理OCR信息后,将得到的压缩OCR特征与串联的视觉特征一起输入到LLM中。
具体效果,可看如下:
总结
本文主要围绕文档多模态RAG的最近进展进行回顾,一个是文档多模态RAG方案VisDoM,一个是DocVLM多模态OCR模型,从中可以再一次回顾已有方案的缺陷以及增强对这类技术的认知。
关于这个方面,我们已经做了不少的工作跟进,大家可以关注公众号的专题,做更多了解。
参考文献
1、https://arxiv.org/pdf/2412.08746
2、https://arxiv.org/pdf/2412.10704
关于我们
老刘,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。
对大模型&知识图谱&RAG&文档理解感兴趣,并对每日早报、老刘说NLP历史线上分享、心得交流等感兴趣的,欢迎加入社区,社区持续纳新。
加入会员方式:关注公众号,在后台菜单栏中点击会员社区->会员入群加入