强化学习让AI自主编写检索程序,4B模型超越8B基线

RPL让模型用强化学习编写可编程检索程序,小模型多跳任务超越大模型。
本文介绍 Retrieval Program Learning(RPL)框架,将检索从固定流水线或原子工具调用转变为可编程原语的组合。策略模型可以编写包含循环、条件分支和局部变量的检索程序,并通过强化学习优化,从而实现检索探索范围与上下文占用的解耦。针对强化学习稀疏反馈导致的探索难题,作者提出程序变异机制:采样次优程序、在语法约束内做局部变异、执行验证后蒸馏回策略模型,把盲目探索变为有引导的局部搜索。实验显示,4B 模型经 RPL 训练后在开放域问答上超越所有 8B 基线,多跳任务增益显著;语料库级推理中答案 F1 与文档覆盖率 F1 均最高,同时降低上下文消耗与检索轮次。文章最后讨论了可编程检索对 RAG 架构演进的启示与工程挑战。
检索增强生成(RAG)已成为知识密集型任务的主流方案,但大多数系统仍将检索视为固定的流水线或一组原子工具——模型只能“调用”检索,却无法“设计”检索。一篇新论文提出的 Retrieval Program Learning(RPL)框架改变了这一局面:它让策略模型将检索原语组合成带局部状态和控制流的可执行程序,并通过强化学习优化这些程序。更关键的是,作者设计了一种“程序变异”机制来缓解强化学习中的稀疏反馈问题,使小模型也能学到复杂的多步搜索策略。

从“调用工具”到“编写程序”:可编程检索的核心理念
传统 RAG 系统通常暴露一组固定的检索工具(如关键词搜索、向量检索、文档读取),由模型按预设顺序调用。这种设计将检索广度与上下文消耗绑定在一起:想搜得广,就得把大量结果塞进上下文;想省上下文,就只能窄范围检索。
RPL 的核心突破在于将检索抽象为可编程原语。策略模型可以编写包含循环、条件分支和局部变量的检索程序,先广泛检索,再对中间结果做处理(如过滤、聚合、重排),最后只把精选内容构造进模型上下文。这样一来,检索的“探索范围”和“上下文占用”解耦了——模型可以大胆搜索,却不必为每次搜索付出上下文代价。
论文指出,这种灵活性带来了一个棘手的探索问题:一个有用的检索程序往往需要多个协调决策同时正确,而强化学习通常只提供稀疏的最终反馈信号。直接在线策略采样很难撞上那些结构正确的程序。
检索原语(retrieval primitive) 是 RPL 框架的最小可组合单元,类似于编程语言中的基础函数。每个原语封装了一类确定的检索行为,例如关键词查询、向量近邻搜索、按文档 ID 读取、结果过滤或重排等。与传统的“工具调用”不同,原语本身不直接返回给语言模型,而是作为程序中的指令由策略模型编排执行,中间结果可以存储在局部变量中供后续步骤使用。这种设计使检索行为具备了组合性、可复用性和可验证性——程序是否合法、执行是否成功都可以被自动检查,从而为后续的变异与强化学习提供了结构化的搜索空间。
程序变异:用语法约束和可执行验证破解探索难题
为解决稀疏反馈下的探索困境,作者提出了 program mutation(程序变异)机制。其流程可以概括为三步:
- 采样次优程序:在强化学习过程中收集表现不佳但结构上有潜力的程序。
- 语法约束变异:在预定义的语法规则内对程序做局部修改(如替换一个原语、调整循环边界、增加一个过滤步骤),保证变异后的程序仍是合法可执行的。
- 执行验证与蒸馏:实际运行变异程序,验证其执行结果,将有效的变异转化为训练轨迹,再蒸馏回策略模型。
这一机制的本质是把“盲目探索”变成了“有引导的局部搜索”。语法约束确保了搜索空间不会爆炸,执行验证则过滤掉了无效变异,剩下的高质量轨迹成为策略改进的额外信号。相比纯在线策略采样,程序变异能更高效地发现有用的程序结构。
稀疏反馈(sparse feedback) 是强化学习中的经典难题:智能体在长序列决策中只在最终获得一个奖励信号,中间步骤没有即时反馈,导致信用分配困难、探索效率低下。在 RPL 的语境下,一个检索程序可能包含十几个原语组合与循环分支,只有最终答案正确才能获得正奖励,而随机采样几乎不可能命中结构正确的程序。程序变异机制正是针对这一痛点:通过在合法语法空间内做局部扰动,把“从零采样”转化为“围绕有潜力程序的定向搜索”,并用执行验证提供中间过滤信号,从而在稀疏奖励条件下仍能获得可用的训练轨迹。这一思路与进化算法中的变异-选择范式有相似之处,但约束在程序语法之内以保证可执行性。
实验结果:多跳任务大幅提升,小模型逆袭大模型
作者在开放域问答和语料库级推理两类任务上评估了 RPL,并与多种检索和推理基线做了对比。
在开放域问答上,RPL 在不同模型规模和域内/域外基准上均稳定提升性能,多跳任务上的增益尤其显著。最引人注目的结果是:一个 4B 模型经 RPL 训练后,性能超过了所有 8B 模型基线。这说明可编程检索带来的策略提升,足以弥补模型参数量的差距。
在语料库级推理任务上,RPL 在两种模型规模下都取得了最高的答案 F1 和文档覆盖率 F1,同时大幅降低了上下文消耗和检索轮次。换句话说,它既答得更准,又搜得更省。
论文总结认为,可编程搜索扩展了智能体能够学到的检索策略空间,而程序变异则为探索直接在线策略采样之外的 useful 程序结构提供了有效手段。
多跳问答(multi-hop QA) 指需要跨多个文档或段落进行链式推理才能回答的问题,例如“某位作家的出生地所在城市的人口是多少”。这类任务要求系统先定位实体、再追踪关联文档、最后聚合信息,天然需要多步检索与中间结果处理。传统 RAG 的固定流水线往往在第二跳之后丢失上下文或引入噪声,而 RPL 的可编程检索允许模型显式编写循环与条件分支来逐跳推进,因此在这一类任务上增益尤为显著。语料库级推理(corpus-level reasoning) 则进一步要求模型在整库范围内规划检索路径并覆盖足够多的相关文档,文档覆盖率 F1 正是衡量检索是否“搜全”的指标,与答案 F1 共同反映“搜得准且搜得全”的能力。
对RAG系统设计的启示
RPL 的价值不止于一个学术基准上的数字提升。它指向了一种 RAG 架构的演进方向:检索不再是外挂的固定模块,而是模型可以主动编排的计算过程。对于实际系统而言,这意味着更少的上下文浪费、更灵活的多步推理能力,以及小模型在成本敏感场景下替代大模型的可能性。
当然,可编程检索也带来了新的工程挑战——程序语法的设计、执行沙箱的安全性、变异过程的计算开销,都是落地时需要权衡的问题。但至少从研究结果看,让模型“学会编程检索”比让它“学会调用检索”走得更远。
相关推荐

uGAP:统一100+非洲地理数据集的AI平台
uGAP是开普敦大学团队开发的非洲地理空间AI平台,统一120余个非洲数据集并提供Python SDK,支持数据发现、处理与模型训练一站式工作流,已用于气旋洪水制图等实战场景。

Cursor能控制你的电脑了:AI代理可驱动桌面应用测试
Cursor 新增桌面控制能力,AI 代理可驱动 iOS 模拟器等桌面应用测试自己构建的功能。本文分析这一更新对开发工作流的影响、技术实现可能路径及可靠性考量。

Vibecoding自研推理引擎:理想丰满,现实骨感
Reddit开发者分享Vibecoding自研推理引擎的真实经历:用WebGL2和GLSL在浏览器跑GGUF Q4模型,却陷入tokenizer调试地狱。本文分析浏览器端LLM推理的工程难点,以及为何直接clone llama.cpp是更理性的选择。