Datawhale夏令营
📚 2025夏令营第三期 多模态RAG 方向的学习
个人实践的过程笔记
目录
-
- 🎯 前言
-
- 🏆 比赛简介
- 📋 比赛任务
- 🛠️ Task1: 上手赛题、跑通Baseline
- 🔍 Task2: 理解赛题重难点
- 🚀 Task3: 调整方案、进阶上分!
🎯 前言
此次夏令营活动是基于讯飞开放平台“多模态RAG图文问答挑战赛”,我在“Datawhile”公众号中发现有 多模态RAG 方向,本身感兴趣,想学习学习。
🏆 比赛简介
简单来说就是很多提问问题所得到的信息,不仅仅局限于纯文本中,在图表中"隐藏"着Query的重要Answer,所以我们需要模型不仅能懂文本,还需要理解图片,二者结合使得回答的精确性与完整性都达到比较好的状态;而我们如果需要模型能够回答自己专业领域的一些问题,并且能够实时的更新,成本不要太高,那么多模态RAG 的重要性就体现出来了。
📋 比赛任务
官方给了四个文件,分别是多模态RAG财报 PDF,训练集,测试集,提交示例。我们需要将这些 PDF 构建 RAG 知识库,根据用户的查询,去检索出最相关的知识,生成回答,PDF 来源与页码。
评审指标:对于每一个提问计算分数。分为三个方面:页面匹配度(0.25)、文件名匹配度(0.25),答案内容相似度(0.5)。
相关注意事项:允许使用开源、未开源大模型,但是不允许使用外部数据集。
🛠️ Task1: 上手赛题、跑通Baseline
这里面官方写的步骤巨详细,照着做就可以。
🔍 Task2: 理解赛题重难点
Baseline的目的是:在基础的硬件设备下,用简单可复现的方式完成任务。由于本次的 Baseline 涉及的代码比较多,我就不详细的将代码粘贴过来了,讲解一些主要的代码逻辑。其实链接里面已经写的非常详细了,我这里就是简单的说一下。
- fitz_pipeline_all.py (用 PyMuPDF 从 PDF 文件直接提取每页文本,然后把所有 PDF 页面的文本块(chunks)整理成一个 JSON 文件。)
只提取纯文本,不处理图片、表格
- rag_from_page_chunks.py (加载 PDF 提取的 chunks 数据、构建向量数据库(embedding)、基于相似度检索相关内容、结合大模型生成答案、批量处理测试集问题,并输出结构化 JSON)
- get_text_embedding.py (提供一个统一的接口,批量调用 OpenAI 接口生成文本 Embedding)
- extract_json_array.py (确保从 LLM 返回的内容中提取出干净 JSON,提取 ```json 代码块、提取第一个合法的 JSON 数组 []、提取所有顶层 JSON 对象 {},拼成数组)
下面是另一种方法
-
mineru_pipeline_all.py (PDF → Markdown → JSON → Chunk。提取文本、图片、表格信息,并最终转换成适合 RAG(检索增强生成)使用的 JSON 文件)
- mineru_parse_pdf.py (读取 PDF → 调用解析后端(pipeline 或 VLM) → 输出多种结果文件(Markdown、JSON、模型中间结果))
-
/image_utils/ |——— async_image_analysis.py (补充 caption(提高 RAG 检索体验)) |——— image_analysis_utils.py ( JSON解析工具 和 图像→Base64编码工具) |——— prompts.py (提示词)
🚀 Task3: 调整方案、进阶上分!
Baseline 的优缺点
优点 | 逻辑清晰、端到端完整、模块化 |
缺点 | 文档解析粗糙、分块策略单一、检索精度有限、模型泛用性 |
进阶要点
好啦!这就是我对于这一期的理解与笔记,希望能够帮助到大家。
评论前必须登录!
注册