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).

§ Main result — indirect feedback vs. direct relevance supervision

Setup. Retriever trained by PPO where the reward is a frozen reader LLM's answer success (log p(gold answer | query, retrieved context)) — no passage-level relevance labels. 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 .