MERGE: Multi-LLM Ensemble for Retrieval via Generative Enrichment
Tzu-I Ho, Yung-Yu Shih, Shang-Yu Su, Dongzhe Wang, Yun-Nung Chen
cs.IR, cs.CL
2026-09-29
MERGE 让三个异构 7-8B 开源模型各自扩写查询,再由 14B 模型合成一条送给 BM25;五个 BEIR 基准上 nDCG@10 相对原查询提升 2.1 到 14.9 分,prompt 用检索分数自动调。
Query2Doc 和 HyDE 会让 LLM 把短查询扩成伪文档或假想答案,再交给 BM25 去填「用户怎么问」和「文档怎么写」之间的词表缺口。单模型扩写带着训练数据和架构留下的固定口味:漏同义说法、编造细节,或者把一条歧义查询锁死在一种解读上。控制这个口味几乎全靠手写 prompt,而且 Qwen2.5 上好用的指令搬到 Llama-3.1 或 Mistral 上通常要重写。模型加一台,调 prompt 的人力就加一截,多模型 ensemble 在检索里很难划得来。
这不是假问题。检索栈每换一次生成模型,扩写风格和能用的 prompt 往往一起失效。
MERGE 同时下手两处:三个异构 7-8B 开源模型各自扩写,一个 14B 模型再合成一条查询;每一条 prompt 都用下游 BM25 分数自动调。
推理时走两级。
合成结果当作普通文本送给固定 BM25,语料不改、索引不重建、不做 rank fusion(多路排序列表的合并)。按常见 BM25 习惯,原查询会重复若干次再拼上扩写。输出是纯文本,理论上也能喂稠密检索,实验只跑了 BM25。
prompt 用 task-grounded APO 离线搜。框架起点是 SPO:优化器 LLM 改写 prompt,评估器 LLM 两两比较输出。MERGE 把评估器换成真检索,在训练数据固定 20% 子集上跑同一套 BM25,用 nDCG@10 打分。每轮是一场小淘汰赛:第 0 轮从种子 prompt 采样两套扩写,分高的当冠军;之后优化器根据当前冠军写出新草稿,生成器再采两套,三方比分。挑战者赢了就整包替换(扩写、分数、prompt);冠军连续两轮没被掀翻就停。优化器能看到分差、95% 置信区间、p 值,以及挑战者改对和改错的检索例子。默认的 MERGE (APO) 只看当轮信号;MERGE (APO w/ history) 额外喂最近五轮轨迹。APO 先调完三个生成器,再冻住它们去调 Stage-2。多数淘汰赛不到 10 轮就停,单卡 H100 上每个 (stage, model) 通常不到一小时,一次性成本摊到后续全部检索流量上。
五个 BEIR 任务覆盖开放域问答、科学论断、金融意见、论辩检索和实体检索,指标一律 nDCG@10。所有方法共用 BM25,只改查询怎么被改写。docT5query 是监督式、要过整库文档的基线;Exp4Fuse 对原查询和 LLM 伪文档各跑一路 BM25 再融合。相关数字引自 Liu and Zhang (2025),MERGE 没有重跑。
| 方法 | NQ | SciFact | FiQA | Touché-2020 | DBPedia |
| Vanilla BM25 | 30.48 | 67.62 | 23.85 | 44.23 | 31.99 |
| docT5query | 38.10 | 67.50 | 25.20 | 34.70 | 33.10 |
| BM25+Exp4Fuse | 39.10 | 68.80 | 24.70 | 51.20 | 36.10 |
| docT5query+Exp4Fuse | 42.80 | 71.30 | 26.30 | 39.90 | 38.90 |
| MERGE w/o APO | 34.52 | 67.79 | 19.41 | 38.69 | 33.59 |
| MERGE (APO) | 45.42 | 71.40 | 25.59 | 50.16 | 37.94 |
| MERGE (APO w/ history) | 42.50 | 70.01 | 25.91 | 51.67 | 37.84 |
相对原查询,五套全涨:+14.9(NQ,30.48→45.42)、+7.4(Touché-2020)、+6.0(DBPedia)、+3.8(SciFact)、+2.1(FiQA,23.85→25.91)。相对 BM25+Exp4Fuse 五套全赢,NQ 多 6.3 分,Touché-2020 只多 0.5。相对更强的 docT5query+Exp4Fuse,NQ 赢 2.6、Touché-2020 赢 11.8、SciFact 基本持平(+0.1),FiQA 输 0.4、DBPedia 输 1.0。
无监督扩写基线五场全过;叠了监督文档扩写的强基线,五场里三场打平或更好。
手写种子 prompt 会帮倒忙:FiQA 相对原查询掉 4.4,Touché-2020 掉 5.5。加上 APO 后五套全正,相对无 APO 版本,更好的那个变体还能再涨 10.9(NQ)、3.6(SciFact)、6.5(FiQA)、13.0(Touché-2020)、4.4(DBPedia)。NQ、SciFact、DBPedia 这类实体查询更吃不带 history 的 APO;FiQA 和 Touché-2020 面更宽,带 history 更好。
Stage-2 合成不是摆设。NQ 上三条 Stage-1 扩写分别是 38.79、34.59、41.06,合成后 45.42,比最好单模型再高 4.4;SciFact 再高 0.9,FiQA 再高 0.6。同一条 NQ 查询「the cuban revolt against spain was led by」,Llama 写出何塞·马蒂和 1895-1898,Mistral 给出 1868-1898 的冲突区间,Qwen 几乎只堆「leaders, figures, insurgents」这类空词;14B 合成器把马蒂、戈麦斯、马塞奥和年份并进一条,并标出意识形态领袖与军事领袖的分工。
这是查询侧扩写的工程增量,不是新的检索范式。
对已经在跑 BM25 的搜索栈,它把「换模型就要重写 prompt」收成一次离线淘汰赛,在线只多三次 7-8B 加上一次 14B 调用、一次 BM25。不用给每篇文档跑 T5,也不用改索引或调融合权重。语料一变,docT5query 要重标整库;MERGE 只动查询。
四次 LLM 调用不便宜,APO 还要一块带标注的 dev 子集。更适合查询词和文档词差得远、暂时又不想上稠密检索或重排序的场景。结论里提到合成查询也能喂 dense retriever,表里没有这个数字。
结论之前没有单独的局限节,缺口要从实验设置里读。
五个主数字全部绑在固定 BM25 上,稠密检索、重排序、文档侧扩写只在结论里口头提到。APO 吃 20% 有标注子集,跟「零样本、无监督扩写」并排放会偏乐观。Exp4Fuse 与 docT5query 的分数是转引,解码设置和模型族是否对齐,正文对不上。推理延迟和 token 成本没有对照表,生产里四次生成会不会把延迟打爆,只能自己估。Qwen2.5-14B 同时当合成器和 APO 优化器,有没有自我偏好,没有消融。优化出来的 prompt 有时读起来像一袋模型专属导向 token,文中也承认;扩写文本仍可读,但 prompt 难以人工审计。两个 APO 变体没有统一赢家,线上要按查询类型切换或再加路由,文中没有规则。Table 2 的 Stage-2 消融只覆盖 NQ、SciFact、FiQA 三个任务。