Datawhale AI夏令营 -「多模态RAG图文问答挑战赛」实战上分

学习链接https://www.datawhale.cn/activity/359/learn/206/4498
项目地址https://github.com/li-xiu-qi/spark_multi_rag/blob/main/mineru_pipeline_all.py

一、赛题本质与核心挑战

多模态RAG的四大支柱

  1. 图文混合理解:同时处理PDF中的文本、表格及图表(如柱状图/流程图)
  2. 精准溯源:答案需标注来源文件名+页码(占比50%评分)
  3. 抗幻觉设计:避免模型虚构答案,需证据支撑
  4. 多轮对话支持:处理用户追问的上下文连贯性

典型失分场景分析

  • 图像信息丢失(传统解析器忽略图表)
  • 表格跨页分割导致语义断裂
  • 检索结果与问题类型错配(如数值查询匹配到文本描述)

二、冠军级技术架构解析

1. 多模态解析层(破局关键)

graph TD A[PDF输入] --> B(文本解析 PyMuPDF/MinerU) A --> C(图像提取 OCR+CLIP) A --> D(表格处理) D --> D1[HTML序列化→键值对] D --> D2[旋转表格校正] C --> C1[Qwen-VL生成描述] C --> C2[过滤纯英文图表]
  • 图像转文本:用Qwen-VL生成结构化描述(例:“图7:2023Q3营收环比下降37%”)
  • 表格优化:HTML序列化 > Markdown,保留合并单元格等复杂结构

2. 动态检索引擎

组件 实现方案 效果提升
混合检索 BM25(关键词) + BGE-M3(语义) +32%召回率
路由决策 问题分类器(文本/图像/表格优先) 检索速度提升3x
重排模型 BGE-Reranker-v2-minicpm 准确率+41%

关键代码(检索结果融合):

# RRF倒数排序融合
def rrf_fusion(scores_list, k=60):
    fused_scores = {}
    for scores in scores_list:
        for idx, score in enumerate(scores):
            fused_scores[idx] = fused_scores.get(idx, 0) + 1/(k + idx)
    return sorted(fused_scores, key=fused_scores.get, reverse=True)

三、上分技巧:从Baseline到Top方案

1. 来源准确性优化(占50%分值)

  • 分块元数据增强:将页码、文件名嵌入向量化过程
  • 两阶段校验机制
    def validate_source(answer, page):
        prompt = f"判断答案'{answer}'是否可能出现在page{page}?输出Y/N"
        return llm(prompt) == "Y"
    

2. **多模态提示词工程

结构化提问模板

你是一名财务分析师,请按规则执行:
1. 若问题含*图表*/*增长率*等关键词 → 优先分析图像描述块
2. 数值比较问题 → 检索表格序列化数据
3. 输出格式:{"answer":..., "file":..., "page":...}
示例:{"answer": "第三季度", "file": "2023Q3财报.pdf", "page": 5}

3. **资源瓶颈破解方案

硬件优化

  • 解析阶段:租用AWS g4dn.xlarge($0.52/小时)加速OCR
  • 训练阶段:Xinference分布式部署模型,并行处理图像描述生成

时间管理

graph LR A[PDF解析] -->|2h| B(向量库构建) B -->|3h| C(模型预热) C -->|分钟级| D(实时检索)

Tip:中间结果缓存避免重复计算


四、避坑指南(血泪经验)

  1. PDF解析陷阱

    • 旋转表格 → 用Docling解析器+正则校正
    • 加密文本 → 凯撒密码检测(ASCII位移识别)
  2. 长上下文退化

    • 滑动窗口分块(512字符+128重叠)
    • 表格单独分块避免跨页切割
  3. 评分规则误区

    • 来源错误直接扣50%分 → 优先保证文件名/页码准确
    • 测试集含时效性问题 → 添加时间过滤器

五、进阶工具链推荐

  1. 解析层
    • MinerU替代PyMuPDF(保留图表位置元数据)
  2. 向量模型
    • GTE-Qwen2-7B-instruct > BGE-v1.5(中文场景)
  3. 评估工具
    • OpenCompass自动化评测答案质量

六、备赛时间规划表

阶段 关键任务 耗时
基础搭建 环境配置+数据预处理 1天
核心迭代 多模态解析→检索优化→提示工程 3天
调优阶段 对抗测试+硬件优化 2天
收尾 可视化调试工具开发 1天

竞赛的本质是有限资源下的工程艺术——冠军方案常胜秘诀不在算法复杂度,而在对数据分布的深刻理解与精准的资源分配。保持每日迭代,百行代码的优化终将汇成质变。

posted @ 2025-08-13 22:39  叶谨之  阅读(115)  评论(0)    收藏  举报