SimpleDeepSearcherは、複雑な情報検索タスクのための大規模言語モデル(LLM)の機能を強化するために設計されたオープンソースのフレームワークです。実際のウェブ検索行動をシミュレートすることで高品質な推論と検索トレースを生成し、大量のデータを必要とせずに効率的にモデルを学習することができます。従来のRAG(Retrieval Augmented Generation)やRL(Reinforcement Learning)手法と比較して、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 Search APIを使用します。ユーザはGoogle Searchのサブスクリプションキーとエンドポイント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は、研究者が情報検索タスクにおける大規模言語モデルのパフォーマンスを最適化するのに役立ちます。例えば、論文検索やデータ分析において、モデルはウェブ検索を通じて関連する文献やデータセットに素早くアクセスし、研究効率を向上させることができます。 - Q&Aシステム開発
開発者はSimpleDeepSearcherを使ってインテリジェントなQ&Aシステムを構築することができます。このシステムはユーザーの検索行動をシミュレートし、正確な回答を生成するので、カスタマーサービスボットや教育プラットフォームに適しています。 - 複雑な問題の推論
多段階の推論を必要とする問題(例:数学や論理問題)の場合、SimpleDeepSearcherは、推論の軌跡を生成することで、モデルがより正確な答えを提供できるようにします。
品質保証
- SimpleDeepSearcherにはどのような前提条件が必要ですか?
Python 3.10以上の環境、Google検索APIキー、事前に学習された大規模言語モデルが必要です。すべての依存ライブラリをインストールし、モデルへの正しいパスを設定してください。 - どのようにして生成されたデータの品質を保証するのですか?
このプロジェクトは多次元的な回答フィルタリングを提供し、ユーザーはフィルタリングパラメータ(質問の難易度、推論パスの長さなど)を調整して、質の高いデータを保持することができる。 - 他の検索APIはサポートされていますか?
現在のバージョンは主にGoogle検索APIをサポートし、ユーザーは他の検索サービスに適応するためにコードを変更することができますが、API呼び出しロジックを調整する必要があります。 - トレーニングにはどのくらい時間がかかりますか?
トレーニング時間はモデルサイズとデータ量に依存する。871 個の高品質サンプルを持つ QWEN2.5-32B モデルの微調整には、通常数時間かかります(GPU 環境)。