Web Analytics

s3

⭐ 731 stars French by pat-jj

🌐 Langue

s3 - Agent de Recherche Efficace et Performant via l’Apprentissage par Renforcement

Vous n’avez pas besoin de tant de données pour entraîner un agent de recherche

arXiv

Aperçu des performances :

performance_overview

Qu'est-ce que s3 ?

framework

Framework s3

s3 est un framework simple mais puissant pour entraîner des agents de recherche dans la génération augmentée par récupération (RAG). Il apprend aux modèles de langage à rechercher plus efficacement—sans modifier le générateur lui-même. En se concentrant uniquement sur le composant de recherche, s3 obtient d'excellentes performances sur les tâches de QA avec seulement une fraction des données utilisées par les méthodes précédentes. Il est modulaire, efficace et conçu pour fonctionner parfaitement avec n'importe quel LLM boîte noire.

Table des matières

📦 Installation

Environnement du chercheur & générateur

conda create -n s3 python=3.9

install torch [or you can skip this step and let vllm to install the correct version for you]

pip install torch==2.4.0 --index-url https://download.pytorch.org/whl/cu121

install vllm

pip3 install vllm==0.6.3 # or you can install 0.5.4, 0.4.2 and 0.3.1 pip3 install ray

verl

cd code

pip install -e .

flash attention 2

pip3 install flash-attn --no-build-isolation

we use pyserini for efficient retrieval and evaluation

pip install pyserini # the version we used is 0.22.1

quality of life

pip install wandb IPython matplotlib huggingface_hub
Environnement Retriever

conda create -n ret python=3.10
conda activate ret

conda install pytorch==2.4.0 torchvision==0.19.0 torchaudio==2.4.0 pytorch-cuda=12.1 -c pytorch -c nvidia pip install transformers datasets pyserini conda install -c pytorch -c nvidia faiss-gpu=1.8.0 pip install uvicorn fastapi

💡 Préparation

Télécharger l’Index & le Corpus

python scripts/download.py --save_path $save_path
cat $save_path/part_* > $save_path/e5_Flat.index
gzip -d $save_path/wiki-18.jsonl.gz

Pré-calculer l'initialisation RAG naïve (ou vous pouvez télécharger nos données traitées ici : huggingface)

# deploy retriever
bash scripts/deploy_retriever/retrieval_launch.sh # or scripts/deploy_retriever/retrieval_launch_mirage.sh for MedCorp corpus.

deploy generator

bash generator_llms/host.sh # modify tensor-parallel-size to the number of GPUs you use

run precompute

bash scripts/precompute.sh # this step will take a while, as it will precompute the naïve RAG Cache for training

🏋️ Exécuter l'entraînement

Cette étape concerne l'entraînement de S3

# deploy retriever
bash scripts/deploy_retriever/retrieval_launch.sh 

deploy generator

bash generator_llms/host.sh

run training

bash scripts/train/train_s3.sh

🔍 Exécuter la recherche/récupération

Cette étape concerne la collecte de contexte de s3 / bases de référence

s3

# deploy retriever
bash scripts/deploy_retriever/retrieval_launch.sh 

run s3 inference

bash scripts/s3_inference/evaluate-8-3-3.sh
Références de base

RAG

bash scripts/deploy_retriever/retrieval_launch.sh # or retrieval_launch_bm25.sh # deploy retriever
bash scripts/baselines/rag.sh # run RAG 
DeepRetrieval DeepRetrieval
bash retrieval_launch_bm25.sh # deploy BM25 Model
bash generator_llms/deepretrieval.sh # deploy DeepRetrieval Model
bash scripts/baselines/deepretrieval.sh # run DeepRetrieval Query Rewriting + Retrieval
Recherche-R1

bash retrieval_launch.sh # deploy e5 retriever
bash scripts/baselines/search_r1.sh # run Search-R1
IRCoT

bash retrieval_launch.sh # deploy e5 retriever
python scripts/baselines/ircot.py
Recherche-o1

bash retrieval_launch.sh # deploy e5 retriever
bash scripts/baselines/search_o1.sh # run Search-o1

📈 Exécuter l'évaluation

Cette étape concerne l'évaluation de s3 / des lignes de base

bash scripts/evaluation/run.sh

Q&R

Données personnalisées ?

Si vous souhaitez tester s3 sur votre propre corpus/ensemble de données, vous pouvez consulter ce commit pour voir ce qu’il faut faire afin de construire votre propre pipeline : commit 8420538

Reproduire les résultats ?

Plusieurs développeurs ont déjà réussi à reproduire nos résultats. Si vous avez des questions ou rencontrez des problèmes, n’hésitez pas à ouvrir une issue — nous serons heureux de vous guider directement (voir cet exemple).

Bien que reproduire le modèle vous-même soit simple — et nous recommandons en fait de l’entraîner depuis zéro, car l’évaluation est souvent beaucoup plus chronophage que l’entraînement — nous fournissons également un checkpoint de référence : s3-8-3-3-20steps, entraîné en environ une heure.

Remerciements

Nous tenons à remercier les projets suivants : verl, RAGEN, Search-R1, DeepRetrieval, PySerini.

Citation

@article{jiang2025s3,
  title={s3: You Don't Need That Much Data to Train a Search Agent via RL},
  author={Jiang, Pengcheng and Xu, Xueqiang and Lin, Jiacheng and Xiao, Jinfeng and Wang, Zifeng and Sun, Jimeng and Han, Jiawei},
  journal={arXiv preprint arXiv:2505.14146},
  year={2025}
}
Merci de l'intérêt que vous portez à notre travail !

--- Tranlated By Open Ai Tx | Last indexed: 2025-10-06 ---