vv111v/multimodal-financial-rag

Python

1

1 commits

updated Apr 18, 2026

See the code

README

Spark Multi-modal RAG 图文问答系统

面向复杂排版 PDF 的多模态 RAG 图文问答项目,覆盖 PDF 解析、图文内容结构化、混合检索、重排序、答案生成和批量评测流程。项目用于“科大讯飞 x Datawhale 多模态 RAG 图文问答挑战赛”场景,重点提升非结构化财报数据的检索精度与页码级溯源能力。

项目亮点

  • 复杂 PDF 解析:支持 MinerU 与 PyMuPDF 两种处理路径,适配图表、跨页内容和复杂版式。
  • 多模态文本化处理:将图表、图片中的关键信息转为可检索文本,减少单纯文本抽取的信息遗漏。
  • Agentic RAG 工作流:结合 BM25、Embedding 召回和 Reranker 重排,并通过 LLM 裁判判断是否需要补充检索。
  • 结构化输出与抗幻觉:通过 Schema 约束答案格式,要求生成前进行证据对齐和页码校验。
  • 可复现实验流程:包含数据处理、检索问答、批量评测和 LoRA 微调 Notebook。

效果指标

在挑战赛评测口径下,系统相较官方 Baseline 有明显提升:

指标Baseline本项目
页码溯源精度0.0060.116
综合得分0.2690.458

项目结构

multimodal-financial-rag/
├── mineru_pipeline_all.py        # MinerU PDF 批处理流程
├── fitz_pipeline_all.py          # PyMuPDF 轻量解析流程
├── mineru_parse_pdf.py           # MinerU 解析工具
├── get_text_embedding.py         # 文本向量化工具
├── rag_from_page_chunks.py       # RAG 检索与问答主流程
├── evaluate.py                   # 评测脚本
├── eval_recall.py                # 召回评测脚本
├── mrag_v1/..mrag_v4/            # 多轮实验版本
├── image_utils/                  # 图像处理工具
├── requirements.txt              # 基础依赖
├── pyproject.toml                # uv/完整依赖配置
├── .env.example                  # 环境变量示例
└── README.md

环境配置

推荐 Python 3.11+。

基础依赖

pip install -r requirements.txt

完整依赖

如需 MinerU、训练和高级评测能力,可使用 uv:

uv sync

环境变量

cp .env.example .env

示例配置:

LOCAL_BASE_URL=http://localhost:8000/v1
LOCAL_TEXT_MODEL=Qwen/Qwen2.5-7B-Instruct
LOCAL_EMBEDDING_MODEL=BAAI/bge-m3
LOCAL_RERANK_MODEL=BAAI/bge-reranker-v2-m3
BL_API_KEY=your-dashscope-or-compatible-api-key

支持本地 Xinference、DashScope 兼容接口或其他 OpenAI-compatible 服务。

数据准备

本仓库不包含比赛原始数据、财报 PDF、解析中间结果、模型权重或训练输出。请从比赛官方渠道下载数据后放入本地 datas/ 目录,典型结构如下:

datas/
├── 多模态RAG图文问答挑战赛训练集.json
├── 多模态RAG图文问答挑战赛测试集.json
└── 财报数据库/

使用流程

1. PDF 解析

MinerU 方案,适合复杂布局 PDF:

python mineru_pipeline_all.py

PyMuPDF 方案,适合纯文本或轻量解析:

python fitz_pipeline_all.py

2. RAG 检索与问答

python rag_from_page_chunks.py

该流程会加载分页内容,构建检索索引,并批量生成测试集答案。

3. 评测

python evaluate.py
python eval_recall.py

4. 模型微调(可选)

项目包含 LoRA 微调相关 Notebook:

  • spark_data_process.ipynb
  • spark_model_finetune.ipynb
  • Qwen2_5_7B_Alpaca_fintune.ipynb

训练输出、LoRA 权重和缓存文件不纳入 Git 管理,可自行保存到 Hugging Face、网盘或对象存储。

不纳入仓库的内容

以下内容需要本地生成或自行下载:

  • 原始比赛数据和财报 PDF
  • PDF 解析中间结果
  • 向量缓存和评测输出
  • LoRA 权重、checkpoint、optimizer state
  • Python 虚拟环境与第三方依赖目录

License

MIT License

vv111v/multimodal-financial-rag

Python

1

1 commits

updated Apr 18, 2026

See the code

README

Spark Multi-modal RAG 图文问答系统

面向复杂排版 PDF 的多模态 RAG 图文问答项目,覆盖 PDF 解析、图文内容结构化、混合检索、重排序、答案生成和批量评测流程。项目用于“科大讯飞 x Datawhale 多模态 RAG 图文问答挑战赛”场景,重点提升非结构化财报数据的检索精度与页码级溯源能力。

项目亮点

  • 复杂 PDF 解析:支持 MinerU 与 PyMuPDF 两种处理路径,适配图表、跨页内容和复杂版式。
  • 多模态文本化处理:将图表、图片中的关键信息转为可检索文本,减少单纯文本抽取的信息遗漏。
  • Agentic RAG 工作流:结合 BM25、Embedding 召回和 Reranker 重排,并通过 LLM 裁判判断是否需要补充检索。
  • 结构化输出与抗幻觉:通过 Schema 约束答案格式,要求生成前进行证据对齐和页码校验。
  • 可复现实验流程:包含数据处理、检索问答、批量评测和 LoRA 微调 Notebook。

效果指标

在挑战赛评测口径下,系统相较官方 Baseline 有明显提升:

指标Baseline本项目
页码溯源精度0.0060.116
综合得分0.2690.458

项目结构

multimodal-financial-rag/
├── mineru_pipeline_all.py        # MinerU PDF 批处理流程
├── fitz_pipeline_all.py          # PyMuPDF 轻量解析流程
├── mineru_parse_pdf.py           # MinerU 解析工具
├── get_text_embedding.py         # 文本向量化工具
├── rag_from_page_chunks.py       # RAG 检索与问答主流程
├── evaluate.py                   # 评测脚本
├── eval_recall.py                # 召回评测脚本
├── mrag_v1/..mrag_v4/            # 多轮实验版本
├── image_utils/                  # 图像处理工具
├── requirements.txt              # 基础依赖
├── pyproject.toml                # uv/完整依赖配置
├── .env.example                  # 环境变量示例
└── README.md

环境配置

推荐 Python 3.11+。

基础依赖

pip install -r requirements.txt

完整依赖

如需 MinerU、训练和高级评测能力,可使用 uv:

uv sync

环境变量

cp .env.example .env

示例配置:

LOCAL_BASE_URL=http://localhost:8000/v1
LOCAL_TEXT_MODEL=Qwen/Qwen2.5-7B-Instruct
LOCAL_EMBEDDING_MODEL=BAAI/bge-m3
LOCAL_RERANK_MODEL=BAAI/bge-reranker-v2-m3
BL_API_KEY=your-dashscope-or-compatible-api-key

支持本地 Xinference、DashScope 兼容接口或其他 OpenAI-compatible 服务。

数据准备

本仓库不包含比赛原始数据、财报 PDF、解析中间结果、模型权重或训练输出。请从比赛官方渠道下载数据后放入本地 datas/ 目录,典型结构如下:

datas/
├── 多模态RAG图文问答挑战赛训练集.json
├── 多模态RAG图文问答挑战赛测试集.json
└── 财报数据库/

使用流程

1. PDF 解析

MinerU 方案,适合复杂布局 PDF:

python mineru_pipeline_all.py

PyMuPDF 方案,适合纯文本或轻量解析:

python fitz_pipeline_all.py

2. RAG 检索与问答

python rag_from_page_chunks.py

该流程会加载分页内容,构建检索索引,并批量生成测试集答案。

3. 评测

python evaluate.py
python eval_recall.py

4. 模型微调(可选)

项目包含 LoRA 微调相关 Notebook:

  • spark_data_process.ipynb
  • spark_model_finetune.ipynb
  • Qwen2_5_7B_Alpaca_fintune.ipynb

训练输出、LoRA 权重和缓存文件不纳入 Git 管理,可自行保存到 Hugging Face、网盘或对象存储。

不纳入仓库的内容

以下内容需要本地生成或自行下载:

  • 原始比赛数据和财报 PDF
  • PDF 解析中间结果
  • 向量缓存和评测输出
  • LoRA 权重、checkpoint、optimizer state
  • Python 虚拟环境与第三方依赖目录

License

MIT License