1st authro: Patrick Jiang
paper: [2505.14146] s3: You Don’t Need That Much Data to Train a Search Agent via RL
code: pat-jj/s3: s3 - Efficient Yet Effective Search Agent Training via RL for RAG
5. 总结 (结果先行)
s3 框架以其 “解耦搜索与生成、仅训练搜索代理、采用 GBR 奖励” (Figure 3) 的设计,为模型无关的 RAG 系统提供了一条有前景的路径。它清晰地证明了,我们可以在数据需求量极低 (Figure 1) 的情况下,显著提升 RAG 系统的性能和泛化能力,s3 的成功挑战了以往认为需要大量数据或端到端微调才能实现高性能 RAG 代理的普遍看法。它强调了针对性地学习“如何更好地搜索以服务于生成”,可能比试图同时优化搜索和生成本身更为有效和经济。
前瞻展望:
- 奖励信号的进一步优化: GBR 虽有效,但仍需调用 LLM 进行评估。探索更轻量级、无需 LLM 调用的 GBR 代理奖励函数,或者研究更高效的离线 RL 方法来利用 GBR,将是降低训练成本的关键。
- 复杂推理任务的扩展: s3 在当前 QA 数据集上表现优异,未来可以探索其在需要更长链条、更深度多轮交互和推理的复杂任务上的潜力。
- GBR 思想的泛化: “超越基线的增益”这一思想,是否可以被泛化到其他需要 LLM 与外部工具 (如代码解释器、计算器、知识图谱) 交互的场景,以指导 LLM 更有效地利用这些工具?
- 搜索策略的可解释性: 深入分析 s3 学习到的搜索策略,理解其在不同类型问题上的行为模式,有助于进一步提升其鲁棒性和可信度。

1. 思想
现有的基于强化学习 (RL) 的 RAG 方法通常面临两难:
-
优化与下游任务脱节的搜索指标: 例如,仅优化 NDCG (Normalized Discounted Cumulative Gain) 这种纯搜索指标,而忽略了检索到的内容是否真的能帮助语言模型 (LLM) 生成更好的答案。
因为:相关≠关键,相关≠有用,相关≠信息补充
NDCG (Normalized Discounted Cumulative Gain) 是一种常用的衡量排名列表质量的评价指标。它衡量的是模型返回的文档(或其他条目)列表与理想排名列表的接近程度。
-
G (Gain,增益): 指的是列表中每个文档的相关性得分。 Gain = r e l i \text{Gain}=rel_i Gain=reli相关性会被赋予一个数值等级(例如,0=不相关, 1=有点相关, 2=相关, 3=非常相关)。
-
CG (Cumulative Gain,累积增益): 是到某个排名位置 p p p 的累加。 C G p = ∑ i = 1 p r e l i CG_p = \sum_{i=1}^{p} rel_i CGp=∑i=1preli。CG 没有考虑文档在列表中的位置。
-
DCG (Discounted Cumulative Gain,折损累积增益): 为了解决 CG 不考虑位置的问题,DCG 引入了折损因子。思想: 排在越靠前的相关文档价值越高。因此,排在较低位置的文档的相关性得分会被一个对数因子折损。计算公式为:
D C G p = ∑ i = 1 p r e l i log 2 ( i + 1 ) DCG_p = \sum_{i=1}^{p} \frac{rel_i}{\log_2(i+1)} DCGp=i=1∑plog2(i+1)reli
-
N (Normalized,归一化): DCG 的值会随着查询的不同而变化(例如,某些查询可能有很多高度相关的文档,而另一些则很少)。为了使得不同查询之间的 DCG 值具有可比性,需要进行归一化。
-
IDCG (Ideal Discounted Cumulative Gain,理想折损累积增益): 对于当前查询,可能产生的最大 DCG 值。即所有相关文档按照其真实相关性从高到低排序后,再截取前 p p p 个计算得到的 DCG 值。
-
NDCG: 就是用实际的 DCG 值除以理想的 IDCG 值:
N D C G p = D C G p I D C G p NDCG_p = \frac{DCG_p}{IDCG_p} NDCGp=IDCGpDCGp
NDCG 的取值范围是 0 到 1,值越接近 1 表示排名质量越好。
-
微调整个 LLM 以联合推理和检索: 这种端到端的方法将搜索与生成过程紧密耦合,不仅使得模型难以适配那些 API 调用受限、无法获取内部权重或架构的冻结模型 (frozen models) 或专有模型 (proprietary models),而且训练成本高昂,需要大量数据。
- 大问题: 如何高效提升 RAG 系统在特定任务上的表现?
- 现有方案的局限: RL 优化搜索指标与下游脱节;端到端微调成本高、耦合紧。
- 关键思路:
- 解耦 (Decouple): 将搜索代理 (Searcher) 与生成器 (Generator) 彻底分开。
- 专注 (Focus): 仅通过强化学习训练搜索代理,使其学会如何为生成器找到最有用的信息。
- 冻结 (Freeze): 生成器 LLM 保持不变,可以是任意黑盒模型。这大大增强了系统的通用性和实用性。
- 奖励 (Reward): 引入一个新颖且直接与下游任务相关的奖励信号——“超越RAG的增益” (Gain Beyond RAG, GBR)。这个奖励衡量的是,相比于一个简单的、无学习的基线 RAG 系统,s3 的搜索代理多大程度上提升了最终生成答案的准确性。

2. 方法
s3 框架通过一个精心设计的流程,将搜索、选择与最终的生成分离开来,并通过 GBR 奖励指导搜索代理的学习。
2.1 结构与流程
s3 框架概览 (Figure 4):
给定一个问题 Q Q Q,s3 系统包含三个主要组件:
- 搜索代理 LLM (Policy) π s 3 \pi_{s3} πs3:一个可训练的 LLM,负责生成搜索查询、选择文档和决定何时停止搜索。
- 搜索引擎 (Search Engine) R \mathcal{R} R:一个标准的检索引擎 (如 BM25 或基于稠密向量的检索器)。
- 冻结的生成器 LLM (Frozen Generator) G \mathcal{G} G:一个不参与训练的 LLM,负责根据搜索代理提供的上下文生成最终答案。
循环流程 (Multi-Turn Search-Select Loop):
该循环从 t = 0 t=0 t=0 开始,按以下步骤迭代进行,直到搜索代理决定停止或达到最大轮次 T T T:
- 查询生成 (Query Generation): 在第 t t t 轮,搜索代理 π s 3 \pi_{s3} πs3 根据当前状态 (包含原始问题和历史搜索信息) 生成一个搜索查询 q t q_t qt。查询的格式通常是
...
。
- 搜索 (Search): 利用搜索引擎 R \mathcal{R} R,根据查询 q t q_t qt 检索到一组文档 D t = R ( q t ) D_t = \mathcal{R}(q_t) Dt=R(qt)。这些文档以
...
的形式呈现给搜索代理。
- 选择 (Select): 搜索代理从 D t D_t Dt 中选择一个它认为有用的文档子集 D s e l t ⊆ D t D_{sel}^t \subseteq D_t Dselt⊆Dt,这些选中的文档ID通常放在
...
标签内。
- 停止决策 (Stop decision): 搜索代理输出一个决策
[1/0]
,其中 1 表示搜索完成,0 表示需要继续下一轮搜索。
初始化 (Initialization): 为了确保 GBR 奖励有一个合理的比较基线,循环在 t = 0 t=0 t=0 时,使用原始问题 Q Q Q 作为初始查询 q 0 = Q q_0 = Q q0=Q,检索初始文档 D 0 = R ( Q ) D_0 = \mathcal{R}(Q) D0=R(Q),并从中选择一个子集 D s e l 0 D_{sel}^0 Dsel0。这模拟了朴素 RAG 的初始检索步骤。
最终上下文与答案生成:
当循环终止时,所有轮次中被选择的有用文档被汇总为最终的上下文 D s 3 = ⋃ t = 0 T D s e l t D_{s3} = \bigcup_{t=0}^{T} D_{sel}^t Ds3=⋃t=0TDselt。
然后,这个上下文 D s 3 D_{s3} Ds3 与原始问题 Q Q Q 一起被传递给冻结的生成器 G \mathcal{G} G,以生成最终答案 A ^ = G ( Q , D s 3 ) \hat{A} = \mathcal{G}(Q, D_{s3}) A^=G(Q,Ds3)。

2.2 奖励
奖励信号: 超越RAG的增益 (Gain Beyond RAG, GBR):
GBR 是 s3 训练搜索代理 π s 3 \pi_{s3} πs3 的核心。它直接量化了 s3 的搜索策略相比于一个固定的、朴素的 top-k RAG 基线所带来的下游生成性能提升。
G B R ( Q ) = A c c ( G ( Q , D s 3 ) , A ) − A c c ( G ( Q , D R A G ) , A ) GBR(Q) = Acc(\mathcal{G}(Q, D_{s3}), A) - Acc(\mathcal{G}(Q, D_{RAG}), A) GBR(Q)=Acc(G(Q,Ds3),A)−Acc(G(Q,DRAG),A)
-
D R A G = R ( Q ) D_{RAG} = \mathcal{R}(Q) DRAG=R(Q): 朴素 RAG 基线 (这里 D R A G = D 0 D_{RAG}=D_0 DRAG=D0),即直接使用原始问题 Q Q Q 通过搜索引擎 R \mathcal{R} R 一次性检索得到的 top-k 文档集合。
-
A c c ( ⋅ , ⋅ ) Acc(\cdot, \cdot) Acc(⋅,⋅): 一个任务相关的准确率评估函数。在论文中,它被实例化为 “生成准确率 (Generation Accuracy, GenAcc)” 。评估 G \mathcal{G} G 生成的答案与标准答案 A A A 的一致性。
2.3 训练
训练优化: 为了提高训练效率,在计算 GBR 奖励时,预先计算基线准确率 A c c ( G ( Q , D R A G ) , A ) Acc(\mathcal{G}(Q, D_{RAG}), A) Acc(G(Q,DRAG),A),并且仅在那些基线准确率为 0 的样本上进行训练。这意味着 s3 专注于学习如何解决那些朴素 RAG 难以处理的“硬”问题。
搜索策略优化 (Search Policy Optimization):
s3 不使用针对搜索任务的SFT ,直接开始强化学习优化搜索代理 π s 3 \pi_{s3} πs3 的策略。论文采用了近端策略优化 (Proximal Policy Optimization, PPO) 算法,因其具有较好的经验稳定性和样本效率。
PPO 的目标函数可以表示为:
L P P O ( θ ) = E ^ t [ min ( r t ( θ ) A ^ t , clip ( r t ( θ ) , 1 − ϵ , 1 + ϵ ) A ^ t ) ] L^{PPO}(\theta) = \hat{\mathbb{E}}_t \left[ \min(r_t(\theta)\hat{A}_t, \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon)\hat{A}_t) \right] LPPO(θ)=E^t[min(rt(θ)A^t,clip(rt(θ),1−ϵ,1+ϵ)A^t)]
其中:
- θ \theta θ: 搜索代理 LLM π s 3 \pi_{s3} πs3 的参数。
- E ^ t \hat{\mathbb{E}}_t E^t: 表示对在一个 rollout (即一次完整的搜索轨迹) 中所有时间步 t t t 上收集的经验样本求期望。
- r t ( θ ) = π θ ( a t ∣ s t ) π θ o l d ( a t ∣ s t ) r_t(\theta) = \frac{\pi_{\theta}(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)} rt(θ)=πθold(at∣st)πθ(at∣st): 概率比率 (probability ratio)。 π θ ( a t ∣ s t ) \pi_{\theta}(a_t|s_t) πθ(at∣st) 是当前策略在状态 s t s_t st 下采取动作 a t a_t at 的概率, π θ o l d ( a t ∣ s t ) \pi_{\theta_{old}}(a_t|s_t) πθold(at∣st) 是收集该样本时旧策略的概率。
- A ^ t \hat{A}_t A^t: 在时间步 t t t 的优势函数 (Advantage function) 的估计值,它衡量了在状态 s t s_t st 下采取动作 a t a_t at 相对于平均动作的好坏程度。在 s3 中,一个 rollout 的总奖励是该轨迹最终的 GBR 值。
- ϵ \epsilon ϵ: 裁剪参数 (clipping parameter),是一个小常数 (例如 0.2),用于限制 r t ( θ ) r_t(\theta) rt(θ) 的范围在 [ 1 − ϵ , 1 + ϵ ] [1-\epsilon, 1+\epsilon] [1−ϵ,1+ϵ] 内。 clip ( r t ( θ ) , 1 − ϵ , 1 + ϵ ) \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon) clip(rt(θ),1−ϵ,1+ϵ) 操作确保了策略更新不会过于激进,从而提高了训练的稳定性。
通过最大化这个目标函数,搜索代理 π s 3 \pi_{s3} πs3 学习如何执行一系列动作 (生成查询、选择文档、决定停止) 来最大化最终的 GBR 奖励。
3. 优势
- 极高的数据效率 (Extreme Data Efficiency):
- s3 仅需 2.4k 个训练样本即可在多个基准测试中超越那些使用远超其数据量 (例如,Search-R1 使用 170k 样本,DeepRetrieval 使用 70k 样本) 进行训练的基线模型。通过 GBR 奖励专注于难例以及解耦设计实现的。
- 彻底的模块化与兼容性 (Thorough Modularity and Compatibility):
- 搜索器与生成器的完全解耦是 s3 的核心特征。这意味着:
- 搜索代理可以独立优化,而无需改动生成器。
- 生成器可以是任意冻结的 LLM,包括那些不开放模型权重、仅提供 API 访问的商业模型或专有模型。这极大地扩展了 s3 的适用范围。
- 可以灵活替换和升级搜索器或生成器组件。
- 直接优化下游任务效用 (Direct Optimization of Downstream Utility):
- 通过 GBR 奖励机制,s3 的搜索代理的学习目标直接与最终生成答案的质量挂钩 (通过 Generation Accuracy 衡量)。这避免了传统 RL4RAG 方法中优化中间搜索指标 (如召回率、NDCG) 可能与最终任务性能不完全一致的问题。
- 避免生成器过拟合特定答案形式 (Avoids Generator Overfitting to Specific Answer Forms):
- 由于生成器 LLM 在 s3 的训练过程中始终保持冻结状态,强化学习的优化压力完全施加在搜索代理上。这避免了在端到端联合训练中,生成器可能过拟合于从特定检索文档中提取和复述答案的特定表面形式,从而提高了生成答案的鲁棒性和泛化性。
- 轻量级搜索代理 (Lightweight Search Agent):
- s3 可以使用相对较小的 LLM (如论文中的 7B 模型) 作为搜索代理,而将更强大的 (可能也是更大的或专有的) LLM 用作冻结的生成器。这在计算资源和成本方面具有优势。
4. 实验
实验设置
- 数据集:
- 通用问答 (General QA): 使用了六个广泛应用的QA数据集,包括 NQ, TriviaQA, PopQA, HotpotQA, 2WikiMultihopQA, 和 Musique。s3 的训练数据主要来源于 NQ 和 HotpotQA 的一个子集 (约 2.4k 样本)。
- 医疗问答 (Medical QA): 使用了 MIRAGE 基准测试套件,包含五个医疗领域的 QA 数据集。值得注意的是,s3 没有在任何医疗数据上进行训练,其在该领域的表现完全是零样本迁移的结果。
- 生成器 LLM: 实验中测试了多种冻结的生成器 LLM,包括 Qwen2.5-7B-Instruct, Qwen2.5-14B-Instruct, 以及 Claude-3-Haiku,以验证 s3 的模型无关性。
- 搜索器 LLM: s3 的搜索代理基于 Qwen2.5-7B-Instruct 进行训练。
- 基线模型:
- 端到端微调模型: SFT (Supervised Fine-Tuning), R1 (复现 DeepSeek-R1-Zero 但使用小模型), Search-R1 (联合检索与生成)。
- 静态检索+冻结生成器: RAG-BM25, RAG-E5 (使用 E5 嵌入)。
- 主动检索+冻结生成器: IRCoT (零样本链式思考与检索), Search-01 (推理时检索控制器)。
- RL 优化检索指标: DeepRetrieval-BM25 (优化召回率和 NDCG)。
实验结论

- 通用领域 RAG 性能卓越:
- 在所有测试的生成器 (Qwen2.5-7B, Qwen2.5-14B, Claude-3-Haiku) 下,s3 (使用7B搜索器) 在六个通用 QA 数据集上的平均 GenAcc 均取得了最高分。关键是 s3 仅使用了 2.4k 训练样本。
- 医疗领域的零样本迁移能力:
- 尽管 s3 仅在通用 QA 数据上训练,但在 MIRAGE 医疗 QA 基准测试中,当使用 Wikipedia+PubMed+Textbook 作为知识库,并以 Claude-3-Haiku 作为生成器时,s3 取得了 76.6% 的平均准确率 (judge_check),在所有对比的检索增强方法中表现最佳。这表明 s3 学到的搜索策略具有良好的领域泛化性。
- 数据和训练效率:
- 训练 s3 达到收敛大约需要 20 个 PPO 步骤 (对应 2.4k 训练样本),总耗时约 114 分钟。相比之下,Search-R1 需要约 2100 个 PPO 步骤 (对应 170k 样本),总耗时约 3780 分钟。即使考虑到 s3 在每个 PPO 步骤中因为需要调用冻结 LLM 计算 GBR 奖励而耗时更长 (5.7m vs 1.8m per step),其总训练时间也大幅缩短了约 33 倍。
- GBR 奖励的有效性:
- 论文在 Takeaway #1 中强调,“仅优化搜索器比端到端优化 RAG 更好”。s3 持续优于 Search-R1 (Ret) (即 Search-R1 模型仅用于检索,然后送入固定的生成器),这表明 s3 提升的主要是搜索质量,而非对生成器的某种“调校”。
- GBR 奖励直接与下游任务性能挂钩。使用 GenAcc 作为奖励信号,在性能和计算成本之间取得了很好的平衡。虽然 LLMJudge (完全依赖 LLM 判断奖励) 可能得到略高的最终分数,但其计算成本过高不适合大规模训练。
- 消融实验:
- “从搜索开始 (Begin with Search)”,即用原始问题初始化第一轮搜索,对于性能至关重要。移除该步骤会导致所有数据集性能显著下降。
- “文档选择 (Document Selection)” 步骤(即 π s 3 \pi_{s3} πs3 从检索结果中选择子集 D s e l t D_{sel}^t Dselt),虽然移除它有时会在某些数据集 (如 NQ, 2Wiki) 上略微提升性能 (可能是因为避免了过于激进的剪枝),但完整的 s3 系统通过选择文档,显著减少了传递给生成器的 token 数量 (平均减少 2.6 倍至 4.2 倍),从而大幅提升了整体的推理效率和降低了成本。