
RAG各模块联合优化思路:多智能体协作建模-MMOA-RAG浅尝 原创
现有RAG系统的各个模块的任务目标不一致:传统方法(如监督微调SFT)单独优化查询重写、文档检索、答案生成等模块,但单个模块的“局部最优”无法保证最终答案的“全局最优”。
MMOA-RAG创新点是将RAG系统的可训练模块建模为协作式多智能体,让所有智能体的优化目标统一对齐到“最终答案质量”(如F1分数),通过多智能体强化学习(MAPPO算法)实现模块间的联合优化,解决这个问题。
MMOA-RAG 的整体框架
总结如下:
模块 | 角色(智能体/环境) | 功能 |
查询重写器(QR) | 智能体(可训练) | 将复杂/模糊的初始问题 |
文档检索器(Retriever) | 环境(固定,建模为RL智能体难度较高,使用Contriever、BGE等成熟检索模型) | 根据每个 |
文档选择器(S) | 智能体(可训练) | 从 |
答案生成器(G) | 智能体(可训练) | 基于 |
联合优化需要实现参数共享:三个智能体复用同一LLM参数(通过不同提示词区分任务),降低计算开销。
两阶段优化
MMOA-RAG的训练分为“预热SFT”和“多智能体优化(MAPPO)”两阶段,确保模型先掌握基础功能,再通过协作agent提升性能。
阶段1:预热SFT
让每个智能体先学会“基础任务逻辑”(如QR拆解问题、S选择文档、G生成答案),为后续强化学习提供“基线模型”。
数据集构建
针对三个智能体分别构建SFT数据:
- QR的SFT数据:复用Rewrite-Retrieve-Read论文的公开查询重写数据集(问题→子问题对);
- S的SFT数据:用启发式方法标注“有用文档ID”:
- 对问题
q
和黄金答案Ans_golden
,去除停用词、小写化后得到词集Set_q
; - 对每个候选文档
d
,同样处理得到Set_d
; - 若
Set_q
与Set_d
有交集,则标注d
的ID为“有用”;
- G的SFT数据:以“
q
+D_selected
→Ans_golden
”为样本(Ans_golden
为黄金答案)。
损失函数
采用标准语言建模损失,最小化模型预测与标签的负对数似然:
阶段2:多智能体优化(MAPPO)
MAPPO是PPO的多智能体扩展,支持“共享全局奖励”,适合完全协作场景。
模型组件
训练过程中涉及三个模型:
实验性能
不同方法在数据集上的表现
关于优化不同智能体的消融实验
不同模块配置下 RAG 系统的通用性实验
Improving Retrieval-Augmented Generation through Multi-Agent Reinforcement Learning,https://arxiv.org/pdf/2501.15228v2repo:https://github.com/chenyiqun/MMOA-RAG
本文转载自大模型自然语言处理 作者:余俊晖
