SimpleDeepSearcher ist ein Open-Source-Framework, das entwickelt wurde, um die Fähigkeiten von Large Language Models (LLMs) für komplexe Information Retrieval Aufgaben zu verbessern. Es generiert qualitativ hochwertige Inferenz- und Suchspuren durch die Simulation von echtem Websuchverhalten und hilft dabei, Modelle effizient zu trainieren, ohne dass große Datenmengen benötigt werden. Im Vergleich zu traditionellen Retrieval Augmented Generation (RAG)- oder Reinforcement Learning (RL)-Methoden verwendet SimpleDeepSearcher eine kleine Menge ausgewählter Daten, um das Modell in die Lage zu versetzen, durch Wissensdestillation und Selbstdestillationstechniken selbständig komplexe Schlussfolgerungen und Suchaufgaben durchzuführen. Das Projekt wurde vom RUCAIBox-Team entwickelt und unter der MIT-Lizenz veröffentlicht. Es richtet sich an Forscher und Entwickler, die die Suchfunktionalität großer Sprachmodelle optimieren wollen. Die offizielle Dokumentation und der Code werden auf GitHub gehostet und wurden zuletzt im April 2025 aktualisiert.
Funktionsliste
- Simulation der Websuche: simuliert das Suchverhalten realer Nutzer in einer offenen Webumgebung und generiert mehrere Runden von Inferenzen und Suchverläufen.
- Datensynthese und ScreeningGenerierung hochwertiger Trainingsdaten durch Diversity Query Sampling und multidimensionales Response Filtering.
- Effiziente Überwachung der FeinabstimmungÜberwachtes Fine-Tuning (SFT) kann mit einer kleinen Menge ausgewählter Daten durchgeführt werden, was die Rechenkosten reduziert.
- Kompatibel mit mehreren ModellenUnterstützung des zugrundeliegenden großen Sprachmodells und Dialogmodells ohne zusätzliche Feinabstimmung der Kaltstartbefehle.
- Offener Quellcode und DokumentationVollständiger Trainingscode, Inferenzcode und Modellprüfpunkte werden zur Erleichterung der Nutzung und Forschung für Entwickler bereitgestellt.
Hilfe verwenden
Einbauverfahren
SimpleDeepSearcher ist ein Python-basiertes Open-Source-Projekt, die Laufzeitumgebung erfordert Python 3.10 oder höher. Im Folgenden werden die Installationsschritte detailliert beschrieben:
- Projektlager klonen
Klonen Sie das SimpleDeepSearcher-Repository lokal, indem Sie den folgenden Befehl in einem Terminal ausführen:git clone https://github.com/RUCAIBox/SimpleDeepSearcher.git cd SimpleDeepSearcher
- Erstellen einer virtuellen Umgebung
Verwenden Sie conda, um eine virtuelle Umgebung zu erstellen und zu aktivieren und die Isolierung von Abhängigkeiten sicherzustellen:conda create --name simpledeepsearcher python=3.10 conda activate simpledeepsearcher
- Installation von Abhängigkeiten
Installieren Sie die Kernbibliotheken, die für das Projekt benötigt werden, wie z. B. vLLM, deepspeed und datasets. führen Sie den folgenden Befehl aus:pip install vllm==0.6.5 pip install packaging ninja flash-attn --no-build-isolation pip install deepspeed accelerate datasets
- Konfigurieren der Such-API
SimpleDeepSearcher verwendet die Google Search API für die Online-Suche. Der Benutzer muss den Abonnementschlüssel und die Endpunkt-URL für Google Search abrufen und beim Ausführen des Skripts konfigurieren. Beispiel:export GOOGLE_SUBSCRIPTION_KEY="YOUR_KEY" export GOOGLE_ENDPOINT="https://google.serper.dev/search"
- Vorbereiten des Modellpfads
Der Benutzer muss die Pfade zum Inferenzmodell und zum Zusammenfassungsmodell angeben. Beispiel:export MODEL_PATH="/path/to/your/reasoning_model" export SUMMARIZATION_MODEL_PATH="/path/to/your/summarization_model"
- Ausführen von Inferenzskripten
Nach Abschluss der Konfiguration führen Sie das Inferenzskript zum Testen oder zur Bereitstellung aus: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
Hauptfunktionen
Die Kernfunktionalität von SimpleDeepSearcher ist die Verbesserung der Inferenz von großen Sprachmodellen durch Websuche. Im Folgenden wird detailliert beschrieben, wie die wichtigsten Funktionen funktionieren:
- Datensynthese und Erzeugung von Suchspuren
SimpleDeepSearcher generiert mehrere Runden von Inferenz-Trajektorien, indem es das Suchverhalten der Benutzer in einer realen Web-Umgebung simuliert. Benutzer können konfigurierendata_synthesis
Modul, wobei Suchbegriffe und Fragetypen angegeben werden. Das System entnimmt automatisch verschiedene Fragen aus offenen QA-Ressourcen und bezieht relevante Webinhalte über die Google-Such-API. Die generierten Daten, einschließlich der Fragen, Suchbegriffe, Webseitenergebnisse und Inferenzpfade, werden in der Datenbankcache
Ordner.
Betriebsverfahren:- Compiler
data_synthesis_config.json
die Parameter für die Stichprobenauswahl festlegen (z. B. Vielfalt der Bereiche, Komplexität der Schlüsselwörter). - in Bewegung sein
python data_synthesis.py
Erzeugen Sie erste Daten. - Sonde
cache/synthesis_data
Katalog, um eine vollständige Datengenerierung zu gewährleisten.
- Compiler
- Datenfilterung und -optimierung
Das Projekt bietet ein mehrdimensionales Antwortscreening, um die Qualität der Trainingsdaten sicherzustellen. Die Benutzer können dieresponse_curation.py
Skripte, die Daten auf der Grundlage von Kriterien wie Problemschwierigkeit, Länge des Inferenzpfads und Sucheffizienz filtern.
Betriebsverfahren:- Führen Sie den folgenden Befehl aus, um das Screening zu starten:
python response_curation.py --input_dir cache/synthesis_data --output_dir cache/curated_data
- Die gefilterten Daten werden in der Datei
cache/curated_data
bei dem nur qualitativ hochwertige Trainingsmuster zurückbehalten werden.
- Führen Sie den folgenden Befehl aus, um das Screening zu starten:
- Modellüberwachte Feinabstimmung
SimpleDeepSearcher verwendet überwachte Feinabstimmung (SFT) zur Optimierung großer Sprachmodelle. Die Benutzer müssen ein Basismodell (z. B. QWEN2.5-32B) erstellen und die gefilterten Daten für die Feinabstimmung verwenden.
Betriebsverfahren:- konfigurieren.
sft_config.json
spezifizieren Sie den Modellpfad und die Trainingsparameter (z. B. Lernrate, Stapelgröße). - Führen Sie den folgenden Befehl aus, um die Feinabstimmung zu starten:
python sft_train.py --config sft_config.json
- Nach Abschluss des Trainings werden die Modellprüfpunkte in der Datei
output/checkpoints
Katalog.
- konfigurieren.
- Begründungen und Tests
Benutzer können die Such- und Schlussfolgerungsfähigkeiten des Modells mit Hilfe von Schlussfolgerungsskripten testen. Die Inferenzergebnisse werden in deroutput/results
Katalog, einschließlich der generierten Antworten und Schlussfolgerungspfade.
Betriebsverfahren:- Konfigurieren Sie die Inferenzparameter (z. B. Name des Datensatzes, Ausgabeverzeichnis).
- Führen Sie das Inferenzskript aus (siehe die Befehle im Installationsprozess).
- auschecken
output/output.log
Überprüfen Sie die Ergebnisse der Argumentation.
Featured Function Bedienung
- Diversitätsabfrage SamplingSimpleDeepSearcher verwendet eine Diversity-Query-Sampling-Strategie, um Probleme auf der Grundlage von Domänenheterogenität, Schlüsselwortvielfalt und Komplexität der Wissenseinheiten auszuwählen. Benutzer können eine Liste von Fragen in der
query_sampling_config.json
Die Stichprobenparameter werden angepasst, um sicherzustellen, dass die generierten Fragen ein breites Spektrum an Bereichen und Schwierigkeitsgraden abdecken. - Wissensdestillation und SelbstdestillationDas Projekt generiert hochwertige Trainingsdaten unter Verwendung leistungsstarker Inferenzmodelle durch Wissensdestillationstechniken. Die Benutzer können ein leistungsfähiges, vortrainiertes Modell (z. B. LLaMA oder GPT-Familie) als Lehrermodell festlegen und die
distillation.py
Skript für die Datengenerierung. - Websuche in EchtzeitSimpleDeepSearcher unterstützt die Websuche in Echtzeit, kombiniert mit der Google-Such-API, um die neuesten Informationen dynamisch zu erhalten. Benutzer müssen sicherstellen, dass der API-Schlüssel gültig ist und überprüfen Sie die Netzwerkverbindung.
caveat
- Sicherstellung einer stabilen Netzwerkumgebung zur Unterstützung von Echtzeit-Websuchen.
- Überprüfen Sie den Modellpfad und die API-Schlüsselkonfiguration, um Laufzeitfehler zu vermeiden.
- Die Versionen der Abhängigkeitsbibliotheken werden regelmäßig aktualisiert, um die Kompatibilität zu gewährleisten.
- Der Projektcode und die Dokumentation unterliegen der MIT-Lizenz, und die Benutzer sind verpflichtet, die Quelle zu zitieren (z. B. Dissertation).
@article{sun2025simpledeepsearcher}
).
Anwendungsszenario
- akademische Forschung
SimpleDeepSearcher hilft Forschern, die Leistung von großen Sprachmodellen bei der Informationsbeschaffung zu optimieren. Zum Beispiel kann das Modell bei der Suche nach Dokumenten oder der Datenanalyse schnell auf relevante Literatur oder Datensätze zugreifen und so die Effizienz der Forschung verbessern. - Q&A Systementwicklung
Entwickler können SimpleDeepSearcher verwenden, um intelligente Q&A-Systeme zu erstellen. Das System simuliert das Suchverhalten der Nutzer und generiert präzise Antworten, wodurch es sich für Kundenservice-Bots oder Bildungsplattformen eignet. - Komplexes Problemdenken
Bei Problemen, die eine mehrstufige Argumentation erfordern (z. B. Mathematik- oder Logikprobleme), hilft SimpleDeepSearcher den Modellen, genauere Antworten zu geben, indem es Argumentationsverläufe generiert, die sich für Online-Bildungs- oder Wettbewerbsplattformen eignen.
QA
- Welche Voraussetzungen benötigt der SimpleDeepSearcher?
Die Benutzer benötigen eine Python 3.10+ Umgebung, einen Google-Such-API-Schlüssel und ein vortrainiertes großes Sprachmodell. Stellen Sie sicher, dass Sie alle abhängigen Bibliotheken installieren und den richtigen Pfad zum Modell konfigurieren. - Wie stellen Sie die Qualität der erzeugten Daten sicher?
Das Projekt bietet eine mehrdimensionale Antwortfilterung, und die Benutzer können die Filterparameter (z. B. Schwierigkeitsgrad der Frage, Länge des Inferenzpfads) anpassen, um qualitativ hochwertige Daten zu erhalten. - Werden andere Such-APIs unterstützt?
Die aktuelle Version unterstützt hauptsächlich die Google-Such-API. Benutzer können den Code ändern, um ihn an andere Suchdienste anzupassen, müssen aber die API-Aufruflogik anpassen. - Wie lange dauert die Ausbildung?
Die Trainingszeit hängt von der Modellgröße und der Datenmenge ab. Die Feinabstimmung eines QWEN2.5-32B-Modells mit 871 hochwertigen Proben dauert in der Regel mehrere Stunden (GPU-Umgebung).