RAG-Accuracy Reward for Retriever Fine-Tuning

Does training a dense retriever on downstream RAG answer-accuracy beat standard relevance fine-tuning? Backbone Qwen3-Embedding-0.6B, LoRA. Evaluated on 5 datasets; ID=in training data, OOD=held out.

Each cell = full-corpus recall R@1·5·10·15 (×100) and acc = downstream RAG answer accuracy (cover-EM, fixed Qwen2.5-7B reader over top-5). Bright text = best R@5 in column. Mean = avg recall over the 5 datasets.
Cell fill = the cell's average recall vs zero-shot on that dataset: greener = better redder = worse (saturates at 6 pts).
Rows. base baselines: zero-shot and Tevatron (standard relevance recipe, InfoNCE+BM25 hard negs, no reader). ours anchored MNRL + precomputed reader guide, opt. WiSE-FT: vLogit = guide by reader logP(answer); vJudge = guide by k/8 cover-EM accuracy. online live RAG-acc reward (PPO, vLogit). Same training queries within a section.
anchor=1.0 marks runs trained with the L2-to-frozen-base anti-forgetting regularizer (all train_mnrl-based rows); anchor=0 = none (Tevatron). Comparisons are within-anchor-policy; zero-shot is the unmodified base model (same across all data mixes).

§ Annotation-free results ([no-gold]) — the primary test

Setup. Pools are the policy's own retrievals only — the gold passage is never force-seeded and never used as a contrastive positive. The only supervision is the gold answer inside the frozen-reader reward. This is the honest annotation-free regime.
Headline (negative, robust). Across ~25 runs — PPO/GRPO × deterministic/sampled pools × dense/binary-EM reward × LR/N/KL × 20k–149k data × MiniLM→4B — no annotation-free variant beats its zero-shot base, and all trail gold-supervised Rel-SFT. Stochastic pool sampling collapses unconditionally (R@5 < 5, rows omitted); deterministic top-N is stable but capped at ≈base. Weak backbones: MiniLM [no-gold] 32.0 HotpotQA cEM (≈base), bert collapses (near-random base index). Full grid: EXPERIMENTS.md §11b.
BackboneMethodDataset→MuSiQue
in-domain
2Wiki
OOD multi-hop
HotpotQA
OOD multi-hop
NQ
OOD single-hop
TriviaQA
OOD single-hop
Qwen3-Emb-0.6Bzero-shotR@5 / cEM50.1 / 14.866.8 / 24.271.1 / 38.255.4 / 46.858.4 / 70.2
Rel-SFT (tuned, MuSiQue 10k) — gold-passage supervisedR@5 / cEM53.7 / 14.465.6 / 25.273.3 / 40.454.9 / 46.658.7 / 68.8
Rel-SFT (data-matched 50k mix) — gold-passage supervisedR@5 / cEM54.8 / 16.266.7 / 26.474.0 / 39.456.2 / 47.261.4 / 68.2
[no-gold] PPO frozen N=30 (10k/400) — best annotation-freeR@5 / cEM50.6 / 13.666.3 / 24.470.2 / 38.0 / – / –
[no-gold] PPO frozen, 50k mix, 3600 stepsR@5 / cEM49.7 / 14.465.7 / 23.470.6 / 37.452.4 / 45.455.2 / 67.2
[no-gold] PPO frozen, 149k mix, 4200 stepsR@5 / cEM47.1 / 13.665.1 / 24.467.4 / 33.850.2 / 45.852.5 / 64.0
[no-gold] GRPO deterministic top-30R@5 / cEM45.5 / 11.664.3 / 22.666.6 / 34.8 / – / –
[no-gold] PPO frozen + reward gate (20k/1200)R@5 / cEM45.7 / 11.065.0 / 22.266.3 / 34.0 / – / –
[no-gold] PPO frozen (20k/1200)R@5 / cEM44.5 / 12.063.3 / 18.462.7 / 32.2 / – / –
Qwen3-Emb-4Bzero-shotR@5 / cEM55.5 / 17.868.5 / 25.479.3 / 42.664.7 / 52.864.5 / 73.8
Rel-SFT (MuSiQue 10k) — gold-passage supervisedR@5 / cEM56.1 / 17.467.8 / 25.078.3 / 43.061.4 / 52.464.3 / 74.0
Rel-SFT (data-matched 149k mix) — gold-passage supervisedR@5 / cEM57.1 / 18.667.8 / 27.481.6 / 46.265.7 / 53.067.1 / 74.6
[no-gold] PPO frozen N=30R@5 / cEM48.5 / 16.662.5 / 22.270.3 / 37.6 / – / –

§ Gold-seeded reference results — [gold] (relevance-supervised; demoted)

Supervision caveat. In every “Ours” row below the gold passage is force-seeded into each candidate pool and used as the InfoNCE positive — the same passage-level supervision Rel-SFT consumes. These rows compare training signals (reader-reward RL vs contrastive) at equal supervision; they are not annotation-free and are kept only as reference.
Setup. Retriever trained by PPO where the reward is a frozen reader LLM's answer success (log p(gold answer | query, retrieved context)); the gold passage is seeded into every pool ([gold]). Baseline Rel-SFT = direct contrastive supervision on gold passages, the best of a 24-config sweep. All trained on MuSiQue; evaluated in-domain + 4 OOD sets.
Metrics. R@k = full-corpus recall (retrieval quality). Acc = downstream RAG cover-EM of a frozen Qwen2.5-7B reader over the top-5 (what the reward actually targets). Bold = best in its backbone×dataset group.
Headline. Indirect RL matches or beats a well-tuned relevance-SFT baseline on multi-hop (2Wiki/HotpotQA) retrieval and downstream accuracy, at every backbone — largest on the weak bert (2Wiki R@5 53.6 vs 36.3) — using no relevance annotation. It is a multi-hop phenomenon: on single-hop NQ/TriviaQA a MuSiQue-trained retriever trails (out-of-domain transfer).
BackboneMethodCheckpointScriptsDatasetR@1R@5R@10R@15R@30Acc ↓
bert-base (110M)Zero-shotstockMuSiQue
in-domain
5.613.819.223.030.02.6
+ Rel-SFTHF ↗cfg · run17.835.843.849.358.210.6
+ OursHF ↗cfg · run26.642.348.352.258.710.6
Zero-shotstock2Wiki
OOD multi-hop
2.56.69.411.315.03.2
+ Rel-SFTHF ↗cfg · run21.336.341.544.349.311.4
+ OursHF ↗cfg · run35.953.657.759.963.016.4
Zero-shotstockHotpotQA
OOD multi-hop
10.822.728.832.939.514.8
+ Rel-SFTHF ↗cfg · run30.351.758.962.869.626.8
+ OursHF ↗cfg · run35.954.859.561.965.627.6
Zero-shotstockNQ
OOD single-hop
3.911.115.919.826.714.8
+ Rel-SFTHF ↗cfg · run13.031.942.047.456.734.2
+ OursHF ↗cfg · run15.229.536.141.148.333.0
Zero-shotstockTriviaQA
OOD single-hop
6.018.325.129.336.832.2
+ Rel-SFTHF ↗cfg · run15.240.450.056.264.557.6
+ OursHF ↗cfg · run14.032.941.045.251.951.4
MiniLM-L6-v2 (23M)Zero-shotstockMuSiQue
in-domain
24.945.753.057.063.712.4
+ Rel-SFTHF ↗cfg · run26.146.954.558.866.314.8
+ OursHF ↗cfg · run26.344.852.356.563.712.2
Zero-shotstock2Wiki
OOD multi-hop
33.753.958.961.264.315.6
+ Rel-SFTHF ↗cfg · run36.056.760.963.266.118.6
+ OursHF ↗cfg · run36.658.462.664.667.419.6
Zero-shotstockHotpotQA
OOD multi-hop
37.863.469.973.177.332.6
+ Rel-SFTHF ↗cfg · run38.565.371.474.378.435.8
+ OursHF ↗cfg · run38.264.970.873.677.534.2
Zero-shotstockNQ
OOD single-hop
22.652.864.171.680.246.6
+ Rel-SFTHF ↗cfg · run23.053.165.071.780.347.2
+ OursHF ↗cfg · run20.647.559.666.877.345.4
Zero-shotstockTriviaQA
OOD single-hop
19.954.266.772.880.967.2
+ Rel-SFTHF ↗cfg · run20.454.566.072.180.466.8
+ OursHF ↗cfg · run19.452.363.569.177.564.8
Qwen3-Emb-0.6BZero-shotstockMuSiQue
in-domain
28.050.157.962.068.614.8
+ Rel-SFTHF ↗cfg · run29.653.762.667.173.214.4
+ OursHF ↗cfg · run27.550.858.963.870.614.2
Zero-shotstock2Wiki
OOD multi-hop
39.566.869.771.073.024.2
+ Rel-SFTHF ↗cfg · run39.265.669.070.773.225.2
+ OursHF ↗cfg · run38.363.367.369.372.128.0
Zero-shotstockHotpotQA
OOD multi-hop
42.871.176.879.282.738.2
+ Rel-SFTHF ↗cfg · run42.173.379.081.985.840.4
+ OursHF ↗cfg · run41.974.079.982.686.240.6
Zero-shotstockNQ
OOD single-hop
25.555.467.372.880.746.8
+ Rel-SFTHF ↗cfg · run24.854.966.472.580.546.6
+ OursHF ↗cfg · run23.251.363.069.277.746.2
Zero-shotstockTriviaQA
OOD single-hop
21.958.470.075.382.370.2
+ Rel-SFTHF ↗cfg · run22.058.769.976.082.968.8
+ OursHF ↗cfg · run21.655.467.473.080.367.8
Qwen3-Emb-4BZero-shotstockMuSiQue
in-domain
30.255.564.268.975.017.8
+ Rel-SFTHF ↗cfg · run29.756.164.669.876.817.4
+ OursHF ↗cfg · run30.158.368.272.978.820.4
Zero-shotstock2Wiki
OOD multi-hop
40.268.571.673.075.225.4
+ Rel-SFTHF ↗cfg · run40.367.870.872.574.725.0
+ OursHF ↗cfg · run37.267.070.872.775.430.0
Zero-shotstockHotpotQA
OOD multi-hop
44.579.384.987.490.542.6
+ Rel-SFTHF ↗cfg · run43.078.384.387.090.343.0
+ OursHF ↗cfg · run44.182.787.789.892.646.4
Zero-shotstockNQ
OOD single-hop
30.164.775.982.089.152.8
+ Rel-SFTHF ↗cfg · run29.761.473.479.187.452.4
+ OursHF ↗cfg · run28.863.174.780.587.350.2
Zero-shotstockTriviaQA
OOD single-hop
24.864.576.481.486.773.8
+ Rel-SFTHF ↗cfg · run25.264.376.080.986.874.0
+ OursHF ↗cfg · run25.264.976.281.287.173.4
All 6 fine-tuned adapters are on the Hub under Icey444; every row links its exact config + sbatch driver in trl-projects@cluster-move. Eval is reproduced end-to-end by eval_checkpoint.py (R@k) and eval_rag_l2.py (downstream Acc).

Code & findings: FINDINGS.md · legacy MuSiQue board: musique-legacy.html · updated .