多模态 RAG 实验项目,用于验证在“问题来自单个 slide deck、检索范围可控、回答依赖页面图像与 OCR 文本”的场景下,检索增强策略能否稳定提升最终问答效果。
项目搭建可复现的最小闭环:数据准备、索引构建、检索召回、回答生成与评测都可以通过命令行直接运行,便于对比 baseline 和 enhanced 两种检索方案在同一数据集、同一生成设定下的差异。
当前实验设定,核心约束如下:
- 检索范围固定在每题对应 deck 的
20页内 - 生成阶段只使用
top1返回页 - 只喂给 VLM:
top1页图top1raw OCR chunk
- answer model:
qwen3.5-35b-a3b
测试用的数据集为SlideVQA部分子集
| 方案 | EM | F1 | Recall@5 | 平均延迟 | P95 延迟 |
|---|---|---|---|---|---|
| baseline | 69.44% | 71.53% | 98.61% | 9.784s | 17.133s |
| enhanced | 80.56% | 80.66% | 98.61% | 10.044s | 17.094s |
当前代码对应的核心差异:
baseline:原始 OCR chunk 检索enhanced:contextual chunk + page proxy检索增强
在 top1 image + top1 chunk 的更严格回答设定下,enhanced 明显优于 baseline。
Elasticsearch:承担词法检索,提供 OCR chunk 的 BM25 召回能力。Qdrant:承担向量检索,统一存储文本与页面级多模态 embedding。Qwen3-Embedding-4B:生成查询和文本 chunk 的 embedding,用于语义检索。Qwen3-VL-Embedding-2B:生成页面图像与 page proxy 的多模态 embedding,用于页面级检索增强。Qwen3.5-35B-A3B:负责最终回答生成,也用于部分检索增强文本的构造。Reciprocal Rank Fusion (RRF):融合 BM25 与向量检索结果,减少单一路径召回偏差。contextual chunk + page proxy:在原始 OCR chunk 之外补充更适合检索的上下文化文本与页面代理表示,是enhanced方案的核心。
只启动当前需要的服务:
docker compose up elasticsearch qdrant qwen_vl qwen_embed qwen_multimodal_embed
docker compose psuv sync
hf download NTT-hil-insight/SlideVQA --repo-type=dataset --local-dir /data/SlideVQA
uv run scripts/prepare_eval_dataset.py --slidevqa-dir /data/SlideVQA --slidevqa-split test --overwriteuv run run-slidevqa-experiment build --variant baseline --rebuild
uv run run-slidevqa-experiment build --variant enhanced --rebuilduv run run-slidevqa-experiment eval --variant baseline
uv run run-slidevqa-experiment eval --variant enhanced