面向复杂排版 PDF 的多模态 RAG 图文问答项目,覆盖 PDF 解析、图文内容结构化、混合检索、重排序、答案生成和批量评测流程。项目用于“科大讯飞 x Datawhale 多模态 RAG 图文问答挑战赛”场景,重点提升非结构化财报数据的检索精度与页码级溯源能力。
在挑战赛评测口径下,系统相较官方 Baseline 有明显提升:
| 指标 | Baseline | 本项目 |
|---|---|---|
| 页码溯源精度 | 0.006 | 0.116 |
| 综合得分 | 0.269 | 0.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
└── 财报数据库/
MinerU 方案,适合复杂布局 PDF:
python mineru_pipeline_all.py
PyMuPDF 方案,适合纯文本或轻量解析:
python fitz_pipeline_all.py
python rag_from_page_chunks.py
该流程会加载分页内容,构建检索索引,并批量生成测试集答案。
python evaluate.py
python eval_recall.py
项目包含 LoRA 微调相关 Notebook:
spark_data_process.ipynbspark_model_finetune.ipynbQwen2_5_7B_Alpaca_fintune.ipynb训练输出、LoRA 权重和缓存文件不纳入 Git 管理,可自行保存到 Hugging Face、网盘或对象存储。
以下内容需要本地生成或自行下载:
MIT License
面向复杂排版 PDF 的多模态 RAG 图文问答项目,覆盖 PDF 解析、图文内容结构化、混合检索、重排序、答案生成和批量评测流程。项目用于“科大讯飞 x Datawhale 多模态 RAG 图文问答挑战赛”场景,重点提升非结构化财报数据的检索精度与页码级溯源能力。
在挑战赛评测口径下,系统相较官方 Baseline 有明显提升:
| 指标 | Baseline | 本项目 |
|---|---|---|
| 页码溯源精度 | 0.006 | 0.116 |
| 综合得分 | 0.269 | 0.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
└── 财报数据库/
MinerU 方案,适合复杂布局 PDF:
python mineru_pipeline_all.py
PyMuPDF 方案,适合纯文本或轻量解析:
python fitz_pipeline_all.py
python rag_from_page_chunks.py
该流程会加载分页内容,构建检索索引,并批量生成测试集答案。
python evaluate.py
python eval_recall.py
项目包含 LoRA 微调相关 Notebook:
spark_data_process.ipynbspark_model_finetune.ipynbQwen2_5_7B_Alpaca_fintune.ipynb训练输出、LoRA 权重和缓存文件不纳入 Git 管理,可自行保存到 Hugging Face、网盘或对象存储。
以下内容需要本地生成或自行下载:
MIT License