SimpleDeepSearcher 是一个开源框架,旨在提升大语言模型(LLM)在复杂信息检索任务中的能力。它通过模拟真实网页搜索行为,生成高质量的推理和搜索轨迹,帮助模型在无需大量数据的情况下进行高效训练。相比传统的检索增强生成(RAG)或强化学习(RL)方法,SimpleDeepSearcher 使用少量精选数据,通过知识蒸馏和自我蒸馏技术,让模型能够自主完成复杂推理和搜索任务。该项目由 RUCAIBox 团队开发,基于 MIT 许可证发布,适用于研究人员和开发者优化大语言模型的搜索功能。官方文档和代码托管在 GitHub,最新更新时间为 2025 年 4 月。
功能列表
- 网页搜索模拟:模拟真实用户在开放网页环境中的搜索行为,生成多轮推理和搜索轨迹。
- 数据合成与筛选:通过多样性查询采样和多维度响应筛选,生成高质量的训练数据。
- 高效监督微调:仅需少量精选数据即可完成监督微调(SFT),降低计算成本。
- 兼容多种模型:支持现有基础大语言模型和对话模型,无需额外的冷启动指令微调。
- 开源代码与文档:提供完整的训练代码、推理代码和模型检查点,方便开发者使用和研究。
使用帮助
安装流程
SimpleDeepSearcher 是一个基于 Python 的开源项目,运行环境需要 Python 3.10 或以上版本。以下是详细的安装步骤:
- 克隆项目仓库
在终端运行以下命令,将 SimpleDeepSearcher 仓库克隆到本地:git clone https://github.com/RUCAIBox/SimpleDeepSearcher.git cd SimpleDeepSearcher
- 创建虚拟环境
使用 conda 创建并激活虚拟环境,确保依赖隔离:conda create --name simpledeepsearcher python=3.10 conda activate simpledeepsearcher
- 安装依赖
安装项目所需的核心依赖库,例如 vLLM、deepspeed 和 datasets。运行以下命令:pip install vllm==0.6.5 pip install packaging ninja flash-attn --no-build-isolation pip install deepspeed accelerate datasets
- 配置搜索 API
SimpleDeepSearcher 使用 Google 搜索 API 进行在线搜索。用户需要获取 Google 搜索的订阅密钥和端点 URL,并在运行脚本时配置。例如:export GOOGLE_SUBSCRIPTION_KEY="YOUR_KEY" export GOOGLE_ENDPOINT="https://google.serper.dev/search"
- 准备模型路径
用户需要指定推理模型和摘要模型的路径。例如:export MODEL_PATH="/path/to/your/reasoning_model" export SUMMARIZATION_MODEL_PATH="/path/to/your/summarization_model"
- 运行推理脚本
完成配置后,运行推理脚本进行测试或部署:export CUDA_VISIBLE_DEVICES=0,1 python -u inference/inference.py \ --dataset_name YOUR_DATASET_NAME \ --cache_dir_base cache \ --output_dir_base output \ --model_path "$MODEL_PATH" \ --summarization_model_path "$SUMMARIZATION_MODEL_PATH" \ --summarization_model_url YOUR_SUMMARIZATION_MODEL_URL \ --google_subscription_key "$GOOGLE_SUBSCRIPTION_KEY" \ --google_endpoint "$GOOGLE_ENDPOINT" > output/output.log 2>&1
主要功能操作
SimpleDeepSearcher 的核心功能是通过网页搜索增强大语言模型的推理能力。以下是主要功能的详细操作流程:
- 数据合成与搜索轨迹生成
SimpleDeepSearcher 通过模拟用户在真实网页环境中的搜索行为,生成多轮推理轨迹。用户可以配置data_synthesis
模块,指定搜索关键词和问题类型。系统会自动从开放域 QA 资源中采样多样化的问题,并通过 Google 搜索 API 获取相关网页内容。生成的数据包括问题、搜索关键词、网页结果和推理路径,保存在cache
文件夹中。
操作步骤:- 编辑
data_synthesis_config.json
,设置查询采样参数(如领域多样性、关键词复杂性)。 - 运行
python data_synthesis.py
生成初始数据。 - 检查
cache/synthesis_data
目录,确保数据生成完整。
- 编辑
- 数据筛选与优化
项目提供多维度响应筛选功能,确保训练数据的质量。用户可以通过response_curation.py
脚本,基于问题难度、推理路径长度和搜索效果等标准过滤数据。
操作步骤:- 运行以下命令启动筛选:
python response_curation.py --input_dir cache/synthesis_data --output_dir cache/curated_data
- 筛选后的数据保存在
cache/curated_data
中,仅保留高质量的训练样本。
- 运行以下命令启动筛选:
- 模型监督微调
SimpleDeepSearcher 使用监督微调(SFT)来优化大语言模型。用户需要准备一个基础模型(如 QWEN2.5-32B),并使用筛选后的数据进行微调。
操作步骤:- 配置
sft_config.json
,指定模型路径和训练参数(如学习率、批量大小)。 - 运行以下命令启动微调:
python sft_train.py --config sft_config.json
- 训练完成后,模型检查点保存在
output/checkpoints
目录。
- 配置
- 推理与测试
用户可以通过推理脚本测试模型的搜索和推理能力。推理结果会输出到output/results
目录,包括生成的答案和推理路径。
操作步骤:- 配置推理参数(如数据集名称、输出目录)。
- 运行推理脚本(参考安装流程中的命令)。
- 查看
output/output.log
检查推理结果。
特色功能操作
- 多样性查询采样:SimpleDeepSearcher 使用多样性查询采样策略,基于领域异质性、关键词多样性和知识单元复杂性选择问题。用户可以在
query_sampling_config.json
中调整采样参数,确保生成的问题覆盖多种领域和难度。 - 知识蒸馏与自我蒸馏:项目通过知识蒸馏技术,利用强大的推理模型生成高质量训练数据。用户可以指定一个强大的预训练模型(如 LLaMA 或 GPT 系列)作为教师模型,运行
distillation.py
脚本进行数据生成。 - 实时网页搜索:SimpleDeepSearcher 支持实时网页搜索,结合 Google 搜索 API 动态获取最新信息。用户需确保 API 密钥有效,并检查网络连接。
注意事项
- 确保网络环境稳定,以支持实时网页搜索。
- 检查模型路径和 API 密钥配置,避免运行时错误。
- 定期更新依赖库版本,确保兼容性。
- 项目代码和文档遵循 MIT 许可证,用户需在引用时标注出处(如论文
@article{sun2025simpledeepsearcher}
)。
应用场景
- 学术研究
SimpleDeepSearcher 可帮助研究人员优化大语言模型在信息检索任务中的表现。例如,在论文检索或数据分析中,模型可以通过网页搜索快速获取相关文献或数据集,提升研究效率。 - 问答系统开发
开发者可以使用 SimpleDeepSearcher 构建智能问答系统。系统能模拟用户搜索行为,生成准确的答案,适用于客服机器人或教育平台。 - 复杂问题推理
对于需要多步推理的问题(如数学或逻辑问题),SimpleDeepSearcher 通过生成推理轨迹,帮助模型提供更准确的答案,适合在线教育或竞赛平台。
QA
- SimpleDeepSearcher 需要哪些前置条件?
用户需要 Python 3.10+ 环境、Google 搜索 API 密钥,以及一个预训练的大语言模型。确保安装所有依赖库,并配置正确的模型路径。 - 如何确保生成的数据质量?
项目提供多维度响应筛选功能,用户可以通过调整筛选参数(如问题难度、推理路径长度)来保留高质量数据。 - 是否支持其他搜索 API?
当前版本主要支持 Google 搜索 API。用户可以修改代码以适配其他搜索服务,但需自行调整 API 调用逻辑。 - 训练需要多长时间?
训练时间取决于模型大小和数据量。使用 871 个高质量样本,微调 QWEN2.5-32B 模型通常需要数小时(GPU 环境)。