【2025】Datawhale AI夏令营-多模态RAG-Task1、Task2笔记-任务理解与Baseline代码解读
【2025】Datawhale AI夏令营-多模态RAG-Task1、Task2笔记-任务理解与Baseline代码解读
任务背景
科大讯飞AI比赛-多模态RAG图文问答挑战赛:https://challenge.xfyun.cn/topic/info?type=Multimodal-RAG-QA&ch=dwsf2517
此次比赛以财报问答任务作为具体场景,旨在解决图文信息混排的情况下需要同时整合图表和文字的复杂推理问题。在这类问题中,模型不仅需要理解自然语言,还要”看懂“图像,将二者关联并进行推理。
例:
问题:根据图表显示,产品A的销售额在哪个季度开始下降?
材料:
此比赛的输入与输出要求如下:
输入:
test.json
:包含所有评测问题,文件里只包含question
字段 ,answer
、filename
和page
缺失,需要参赛者回答补充。财报数据库.zip
:包含多个PDF文件,这些PDF是真实世界的公司财报,格式上图文混排,内容上包含大量段落、数据表格以及各种图表(如条形图、饼图、折线图等)。test.json
中所有问题的答案必须从这些PDF文档中寻找,不能依赖任何外部知识。
输出:
为 test.json
中的每个问题,预测答案(answer
) 、来源文件名(filename
)和来源页码( page
),然后整理成JSON文件,形如:
[{"filename": "xx.pdf","page": 1,"question": "广联达在苏中建设集团南宁龙湖春江天越项目中,具体运用了哪些BIM技术,并取得了哪些成果?","answer": "广联达在苏中建设集团南宁龙湖春江天越项目中,具体运用了哪些BIM技术,并取得了哪些成果?"},……
]
任务难点
- 如何同时利用图文混排PDF中的图表和文本信息回答问题?(多模态信息理解、跨模态检索、图文关联推理)在传统的RAG方法中,信息检索的对象只有文本,不能充分利用图表信息,这使得部分需要联合图文才能正确回答的问题无法得到有效回答。
- 如何基于检索结果正确地回答问题、追溯回答依据?(答案生成)答案中需要准确地指出答案的来源(具体到文件名、页码)。
Baseline代码仓库
作者的github仓库(内容更丰富、功能说明更详细):https://github.com/li-xiu-qi/spark_multi_rag
modelscope仓库(实际使用、可以预览数据):https://www.modelscope.cn/datasets/Datawhale/AISumerCamp_multiModal_RAG.git
Baseline运行
1、在Git 环境中初始化并配置Git LFS(Large File Storage)功能
git lfs install
Git LFS是Git的扩展,用于更高效地处理大型二进制文件。把大文件上传到一个独立的LFS存储服务器上,而Git仓库里只存一个指向它的“指针”。
执行此命令后出现Git LFS initialized.
即初始化成功(其他多余的输出,如Error: failed to call git rev-parse --git-dir: exit status 128 : fatal: 不是 git 仓库(或者任何父目录):.git
可以忽略,不影响实际使用)。
执行此命令后,如果出现提示:
git:'lfs' 不是一个 git 命令。参见 'git --help'。最相似的命令是log
说明没有安装Git LFS插件。可以使用sudo apt install git-lfs
安装,然后重新执行此命令。
2、下载baseline代码
git clone https://www.modelscope.cn/datasets/Datawhale/AISumerCamp_multiModal_RAG.git
下载完成后,进入AISumerCamp_multiModal_RAG
文件夹。
3、配置密钥
打开baseline
文件夹 -> 双击打开env.txt
文件 -> 在LOCAL_API_KEY处粘贴个人使用的API密钥 -> 保存env.txt文件,然后重命名为.env
4、运行baseline文件
运行baseline.ipynb
文件。运行完成后得到rag_top1_pred.json
即为结果文件。
Baseline代码理解
目录结构
一、解压数据
!unzip -n datas/财报数据库.zip -d datas/
执行输出如下图所示:
二、安装依赖包
!pip install -r requirements.txt
除了numpy、tqdm、loguru(python日志记录库)等常见的依赖,需要安装的特别依赖有:
-
python-dotenv:读取
.env
环境变量文件,将文件中的变量自动加载到os.environ
中,供程序使用 -
openai:调用LLM服务的API接口
-
PyMuPDF:处理PDF和其他文档文件,可以进行读取、修改等操作
三、执行fitz_pipeline_all.py文件
!python fitz_pipeline_all.py
四、执行rag_from_page_chunks.py文件
!python rag_from_page_chunks.py
未完待续