R1-Searcher
R1-Searcher 是一个旨在提升大语言模型(LLM)搜索能力的开源项目。它核心解决了传统模型在应对复杂推理任务时,因缺乏实时外部信息支持而导致知识滞后或产生“幻觉”的痛点。通过引入强化学习技术,R1-Searcher 能够激励模型在推理过程中主动、智能地调用网络搜索工具,从而获取最新、最准确的信息来辅助决策。
该项目特别适合人工智能研究人员、大模型开发者以及对检索增强生成(RAG)技术感兴趣的技术团队使用。其独特的技术亮点在于采用了“两阶段结果监督强化学习”策略:第一阶段引导模型学会“何时”以及“如何”发起搜索请求,第二阶段则专注于优化模型如何利用搜索结果进行高效推理。这种分步训练机制不仅降低了训练门槛,还显著提升了模型在数学推理、科学问答等高难度任务中的表现。作为由中国人民大学团队推出的成果,R1-Searcher 为构建具备自主探索能力的下一代智能体提供了简洁而高效的解决方案,相关代码与模型权重均已开源,便于社区复现与二次开发。
使用场景
某金融科技公司的高级分析师正在撰写一份关于"2025 年全球新兴半导体供应链波动”的深度研报,需要整合最新的地缘政治动态、实时产能数据及专家观点。
没有 R1-Searcher 时
- 信息滞后严重:模型仅依赖训练截止前的静态知识库,无法获取上周刚发布的各国出口管制新政,导致分析基础过时。
- 幻觉风险高企:面对缺失的实时数据,模型倾向于“一本正经地胡说八道”,编造不存在的产能数字或虚构专家言论。
- 推理链条断裂:模型缺乏主动检索意识,无法在遇到知识盲区时自动暂停并调用搜索引擎,导致逻辑推导中途卡壳或强行结论。
- 人工核查成本巨大:分析师必须手动逐条验证模型生成的每一个数据点,耗费数小时进行二次搜索和事实校对,效率极低。
使用 R1-Searcher 后
- 实时动态感知:R1-Searcher 通过强化学习学会了在推理过程中主动触发网络搜索,即时抓取最新的政策文件和行业新闻,确保信息零时差。
- 证据驱动生成:模型仅在获取确凿的外部搜索结果后才进行作答,并自动引用来源,显著消除了关于产能数据和政策细节的幻觉。
- 自适应检索策略:遇到复杂问题时,R1-Searcher 能智能判断何时需要外部知识,自主规划多轮搜索路径,将碎片化信息串联成完整的逻辑链条。
- 端到端自动化:从问题拆解、信息检索到报告生成全流程自动完成,分析师只需关注最终洞察,验证时间从数小时缩短至几分钟。
R1-Searcher 的核心价值在于通过强化学习赋予大模型“主动求知”的本能,将其从静态的知识复读机转变为能实时联网、自我验证的智能研究助手。
运行环境要求
- Linux
必需 NVIDIA GPU (因依赖 flash-attn 和 vLLM),具体型号和显存未说明,建议根据模型大小 (7B/8B) 配置
未说明

快速开始
R1-searcher:通过强化学习激励大语言模型的搜索能力
如果您喜欢我们的项目,请在 GitHub 上为我们点亮一颗星 ⭐,以获取最新更新。
✨ 新闻
- [2025年5月22日] ⚡️⚡️ R1-Searcher++:我们提出了 R1-Searcher++,这是一个用于训练大语言模型自适应地使用内部和外部知识的框架。它采用两阶段策略:初始的 SFT 冷启动阶段用于基础格式的学习,随后是用于动态知识获取的强化学习阶段。在强化学习阶段,我们引入了一种奖励机制来鼓励内部知识的利用,并整合了一个记忆机制,以持续吸收检索到的信息,从而丰富模型的内部知识。 论文链接:arxiv.org/abs/2505.17005
- [2025年5月22日] ⚡️⚡️ SimpleDeepSearcher-paper:我们发布了 SimpleDeepSearcher 的论文,该论文还探讨了使用蒸馏模型作为骨干网络进行持续强化学习训练的影响,以及在训练过程中加入长链数学推理数据的效果。此外,论文还包括全面的实验。论文链接:arxiv.org/abs/2505.16834
- [2025年4月16日] ⚡️⚡️ SimpleDeepSearcher:我们提出了 SimpleDeepSearcher,这是一个通过知识蒸馏和自蒸馏来激发复杂推理过程中自主检索能力的框架。其目标是在仅使用少量数据的情况下实现高效且有效的训练。
- [2025年3月8日] ⚡️⚡️ R1-Searcher:我们提出了 R1-searcher,采用一种两阶段结果监督强化学习方法,使模型能够在推理过程中学会调用网络搜索功能:首先让模型学习如何调用网络搜索,然后再教它如何有效地使用搜索引擎。这种方法无需任何指令微调来进行冷启动,同时兼容现有的基础型或对话型大语言模型。
💡 概述
大型推理模型(LRMs),如 OpnAI-o1 和 Deepseek-R1,已经证明了强化学习在提升模型长步骤推理能力方面的显著效果,从而极大地提高了它们的推理性能。尽管具有这些优势,但在面对知识密集型问题时,尤其是多跳问题和时间敏感性问题,这些模型可能会缺乏必要的知识。因此,让大语言模型在推理过程中能够调用网络搜索并获取外部信息显得尤为重要。
我们提出了 R1-searcher,采用一种两阶段结果监督强化学习方法,使模型能够在推理过程中学会调用网络搜索功能:首先让模型学习如何调用网络搜索,然后再教它如何有效地使用搜索引擎。这种方法无需任何指令微调来进行冷启动,同时兼容现有的基础型或对话型大语言模型。我们开源了训练代码、推理代码、模型检查点以及详细的技术报告。
- Arxiv:arxiv.org/abs/2503.05592
- 模型:
- Qwen-2.5-7B-Base-RAG-RL:https://huggingface.co/XXsongLALA/Qwen-2.5-7B-base-RAG-RL
- Llama-3.1-8B-Instruct-RAG-RL:https://huggingface.co/XXsongLALA/Llama-3.1-8B-instruct-RAG-RL
- 训练数据:https://huggingface.co/datasets/XXsongLALA/RAG-RL-Hotpotqa-with-2wiki

✨ 关键见解
- 仅依靠结果监督的强化学习,我们就可以仅使用查询-答案对来激活模型的内在搜索能力,无论面对的是基础型还是对话型大语言模型。
- 近期的强化学习算法,如 GRPO 和 Reinforce++,都能够有效地激活大语言模型的内部搜索能力。
- 在训练过程中不需要复杂的提示工程或过程监督。
- 基础大语言模型的能力在很大程度上决定了模型是否可以直接从零开始进行训练。
- 强化学习后的 LongCoT 推理是一种比现有基于树搜索的方法(如蒙特卡洛树搜索)更有效、更高效的测试时扩展方法。
- 通过使用本地检索数据进行强化学习训练,模型可以很好地泛化到其他数据集和在线搜索场景。
- 最终的 7B 参数大语言模型相比现有的复杂方法甚至闭源大语言模型(如 GPT-4o-mini)都取得了显著的性能提升。
✨ 方法
总体
我们采用两阶段奖励引导的强化学习训练方法:
第一阶段:仅使用格式奖励,学习如何调用搜索功能。
第二阶段:结合格式奖励和答案奖励,学习如何通过调用搜索功能来解答问题。
算法
我们仅使用基于结果监督的强化学习进行训练,因此需要考虑两个主要方面:(1) 强化学习算法,以及 (2) 奖励的设计。
- RL算法:我们使用 Reinforce++ 作为我们的强化学习算法。对于每一道题目,我们会对 n 个样本的奖励取平均值,以稳定训练过程。在解题格式上,我们使用
<think>...</think>标签表示思考,xxx表示搜索,<answer>...</answer>表示回答,<begin_of_search>...<end_of_search>用于调用搜索工具,而<begin_of_documents>...<end_of_documents>则用于展示检索到的文档。 - Belong to the same category. The data is then mixed in a specific ratio to form our training data. All of our training data can be found here: https://huggingface.co/datasets/XXsongLALA/RAG-RL-Hotpotqa-with-2wiki.
📄 评估
参照 ReARTeR(https://arxiv.org/pdf/2501.07861),我们选择了四个具有代表性的基准数据集:HotpotQA、2WikiMultiHopQA、Musique 和 Bamboogle。
其中,HotpotQA 和 2WikiMultiHopQA 属于域内数据集,因为我们使用了它们的训练集;而 Musique 和 Bamboogle 则属于域外数据集,这有助于评估模型的泛化能力。我们从 HotpotQA、2WikiMultiHopQA 和 Musique 的开发集中随机抽取 500 个样例作为测试集。对于 Bamboogle,则直接使用其全部测试集(125 个样例)作为测试数据。
所有数据集的检索语料均来自维基百科,具体来说是 Facebook Research 于 2019 年 8 月发布的 [KILT 维基百科语料库]。此外,由于 Bamboogle 数据中包含较新的知识,我们还加入了在线网页搜索测试,以进一步评估模型与在线搜索能力的匹配程度。
在评估指标方面,我们使用 ACC_R(覆盖精确匹配)和 ACC_L(LLM 作为裁判)。
正如我们所见,在使用相同的 LLaMA-3.1-8B-Instruct 基础模型时,我们的方法相比现有方法取得了显著提升,甚至超越了 GPT-4o-mini 等闭源模型。进一步地,当我们切换到更强大的基础模型 Qwen-2.5-7B-Base 时,我们直接从零开始进行强化学习训练,最终在所有域内和域外数据集上都取得了更好的成绩,充分展示了我们模型卓越的泛化能力。
对于 Bamboogle 数据集,我们额外使用了 Google 进行在线搜索。可以看出,相比于仅依赖本地知识库,结合在线搜索能够带来更优的结果,这表明将在线搜索能力无缝集成到我们的模型中是可行的。

🏃 快速入门
环境搭建
注意:环境配置与 STILL-3 相同(非常棒的工作!)。
conda create --name r1-searcher python=3.10.16
conda activate r1-searcher
pip install vllm==0.6.5
pip install packaging
pip install ninja
pip install flash-attn --no-build-isolation
pip install deepspeed
pip install accelerate
pip install datasets
数据准备
cd R1-Searcher
## 处理维基百科摘要
wget -nv --no-check-certificate https://rocketqa.bj.bcebos.com/corpus/nq.tar.gz
tar -zxf nq.tar.gz
rm -rf nq.tar.gz # 我们只使用标题和摘要。
## 处理维基百科全文
wget http://dl.fbaipublicfiles.com/KILT/kilt_knowledgesource.json
cd R1-Searcher
python wiki_corpus_index_bulid/split_kilt_to_100.py
## 对 TSV 文件建立索引。建议将原始 TSV 文件拆分为 n 份进行嵌入,否则处理过程会非常缓慢。
python wiki_corpus_index_bulid/build_corpus_embedding.py --file_path the_tsv_file_path --save_path the_pickle_path --gpu_id 0
python wiki_corpus_index_bulid/build_corpus_idnex.py
训练
cd R1-Searcher
## 启动 Ray
bash scripts/ray_start.sh
## 挂载维基百科
python train/wiki_corpus_load.py hotpotqa 5004 &
## 将 jsonl 转换为 hf 数据集
python train/jsonl2hf_dataset.py --input data/training_set/stage_2.jsonl --output data/training_set/stage_2
## 启动奖励服务器
python train/reward_server_qwen_zero.py --data_path data/training_set/stage_2 --reward_pretrain the_model_path --log_file results/samples/qwen.jsonl --port 1278
## 开始训练
bash scripts/qwen_reinforce_plus_train.sh | tee results/logs/qwen_reinforce_plus_train.txt
评估
cd R1-Searcher
## 本地搜索
## HotpotQA
python train/wiki_corpus_load.py hotpotqa 5004 &
python evaluation/eval_search_loacl.py --gpu_id 0 --temp 0.0 --port 5004 --prompt_type v0 --src_file data/eval_set/hotpotqa_500.jsonl --model_path the_path_to_model
## 2Wiki, Musique, Bamboogle
python train/wiki_corpus_load.py kilt 5005 &
python evaluation/eval_search_loacl.py --gpu_id 0 --temp 0.0 --port 5005 --prompt_type v0 --src_file data/eval_set/bamboogle_500.jsonl --model_path the_path_to_model
## 在线搜索
## Bamboogle
python evaluation/eval_search_online.py --gpu_id 0 --temp 0.0 --port 5004 --prompt_type v0 --src_file data/eval_set/bamboogle_500.jsonl --model_path the_path_to_model
## 计算指标
## 精确匹配、覆盖精确匹配、F1 分数
python evaluation/metric_calc_rule.py the_path_to_results
## LLM 作为裁判。请记得将输入文件替换为你自己的结果。
python evaluation/metric_calc_gpt_as_judge.py
📄 引用
如果您在研究中使用了本报告,请您予以引用。
@article{R1-searcher,
title={R1-Searcher:通过强化学习激励大语言模型的搜索能力},
author={宋华通、蒋金浩、闵英谦、陈杰、陈志鹏、赵文轩、温继荣、陆洋、缪旭},
url={https://github.com/RUCAIBox/R1-searcher},
year={2025}
}
📄 许可证
本项目采用 MIT 许可证 开放。
📞 联系方式
如有任何问题或反馈,请发送邮件至 songhuatong123@ruc.edu.cn。
常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
opencode
OpenCode 是一款开源的 AI 编程助手(Coding Agent),旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件,而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码,还是排查难以定位的 Bug,OpenCode 都能通过自然语言交互高效完成,显著减少开发者在重复性劳动和上下文切换上的时间消耗。 这款工具专为软件开发者、工程师及技术研究人员设计,特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构,这意味着用户可以审查代码逻辑、自定义行为策略,甚至私有化部署以保障数据安全,彻底打破了传统闭源 AI 助手的“黑盒”限制。 在技术体验上,OpenCode 提供了灵活的终端界面(Terminal UI)和正在测试中的桌面应用程序,支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具,安装便捷,并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客,还是渴望提升产出的独立开发者,OpenCode 都提供了一个透明、可信
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。