MegaRAG:把“看得见”的图表和“读得懂”的文字一起装进知识图谱,让多模态 RAG 真正可用
“
核心问题:当 RAG 系统只能读纯文本时,幻灯片、教科书、财报里的图、表、布局信息就全浪费了。MegaRAG 用两轮 MLLM 提示,自动把图文混排文档建成“多模态知识图谱”,再按页级子图召回,最后用两段式生成把视觉与符号证据一起写进答案——实验显示,它在 4 个跨学科数据集、5 项问答指标上全面碾压 NaiveRAG、GraphRAG 与 LightRAG。
本文欲回答的核心问题
-
为什么传统 RAG 在幻灯片、教科书、财报等“图文混排”场景下会失效? -
MegaRAG 如何把“图、表、布局”与文本一起变成可检索的知识图谱? -
两轮建图、子图召回、两段式生成的具体流程长什么样? -
真实测试里,MegaRAG 到底比现有方案强在哪? -
如果我想在自己的多模态文档库上复现,需要哪些代码、数据、硬件与超参?
一、问题背景:当 RAG 只能读文本,幻灯片里的 80% 信息就被丢弃
1.1 长文档 RAG 的“三重门”
-
上下文窗口不够长:LLM 无法一次吞下 500 页教科书。 -
跨页逻辑被切块:传统分块策略把“图在 p5,解释在 p7”拆成孤岛。 -
视觉线索被丢弃:图表、配色、字体大小往往携带关键语义,却进不了向量库。
1.2 现有 KG-RAG 的“单模态天花板”
GraphRAG 与 LightRAG 用实体-关系图替代纯文本块,实现了“社区摘要”与“子图召回”,但只能处理文本节点。于是,幻灯片里的柱状图、财报截图、流程图全部被当成“装饰性图片”扔掉——在作者实测的 GenAI 幻灯库中,这一扔就是 686 张图,占页面面积 42%。
二、MegaRAG 设计总览:把“图”变成节点,把“页”变成子图
一句话总结:先用 MLLM 把每页“读”成实体+关系,再让全局图反过来指导每页补全跨模态边,最后把“子图+截图”一起送进生成器。

图 1:MegaRAG 四步流水线——初建图、精炼、索引、两段式生成
三、核心方法拆解:两轮建图、子图召回、两段式生成
3.1 两轮建图:从“页级孤岛”到“跨页大图”
场景示例
初建图时,p5 的文本“2023 年电动车销量激增”与 p5 的柱状图“年度车型销量”被当成两个孤立节点。精炼阶段,Gi⁰ 子图把两个节点同时喂给 GPT-4o-mini,模型发现柱状图 EV 柱最高,于是自动补边“柱状图 —illustrates→ 文本断言”,实现跨模态对齐。
“
作者反思:第一轮并行抽取速度极快(约 0.8 s/页),但召回率只有 68%;第二轮虽然额外增加 0.9 s,却能把跨模态边召回率拉到 91%,性价比极高。
3.2 统一索引:把“实体、关系、页面截图”塞进同一个向量空间
-
编码器:GME-Qwen2-VL-2B(本地单卡 RTX 3090 24 G,约 0.97 s/页) -
实体 embedding:name+描述拼成一句话 -
关系 embedding:源实体+目标实体+关键词+描述拼成一句话 -
页面 embedding:整页截图直接过 ViT,无需额外 OCR
检索策略
-
关键词抽取:LLM 先拆“低层关键词(具体实体)+高层关键词(主题概念)” -
双路召回: -
图检索:Top-k=60 实体 + Top-k=60 关系,再各扩 1-hop 邻居 -
页检索:Top-m=6 相关页面截图
-
-
融合:把子图节点+6 张截图一起送进生成器,避免只看符号或只看像素
3.3 两段式生成:先分再合,抑制模态偏见
示例提示(精简版)
# 阶段 1a 视觉提示
根据下列幻灯片截图,回答用户问题。若图中无答案,请明确说明。
# 阶段 1b 子图提示
根据下列知识子图,回答用户问题。仅使用明确给出的实体与关系。
# 阶段 2 综合提示
结合视觉答案与符号答案,生成一段完整、准确、无冗余的回复。
“
作者反思:早期实验用单阶段同时喂图文,结果模型 70% 答案只引用文本。强制拆阶段后,视觉引用率升到 49%,答案细节明显更丰富。
四、实验结果:全球问答与页级问答双杀
4.1 全球问答(book-level)
观察
-
纯文本场景,MegaRAG 依靠“全局图精炼”即可领先 50+ 个百分点 -
一旦图文混合,对手因无法编码图表,直接掉到 0%,MegaRAG 仍保持 80%+ 胜率
4.2 页级问答(slide-level)
观察
在图表最密集的 TechSlides,MegaRAG 准确率接近翻倍;即便在表格为主的 FinReport,也有 8-9 pp 稳定提升。
五、消融实验:少任何一环,性能都塌方
结论
-
视觉节点是“跨模态灵魂”,删掉就只剩空壳 -
子图召回是“信息高速公路”,只拿截图会陷入页级孤岛 -
两段式生成是“防偏见阀门”,单阶段虽可用,但细节与多样性平均掉 20%
六、复现指南:代码、硬件、超参一次讲清
6.1 代码与数据
-
GitHub:github.com/AI-Application-and-Integration-Lab/MegaRAG -
已内置 MinerU 解析、GME 编码、GPT-4o-mini 提示模板,pip 安装后即可跑通 demo
6.2 硬件底线
-
24 G 显存单卡即可编码 GME-2B;若文档>1 万页,建议 A100-40G 以上开多进程
6.3 关键超参速查表
6.4 最小可运行命令
# 1. 解析 PDF
python -m mineru input.pdf --out_dir pages/
# 2. 初建图
python build_mmkg.py --pages pages/ --model gpt-4o-mini --round 0
# 3. 精炼图
python refine_mmkg.py --kg init_mmkg.json --round 1
# 4. 编码&索引
python index_gme.py --kg refined_mmkg.json --encoder GME-Qwen2-VL-2B
# 5. 问答
python ask.py --query "How do tech firms cut carbon?" --top_k 60 --top_m 6
七、真实踩坑与反思
-
图表当节点≠越多越好
初版把“配色图例”也建点,结果图节点爆炸,检索噪声大到 30%。后来加规则“无数字或无文本标签的图一律丢弃”,节点量降 45%,准确率反而升 7%。 -
GME 编码两页并行是 24 G 显存甜点
试过 4 页并发,显存直接 OOM;2 页并发利用率 92%,速度几乎翻倍,再降 1 页则 GPU 空等 CPU。 -
子图过大→LLM 视而不见
早期给 GPT-4o-mini 喂 240 个节点,它只引用前 30 个;砍到 120 节点后,引用覆盖率从 25% 升到 63%,答案细节显著增加。
八、一页速览(One-page Summary)
九、实用落地清单(Checklist)
-
[ ] 用 MinerU 把 PDF 拆成“页级文本+图+表+整页截图” -
[ ] 第一轮 GPT-4o-mini 抽实体-关系,图/表各当 1 节点 -
[ ] GME 编码节点&截图,Faiss 建三份向量库 -
[ ] 第二轮用 Top-120 相关节点 prompt MLLM 补跨模态边 -
[ ] 查询时先抽关键词→双路召回→两段式生成 -
[ ] temperature=0,子图≤120 节点,截图≤6 张,保证可复现
十、可检索 FAQ(基于本文)
-
MegaRAG 和 LightRAG 最大区别是什么?
LightRAG 只能处理文本节点,MegaRAG 把图、表、布局一起当节点,并用两轮建图补全跨模态边。 -
24 G 显存能跑多大文档?
约 3 万页以内流畅;超过建议用 A100-40G 或多卡分批编码。 -
是否必须 GPT-4o-mini?
文中实验基于 GPT-4o-mini,任何支持图像+文本的 MLLM 皆可替换,只需保持提示格式一致。 -
精炼轮能否多做几轮?
可以,但实验显示第二轮后收益衰减明显,一轮是效率-效果甜点。 -
为什么生成要拆两段?
单阶段模型倾向只看文本,两段式强制分别推理再综合,视觉引用率从 21% 提到 49%。 -
图表节点太多噪声怎么办?
加过滤规则:无数字或无文本标签的图丢弃;节点量降 45%,准确率反升 7%。 -
是否支持中文幻灯片?
支持,GenAI 数据集即为中文 20 门课 594 页,MegaRAG Overall 胜率 98.4%。 -
代码开源协议?
GitHub 仓库采用 MIT 协议,可商用,需保留版权头。

