从 RAG 应用中你能学到什么? (文件内容解析)

360影视 欧美动漫 2025-03-14 16:12 3

摘要:日常常见接触到的文件格式有doc、pdf、excel 等文件格式,这些不同文件格式的文件其中内容有文本、表格、图像夹杂其中。其中文字内容的读取重要的是保留其中板式,文字内容的读取一般各种python库基本能支持;

前面文章全面介绍了RAG 的整个流程,今天重点介绍RAG第一步——各种文件内容理解、解析,用户的输入文件较好的无损理解是最好RAG 的第一步。

日常常见接触到的文件格式有doc、pdf、excel 等文件格式,这些不同文件格式的文件其中内容有文本、表格、图像夹杂其中。其中文字内容的读取重要的是保留其中板式,文字内容的读取一般各种python库基本能支持;

本文重点讲解非文字读取方面的技术,如遇到图片,如果是表格需要 OCR 识别技术、如果是非文字转成的物理场景的图片,则需要对图像内容进行理解;这些基本都涉及到多模态大模型相关内容。典型的OCR识别方面,最近AllenAI 开源的 olmOCR 具备对多种复杂文档元素的识别能力,包括:

表格:能够解析文档中的表格结构,确保数据完整性。

公式:保留数学表达式,避免丢失关键信息。

手写内容:具备一定的手写识别能力,提高可读性。

这一切得益于 olmOCR独特的训练方法,它在大量学术论文、技术文档数据集上进行了专门微调,并采用了一种提示技术(Prompting Technique),显著提升了文本识别准确性,同时减少幻觉现象(hallucinations),即误识别或虚构内容的情况;

而olmOCR 使用 Qwen2.5-VL 作为基座训练的模型;而对于实际的物理场景图片识别理解 Qwen2.5-VL 也具备较强的能力. 值得注意的是 Qwen2.5-VL 本身具备能自动识别表格、公式、乐谱等复杂元素并输出结构化数据的能力.

总结下来,当前多模态大模型结构一般包括至少一个Vision-Encoder 一般是一个ViT 结构,或者ViT 的变体结构,然后加一个LLM 模型(整体思路将文本、视频输入ViT 得到token 表达)然后结合 text token 的embedding 一起输入到LLM 的结构,以 Qwen2.5-VL 其架构图如下:

Qwen2.5-VL

下面对Qwen2.5-VL论文中描述的训练技巧进行阐述:

预训练阶段:

我们从零开始训练了一个 Vision Transformer(ViT),使用 DataComp(Gadre 等,2023)和部分内部数据集作为视觉编码器的初始化,同时利用 预训练的 Qwen2.5 大语言模型(LLM)(Yang 等,2024a)作为 LLM 组件的初始化。正如表 2 所示,预训练过程分为三个不同阶段,每个阶段采用不同的数据配置和训练策略,以逐步增强模型的能力。

在第一阶段,仅训练 Vision Transformer(ViT) 以提高其与语言模型的对齐性,为多模态理解奠定坚实基础。此阶段的主要数据来源包括 图片字幕(image captions)、视觉知识(visual knowledge)和 OCR 数据。这些数据集经过精心挑选,以培养 ViT 提取有意义视觉表示的能力,并能够有效地与文本信息融合。

在第二阶段,所有模型参数全部解冻,并在多种多模态图像数据集上进行训练,以增强其处理复杂视觉信息的能力。
这一阶段引入了更复杂、更注重推理能力的数据集,包括:

交错数据(interleaved data)多任务学习数据集(multi-task learning datasets)视觉问答(VQA)多模态数学(multimodal mathematics)基于智能体的任务(agent-based tasks)视频理解(video understanding)纯文本数据集(pure-text datasets)

这些数据集加强了模型在视觉和语言模态之间建立深层次联系的能力,使其能够处理更加复杂的任务。

在第三阶段,为了进一步增强模型在 长序列推理 方面的能力,加入了 视频数据和基于智能体的数据,同时增加了序列长度。这一阶段的训练使模型能够更精准地应对更高级、更加复杂的多模态任务。
通过扩展 序列长度,模型能够处理更长的上下文信息,特别适用于需要 长距离依赖和复杂推理 的任务。

在训练过程中,图像大小和文本长度的不同会导致计算负载不均衡,为了解决这一问题,我们采用了一种优化训练效率的策略:

主要计算开销来源于 LLM 和视觉编码器。由于 视觉编码器的参数较少,并且我们引入了窗口注意力(window attention)以进一步降低其计算需求,因此我们主要关注如何在不同 GPU 之间平衡 LLM 的计算负载动态打包数据样本,根据 LLM 的输入序列长度分配计算资源,以确保计算负载均衡。

在不同阶段,我们使用了不同的 序列长度

第一、二阶段:数据被统一打包成 8,192 长度的序列进行训练。第三阶段:序列长度增加至 32,768,以适应模型在长序列任务中的增强能力。

这样,模型不仅能够生成更长的推理序列,还能维持较快的训练迭代速度。

后训练阶段:

Qwen2.5-VL 的后训练过程包括两个阶段:监督微调(SFT)直接偏好优化(DPO),其中 Vision Transformer(ViT) 参数保持冻结

SFT 阶段:模型在多样化的多模态数据上进行微调,包括图文对、视频和纯文本,数据来源涵盖通用 VQA(视觉问答)、拒绝采样(Rejection Sampling),以及文档与 OCR、目标定位(Grounding)、视频和智能体相关任务等专业数据集。DPO 阶段:专注于图文数据和纯文本数据,利用偏好数据来对齐模型与人类偏好。在此过程中,每个样本仅处理一次,以确保高效优化

这种精简的训练流程在增强模型跨模态推理能力和任务特定表现的同时,确保了其与用户意图的高度一致性。关于Qwen2.5 -VL 模型原理就介绍到这里。

相关其他开源模型如 DeepSeek-VL2,其结构类似;

视觉图片经过一个Vision Encoder ,然后经过一个适配层,VL Adaptor 输入到LLM。

DeepSeek-VL2 采用三阶段训练流程

1.初始阶段:训练 视觉编码器(vision encoder)视觉-语言适配器 MLP,同时保持语言模型固定,使用图文对数据(详见 3.1 节)。

2.预训练阶段:进行视觉-语言预训练,使用3.2 节描述的数据

3.微调阶段:利用 3.3 节中的数据 进行监督微调

预训练和微调阶段所有模型参数(包括视觉编码器、视觉-语言适配器和语言模型)都会解冻,并进行同步训练

DeepSeek-VL2 通过监督微调(SFT) 来增强预训练模型的指令跟随能力和对话能力

采用内部视觉-语言 SFT 数据,优化所有参数,但仅监督模型的回答和特殊标记,并屏蔽系统和用户提示词。为了加强对话理解能力,DeepSeek 将多模态数据DeepSeek-V2纯文本对话数据 相结合。这种方法确保了模型在各种视觉-语言任务中的强大性能,包括:
密集图像描述(dense image captioning)
通用视觉问答(VQA)
OCR 识别
表格/图表/文档/图形理解
视觉转代码(visual-to-code)
视觉推理(visual reasoning)
视觉目标定位(visual grounding)
语言理解 等。

最后介绍一类使用Google SigLIP 视觉理解的模型,构建自己多模态模型的相关做法,训练一个较好的视觉编码器是较为困难的,很多厂商直接基于 SigLIP 直接开发自己的大模型,Qwen2.5-SigLIP、DeepSeek Janus-Pro 等都是这方面尝试。

本文从RAG 流程中内容文本化读取引入,在OCR、表格信息、图像理解场景刨根问底;搬运工追溯到多模型大模型相关知识点;以Qwen2.5-VL,DeepSeek-VL2 为例总结了目前多模态构建原理,关注AIGC-LANDING,搬运工将分享最前沿的AI技术,谢谢大家!

来源:AIGC-LANDING

相关推荐