这篇文章的点没有啥细节算法设计,整体来说比较好理解。
1. Search-R1整体框架
1.1 研究问题与核心思想
Search-R1(2025,arXiv:2503.09516)研究如何让大语言模型通过强化学习自主学习"何时搜索、搜索什么、是否继续搜索以及如何利用检索结果"。传统RAG通常采用"问题→检索→回答"的单轮模式,而Search-R1将搜索引擎直接纳入RL环境,使模型能够执行"推理→搜索→读取→继续推理→再次搜索→回答"的多轮交互。
核心转变:传统RAG的检索策略通常由外部系统预先确定;Search-R1则将检索行为变成LLM自身的策略决策,并使用最终答案的正确性作为RL信号。
| 对比维度 | 传统RAG | Search-R1 |
|---|---|---|
| 检索时机 | 通常在回答前固定检索 | 模型自主决定何时检索 |
| 检索次数 | 通常单轮 | 支持多轮搜索 |
| Query来源 | Retriever或固定模板 | LLM自主生成 |
| 搜索结果 | 外部上下文 | RL环境返回的Observation |
| Reward | 通常无RL | 最终答案Outcome Reward |
| 学习目标 | 生成有依据的答案 | 学习推理与搜索协同策略 |
核心结构:问题→LLM生成thought/query→Search Engine返回docs→LLM继续推理→必要时再次query→最终answer→Outcome Reward→RL更新。
1.2 RL环境与Agent角色
Search-R1将LLM视为Agent,将搜索引擎视为Environment。LLM负责产生thought、query和answer等动作;搜索引擎接收query后返回documents,documents进入后续上下文并影响模型继续生成。
| 对象 | Search-R1中的角色 | 是否直接参与Policy Gradient |
|---|---|---|
| Thought | Agent Action | 是 |
| Query | Agent Action | 是 |
| Answer | Agent Action | 是 |
| Retrieved Documents | Environment Observation | 否 |
| Outcome Reward | 环境反馈 | 用于更新Agent |
因此最核心的角色划分是:thought/query/answer属于Agent决策,docs属于Environment返回结果。
2. 多轮搜索与Trajectory
2.1 Search交互机制
模型生成<search>query</search>后,系统解析query并调用搜索引擎;搜索结果被包装为<information>docs</information>重新插入当前上下文,模型随后继续生成thought、query或最终answer。若再次生成search标记,则进入下一轮检索。
搜索交互:LLM生成query→Search Engine执行query→返回documents→documents加入上下文→LLM继续生成→决定继续搜索或回答。
| 特殊标记 | 功能 |
|---|---|
<think>...</think> |
表示模型推理过程 |
<search>...</search> |
表示模型发起搜索请求 |
<information>...</information> |
表示搜索引擎返回的信息 |
<answer>...</answer> |
表示最终答案 |
2.2 Trajectory形式化
传统LLM RL中的trajectory主要由模型生成token组成,而Search-R1的trajectory同时包含Agent生成内容和Environment返回内容,因此可以表示为:
τ=(thought₁,query₁,docs₁,thought₂,query₂,docs₂,...,thoughtₖ,queryₖ,docsₖ,answer)
更一般地写成:
τ=(t₁,q₁,d₁,t₂,q₂,d₂,...,tₖ,qₖ,dₖ,a)
其中tᵢ表示第i轮thought,qᵢ表示第i轮query,dᵢ表示搜索结果,a表示最终answer。
对于第i轮搜索:qᵢ∼πθ(·|sᵢ),dᵢ=R(qᵢ)。其中πθ是LLM策略,R是搜索环境。
因此Trajectory并不是单纯的文本序列,而是"Agent Action + Environment Observation"的交错序列。
2.3 多轮搜索的策略学习
第一个query只依赖问题和已有推理状态:
q₁∼πθ(·|x)
搜索结果d₁加入上下文后,第二个query可以依赖之前的信息:
q₂∼πθ(·|x,t₁,q₁,d₁)
进一步:
q₃∼πθ(·|x,t₁,q₁,d₁,t₂,q₂,d₂)
因此后续搜索具有状态依赖性:前一轮检索结果会改变当前状态,当前状态再决定下一轮搜索。
多轮搜索:当前问题→thought→query₁→docs₁→重新理解信息→query₂→docs₂→继续推理→answer。
其核心不是简单增加搜索次数,而是学习自适应检索策略:
| 学习能力 | 含义 |
|---|---|
| Search Triggering | 判断当前知识是否不足,需要搜索 |
| Query Generation | 根据当前推理状态生成搜索query |
| Search Iteration | 判断是否需要继续搜索 |
| Information Utilization | 从检索结果中提取并利用有效信息 |
| Search Termination | 判断信息是否足够并停止搜索 |
3. Retrieved-Token Masking
3.1 为什么需要Mask
Search-R1的trajectory中既存在LLM生成token,也存在搜索引擎返回token。如果直接按照普通LLM RL的方法对所有token计算Policy Gradient,就会错误地把retrieved token当作Agent Action。
关键区别:模型决定生成query,但模型没有决定搜索引擎返回的具体文字。因此docs是Observation而不是Action。
例如:
Question→thought→query→docs→thought→answer
其中thought、query、answer由Agent产生,而docs由Environment产生。
3.2 Agent Token与Retrieved Token
定义token mask:
Iₜ=1,当yₜ由LLM生成;Iₜ=0,当yₜ来自检索结果。
| Token区域 | 来源 | Mask Iₜ | 是否参与Policy Loss |
|---|---|---|---|
| Thought | LLM | 1 | 是 |
| Search标记 | LLM | 1 | 是 |
| Query | LLM | 1 | 是 |
| Information/Docs | Search Engine | 0 | 否 |
| 后续Thought | LLM | 1 | 是 |
| Answer | LLM | 1 | 是 |
因此可以统一定义:Iₜ=1表示Agent Token,Iₜ=0表示Retrieved Token。
3.3 只对Agent Token求梯度
普通Policy Gradient可以写成:
∇θJ=EτΣₜ Aₜ∇θlogπθ(yₜ\|sₜ)
Search-R1加入retrieved-token mask后:
∇θJ=EτΣₜ IₜAₜ∇θlogπθ(yₜ\|sₜ)
当yₜ为Agent Token时:
Iₜ=1
因此:
IₜAₜ∇θlogπθ(yₜ|sₜ)=Aₜ∇θlogπθ(yₜ|sₜ)
当yₜ为Retrieved Token时:
Iₜ=0
因此:
IₜAₜ∇θlogπθ(yₜ|sₜ)=0
最终得到:
∇θJ=EτΣₜ:yₜ∈Agent Aₜ∇θlogπθ(yₜ\|sₜ)
这就是"只对Agent token求梯度"的核心公式。
3.4 Mask后的Policy Loss
采用Loss最小化形式,可以写成:
L(θ)=−EτΣₜ IₜAₜlogπθ(yₜ\|sₜ)
等价地:
L(θ)=−EτΣₜ:yₜ∈Agent Aₜlogπθ(yₜ\|sₜ)
因此:
Retrieved Token→Iₜ=0→对应Loss=0→对应Policy Gradient=0。
这里的"mask"并不表示删除检索文本。docs仍然完整进入模型上下文,并影响后续hidden states以及未来thought/query/answer,只是不把docs自身作为Policy Action进行优化。
3.5 PPO中的Mask
PPO的重要性采样比率为:
rₜ(θ)=πθ(yₜ|sₜ)/πold(yₜ|sₜ)
普通PPO目标为:
Lᴾᴾᴼ=Eₜmin(rₜAₜ,clip(rₜ,1−ε,1+ε)Aₜ)
加入Search-R1的token mask后:
LSearch-R1ᴾᴾᴼ=EₜIₜmin(rₜAₜ,clip(rₜ,1−ε,1+ε)Aₜ)
所以retrieved token对应Iₜ=0,其Policy Loss直接为0。
核心逻辑:docs可以影响未来action,但docs自身不属于被优化的action。
4. Outcome Reward与RL优化
4.1 Outcome Reward定义
Search-R1采用最终答案正确性作为主要RL奖励,而不是为每一步搜索分别设计复杂的process reward。
对于预测答案a_pred和标准答案a_gold:
R(τ)=EM(a_pred,a_gold)
其中EM表示Exact Match:
EM(a_pred,a_gold)=1,当a_pred=a_gold;否则EM(a_pred,a_gold)=0。
| 结果 | Outcome Reward |
|---|---|
| 最终答案正确 | 1 |
| 最终答案错误 | 0 |
因此奖励只关注最终任务是否完成,而不直接规定"正确的query应该怎样写"。
4.2 Outcome Reward如何训练搜索策略
完整trajectory可以写成:
τ=(t₁,q₁,d₁,t₂,q₂,d₂,...,tₖ,qₖ,dₖ,a)
假设最终:
R(τ)=1
则trajectory中的Agent actions共同构成成功轨迹:
Pθ(τ)∝∏ₜ∈Agent πθ(yₜ|sₜ)
因此:
logPθ(τ)=Σₜ∈Agent logπθ(yₜ|sₜ)
于是最基本的Policy Gradient可以写成:
∇θJ=EτR(τ)Σₜ∈Agent∇θlogπθ(yₜ\|sₜ)
加入advantage后:
∇θJ=EτΣₜ∈Agent Aₜ∇θlogπθ(yₜ\|sₜ)
所以最终答案的正确性能够反向影响此前的thought、query以及其他Agent-generated tokens。
4.3 为什么Outcome Reward能够学习"何时搜索"
假设两个模型面对相同问题:
| Trajectory | 搜索行为 | 最终答案 | Reward |
|---|---|---|---|
| τ₁ | 不搜索 | 错误 | 0 |
| τ₂ | 搜索一次 | 正确 | 1 |
| τ₃ | 搜索两次 | 正确 | 1 |
经过大量rollout后,RL会比较不同trajectory的最终结果,从而逐渐改变搜索相关action的概率。
因此模型不是被显式告知"这个问题必须搜索",而是通过最终结果逐渐学习:
问题→判断信息不足→生成query→获得docs→利用docs→得到正确答案。
4.4 稀疏Reward与信用分配
Outcome Reward的优点是目标清晰、规则简单、不需要训练额外Reward Model;缺点是reward稀疏。
例如:
t₁→q₁→d₁→t₂→q₂→d₂→answer→R=0
即使q₁本身是合理的,只要后续推理或搜索失败,最终仍可能得到0 reward。
因此Search-R1依靠大量rollout以及PPO/GRPO的相对优势估计进行credit assignment,而不是人为定义大量中间奖励。
5. GRPO与完整优化目标
5.1 GRPO中的相对优势
对于同一个问题x,采样G条trajectory:
τ₁,τ₂,...,τG
得到对应reward:
R₁,R₂,...,RG
GRPO根据group内reward计算相对优势,简化表示为:
Aᵢ=(Rᵢ−μR)/σR
其中:
μR=(1/G)ΣᵢRᵢ
σR表示group reward标准差。
因此成功trajectory相对于group平均水平具有正优势,失败trajectory具有负优势。
5.2 GRPO中的Retrieved-Token Masking
GRPO同样需要区分Agent Token和Retrieved Token,因此:
LGRPO∝ΣᵢΣₜ Iᵢₜmin(rᵢₜAᵢ,clip(rᵢₜ,1−ε,1+ε)Aᵢ)
其中:
Iᵢₜ=1表示第i条trajectory的第t个token由Agent生成;Iᵢₜ=0表示该token属于retrieved documents。
因此无论采用PPO还是GRPO,核心原则都不变:只有LLM真正选择生成的token参与Policy Optimization。
5.3 KL约束
Search-R1还可以使用reference policy进行KL约束,使训练后的policy不要过度偏离初始模型:
J(θ)=EτR(τ)−βDKL(πθ||πref)
其中β控制KL正则强度。
在Search-R1中,检索token不属于Agent action,因此与Policy相关的token-level优化仍需要遵循retrieved-token masking原则。
6. Search-R1核心机制总结
6.1 三个重点的统一关系
| 核心机制 | 解决的问题 | 数学对象 |
|---|---|---|
| 多轮搜索 | LLM如何与Search Environment交互 | τ=(thought,query,docs,...,answer) |
| Retrieved-token Masking | 谁是Agent、谁是Environment | Iₜ∈{0,1} |
| Outcome Reward | 如何评价完整搜索推理过程 | R(τ)=EM(answer_pred,answer_gold) |
三者统一起来就是:
Trajectory:τ=(thought,query,docs,...,answer)
Action/Observation划分:thought/query/answer=Agent Action;docs=Environment Observation。
Policy Gradient:∇θJ=EτΣₜ IₜAₜ∇θlogπθ(yₜ\|sₜ)
Outcome Reward:R(τ)=EM(answer_pred,answer_gold)
最终形成:
多轮搜索生成trajectory→区分Agent token与Retrieved token→只优化Agent token→最终答案产生Outcome Reward→Reward反向训练搜索与推理策略。
6.2 最值得记忆的四个公式
Trajectory:
τ=(t₁,q₁,d₁,t₂,q₂,d₂,...,tₖ,qₖ,dₖ,a)
Retrieved-token mask:
Iₜ=1_{yₜ由Agent生成}
只对Agent token求梯度:
∇θJ=EτΣₜ IₜAₜ∇θlogπθ(yₜ\|sₜ)
Outcome Reward:
R(τ)=EM(a_pred,a_gold)
6.3 Search-R1的本质
Search-R1可以理解为将普通Reasoning RL扩展为:
Reasoning RL + Interactive Search Environment。
其中最关键的思想不是"让LLM能够调用搜索引擎",而是把"搜索"变成RL中的Agent Action,同时把搜索结果明确建模为Environment Observation;最终通过答案正确性这一Outcome Reward,让模型自己学习搜索时机、query构造、多轮检索和信息利用策略。
最核心的一句话:Search-R1让LLM在"思考→搜索→阅读→再思考→再搜索→回答"的交互轨迹上进行RL,但只对LLM自己生成的Agent token进行策略优化,检索文本仅作为环境Observation参与后续推理,最终由答案正确性提供统一的Outcome Reward。