DeepRetrieval
DeepRetrieval 是一款基于强化学习(RL)的创新开源项目,旨在通过训练大语言模型(LLM)自动生成高质量搜索查询,从而显著提升信息检索效果。传统方法通常依赖昂贵的人工标注数据或蒸馏数据进行监督学习,而 DeepRetrieval 另辟蹊径,让模型在与真实搜索引擎或检索器的交互中通过“试错”自我进化:它根据最终的检索结果质量获得奖励信号,无需任何人工标注的查询对即可优化策略。
该工具的核心亮点在于其独特的思维链机制。模型在输出最终查询前,会先在 <think> 标签内生成推理步骤,明确分析如何改写问题以匹配检索系统,随后在 <answer> 标签输出优化后的查询。这种结构不仅提升了可解释性,更带来了惊人的性能突破:在文献和临床试验搜索任务中,其召回率远超此前的最先进方法,甚至仅用 30 亿参数的小模型就能击败 GPT-4o 和 Claude-3.5-Sonnet 等巨型模型。
DeepRetrieval 非常适合从事检索增强生成(RAG)、搜索引擎优化及信息检索研究的技术人员与开发者使用。无论是需要构建高效文献检索系统的研究员,还是希望提升数据库查询准确率的工程师,都能利用它轻松部署 API 或进行微调训练,以低成本实现专业级的检索增强能力。
使用场景
某生物制药公司的研发分析师正在利用内部文献库和公开临床数据库,紧急筛选针对特定罕见病靶点的最新研究论文与临床试验数据。
没有 DeepRetrieval 时
- 查询意图丢失:分析师输入的自然语言描述过于复杂,传统检索引擎无法理解深层逻辑,导致大量关键文献被遗漏。
- 依赖昂贵标注:为了优化搜索效果,团队需耗费数周时间人工编写“理想查询”作为训练数据,成本高昂且难以覆盖所有场景。
- 召回率极低:在 PubMed 等真实搜索引擎中,相关文档的召回率仅为 24% 左右,分析师不得不手动翻阅数百页无关结果。
- 模型能力受限:即便调用 GPT-4o 等大模型进行查询改写,由于缺乏针对检索结果的直接反馈机制,效果仍不如预期。
使用 DeepRetrieval 后
- 自主推理优化:DeepRetrieval 让模型通过强化学习自我试错,自动生成包含思维链(Chain-of-Thought)的查询策略,精准捕捉复杂意图。
- 零监督训练:无需任何人工标注的查询对,直接利用检索命中率作为奖励信号进行训练,大幅降低了数据准备门槛。
- 召回率飙升:在同样的文献搜索任务中,相关文档召回率从 24.68% 跃升至 65.07%,临床试验搜索也从 32% 提升至 63%。
- 小模型大能量:仅用 30 亿参数量的模型便超越了 GPT-4o 等巨型模型的表现,部署更轻量,响应速度更快。
DeepRetrieval 通过让 AI 在真实检索反馈中“自学成才”,彻底解决了复杂场景下信息查找难、训练成本高的问题,将研发人员的文献调研效率提升了数倍。
运行环境要求
- Linux
- 必需 NVIDIA GPU,支持 CUDA 12.1 (推荐) 或 12.6
- 需安装 flash-attn 2
- 显存需求未明确说明,但文档提示若出现 OOM (Out-of-vram) 需开启梯度检查点,暗示需要较大显存
未说明

快速开始
最新消息
- [2025-05-19] 如果您对 RAG 任务特别感兴趣,我们推荐您查看我们的最新工作 s3,这是一个专为 RAG 设计的高效训练框架。
- [2025-05-06] 您现在可以轻松部署我们的模型并调用 API 进行查询改写。更多详情请参见 这里。
- [2025-02-28] 🎉 我们很高兴地发布了 DeepRetrieval 的代码!
什么是 DeepRetrieval?
DeepRetrieval 是一种新颖的强化学习方法,用于训练大型语言模型(LLMs)生成查询,以提升信息检索性能。与依赖于标注查询增强对的监督学习的传统方法不同,DeepRetrieval 让模型通过直接的试错过程进行学习,并以检索指标作为奖励,从而生成能够最大化检索效果的查询。
该系统的工作原理是:让 LLM 在 <think> 部分生成推理步骤,随后在 <answer> 部分给出最终的增强查询。这种结构化的方法能够在确定查询形式之前进行明确的思维链式推理。

核心特性与成果
- 无需监督:无需昂贵的人工标注或蒸馏得到的参考查询
- 强大性能:显著超越以往的最先进方法
- 文献搜索的召回率为 65.07%(而之前的 SOTA 为 24.68%)
- 临床试验搜索的召回率为 63.18%(而之前的 SOTA 为 32.11%)
- 应用广泛:适用于多种检索任务:(1) 使用真实世界搜索引擎的文献检索 (2) 证据检索 (3) 经典的信息检索 (4) SQL 数据库检索
- 参数高效:仅使用 3B 参数就取得了优异的效果,优于更大的模型如 GPT-4o 和 Claude-3.5-Sonnet

⭐️ 请给我们的仓库点个星,以便随时了解激动人心的新功能和改进!🌟
目录
📦 安装
通用安装(适用于所有检索方法):
conda create -n zero python=3.9
# 安装 torch [或者您可以跳过这一步,让 vllm 自动为您安装正确版本]
pip install torch==2.4.0 --index-url https://download.pytorch.org/whl/cu121
# 安装 vllm
pip3 install vllm==0.6.3 # 或者您可以安装 0.5.4、0.4.2 和 0.3.1
pip3 install ray
# verl
cd code
pip install -e .
# flash attention 2
pip3 install flash-attn --no-build-isolation
# 提升开发体验
pip install wandb IPython matplotlib huggingface_hub
(如果您只想运行搜索引擎检索,则可以跳过以下步骤。)
如果使用稀疏检索(例如 BM25)或密集检索(例如 DPR),请同时安装以下内容:
# 我们使用 pyserini 来高效地进行检索和评估
pip install pyserini # 我们使用的版本是 0.22.1
# 如果您尚未安装 faiss,请安装:
pip install faiss-gpu==1.7.2 # 我们使用的版本是 1.7.2
# 如果您尚未安装 Java,请安装:
pip install install-jdk && python -c "import jdk; jdk.install('11')"
# 支持 SQL 执行
pip install func_timeout
⚡️ 易用的查询改写 API
sh vllm_host.sh # 您可以指定本地端口和要使用的模型
python query_rewrite.py --query "谁在 2025 年构建了 DeepRetrieval?"
# 原始查询:谁在 2025 年构建了 DeepRetrieval?
# 改写后的查询:(DeepRetrieval 系统,它是在 2025 年构建的)
🫧 开始使用
1. 数据下载/预处理
我们提供了两种数据准备方式:
🚀 选项 1:从 Huggingface 下载预处理好的数据集(推荐)
所有预处理好的数据集都可在我们的 Huggingface 仓库中找到。您可以使用提供的脚本进行下载:
cd code
# 列出可用的数据集
python download_datasets.py --list_only --repo_id DeepRetrieval/datasets
# 下载所有数据集
python download_datasets.py --repo_id DeepRetrieval/datasets --output_dir ./data
# 或者下载特定类别/数据集
python download_datasets.py --categories search_engine --datasets pubmed_32 --output_dir ./data
⛏️ 选项 2:自行处理数据
以 PubMed 为例:
cd code
python download_datasets.py --categories raw_data --datasets pubmed --output_dir ./data
python data_preprocess/pubmed_32.py
(这将生成所需的数据结构,格式符合要求,但需要访问原始数据,且处理时间较长。)
2. 获取您的搜索引擎 API 密钥(若使用搜索引擎则必需)
以 PubMed 为例,您可以按照 此处 的说明获取密钥。(PubMed API 是 100% ✨免费✨使用的!)
然后将其放入 code/verl/utils/reward_score/apis/ 目录下,命名为 pubmed_api.key。
3. 奖励函数相关(可选)
奖励设计(例如在 code/verl/utils/reward_score/pubmed.py 中):
| 召回率 | ≥ 0.7 | ≥ 0.5 | ≥ 0.4 | ≥ 0.3 | ≥ 0.1 | ≥ 0.05 | < 0.05 |
|---|---|---|---|---|---|---|---|
| 奖励 | +5.0 | +4.0 | +3.0 | +1.0 | +0.5 | +0.1 | -3.5 |
4. 自定义监控信息(可选)
修改 code/verl/trainer/ppo/ray_trainer.py 中的 compute_reward_metrics()
🏃 运行训练
conda activate zero
以 PubMed 为例:
sh scripts/train/pubmed_32.sh
(如果出现显存不足的情况,可以尝试在脚本中添加 critic.model.enable_gradient_checkpointing=True)
训练期间的思维长度与查询长度(PubMed)

🧐 运行评估
sh scripts/eval/pubmed_32.sh
(您无需进行训练即可运行此脚本,因为它会默认从Huggingface下载我们训练好的模型)
搜索引擎上的结果
| 模型 | 方法 | 文献召回率 | 临床试验召回率 |
|---|---|---|---|
| 原始查询 | - | 10.36 | 18.01 |
| GPT-3.5 | - | 11.67 | 9.42 |
| 不带推理 | 18.68 | 13.94 | |
| GPT-4o | - | 17.59 | 16.25 |
| 不带推理 | 19.72 | 14.26 | |
| Claude-3-Haiku | - | 11.26 | 10.10 |
| 不带推理 | 20.92 | 24.68 | |
| Claude-3.5-Sonnet | - | 20.94 | 18.33 |
| 不带推理 | 19.08 | 18.41 | |
| Mistral-7B-Inst | - | 7.18 | 8.08 |
| LEADS-7B (SFT) | - | 24.68 | 32.11 |
| Qwen2.5-3B-Inst | - | 6.59 | 6.09 |
| 不带推理 | 9.46 | 7.97 | |
| DeepRetrieval-3B | - | ✨ 65.07 ✨ | ✨ 63.18 ✨ |
| 不带推理 | 51.90 | 53.31 |
*表:不同模型和方法在文献搜索及临床试验搜索任务上的对比。
注: LEADS-7B 是一款最先进的文献挖掘大模型,基于2万篇综述和40万篇文献进行训练 [https://arxiv.org/pdf/2501.16255]
⚠️ 常见问题
⚙️ 集群设置:CUDA与Conda环境
💻 slurm相关
在集群上运行任何训练或评估脚本之前,请确保已加载正确的CUDA模块并激活您的Conda环境。
🧩 GPU分配
如果SLURM作业中的CUDA版本与Python脚本中看到的CUDA版本不一致,您可能会收到如下警告:
UserWarning: CUDA初始化:CUDA驱动初始化失败,您可能没有CUDA GPU。 (内部触发于../c10/cuda/CUDAFunctions.cpp:108。) return torch._C._cuda_getDeviceCount() > 0
要解决这个问题,请不要在脚本中手动设置CUDA设备。
相反,直接在SLURM作业中加载CUDA模块:
在运行任何Python命令之前,添加以下几行:
# --- 加载CUDA模块 ---
module load cuda/12.6
# --- 激活Conda环境 ---
source ~/miniconda/etc/profile.d/conda.sh # 如果您的Conda安装路径不同,请相应调整
conda activate zero
如果您之前在训练脚本或作业文件中指定了设备(例如pubmed_32.sh),请移除类似以下的行:
export CUDA_VISIBLE_DEVICES=4,7 这将确保CUDA由SLURM正确管理。
⚙️ 依赖冲突
在设置环境时,您可能会遇到pip依赖性警告,例如:
ERROR: pip的依赖解析器目前未考虑到所有已安装的包。
这种行为是以下依赖冲突的根源。
matplotlib 3.9.4需要pyparsing>=2.3.1,但该包未安装。
mne 1.8.0需要decorator,但该包未安装。
pyhealth 1.1.4需要bitsandbytes,但该包未安装。
要解决这些缺失的依赖项,只需运行:
pip install pyparsing decorator bitsandbytes
您还可能遇到NumPy不兼容的警告,例如:
pyhealth 1.1.4需要numpy<2.0,但您当前安装的是numpy 2.0.2,两者不兼容。
outlines 0.0.46需要numpy<2.0.0,但您当前安装的是numpy 2.0.2,同样不兼容。
vllm 0.6.3需要numpy<2.0.0,但您当前安装的是numpy 2.0.2,无法兼容。
要修复这些问题,重新安装兼容的NumPy版本,并重新安装依赖包:
pip install "numpy<2.0.0" --force-reinstall
pip install transformers==4.46.3
pip install vllm==0.6.3
pip install verl==0.1
pip install outlines==0.0.46
pip install pyserini
🤝 致谢
本实现主要基于verl和PySerini。实验中的基础模型为Qwen2.5-3B-Instruct。我们衷心感谢他们对开源社区的贡献。
📚 引用DeepRetrieval
@article{jiang2025deepretrieval,
title={Deepretrieval: Hacking real search engines and retrievers with large language models via reinforcement learning},
author={Jiang, Pengcheng and Lin, Jiacheng and Cao, Lang and Tian, Runchu and Kang, SeongKu and Wang, Zifeng and Sun, Jimeng and Han, Jiawei},
journal={arXiv preprint arXiv:2503.00223},
year={2025}
}
感谢您的关注!😊
常见问题
相似工具推荐
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 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。