RAGLAB: Ein modulares und forschungsorientiertes einheitliches Framework für die Retrieval-Augmented Generation
RAGLAB ist ein modulares, forschungsorientiertes Open-Source-Framework für Retrieval-Augmented Generation (RAG)-Algorithmen. Es bietet Reproduktionen von 6 vorhandenen RAG-Algorithmen und ein umfassendes Bewertungssystem mit 10 Benchmark-Datensätzen, was faire Vergleiche zwischen RAG-Algorithmen und eine einfache Erweiterung für die effiziente Entwicklung neuer Algorithmen, Datensätze und Bewertungsmetriken ermöglicht.
2024.10.6: Unser Beitrag wurde von EMNLP 2024 System Demonstration angenommen.? Sie finden unser Papier in RAGLAB.
2024.9.9: Hat RAGLAB alle Protokolldateien und Auswertungsdateien in den Auswertungsergebnissen als Open-Source-Lösung bereitgestellt?
20.8.2024: RAGLAB hat 4 Open-Source-Modelle?: llama3-8B-baseline selfrag-llama3-8b llama3-70B-adaptor selfrag-llama3-70B-adaptor
2024.8.6: RAGLAB wird veröffentlicht?.
Umfassendes RAG-Ökosystem: Unterstützt die gesamte RAG-Pipeline von der Datenerfassung und Schulung bis zur automatischen Bewertung.
Erweiterte Algorithmenimplementierungen: Reproduziert 6 hochmoderne RAG-Algorithmen mit einem einfach zu erweiternden Framework für die Entwicklung neuer Algorithmen.
Interaktionsmodus und Bewertungsmodus: Der Interaktionsmodus wurde speziell für das schnelle Verständnis von Algorithmen entwickelt. Der Bewertungsmodus ist speziell für die Reproduktion von Papierergebnissen und wissenschaftlicher Forschung konzipiert.
Faire Vergleichsplattform: Bietet Benchmark-Ergebnisse für 6 Algorithmen für 5 Aufgabentypen und 10 Datensätze.
Effizienter Retriever-Client: Bietet eine lokale API für parallelen Zugriff und Caching mit einer durchschnittlichen Latenz von weniger als 1 Sekunde.
Vielseitige Generatorunterstützung: Kompatibel mit 70B+-Modellen, VLLM und Quantisierungstechniken.
Flexibles Unterrichtslabor: Anpassbare Unterrichtsvorlagen für verschiedene RAG-Szenarien.
Interessante RAG-Anwendungen
Automatische Umfrage
Entwicklungsumgebung: pytorch:2.0.1-py3.10-cuda11.8.0-devel-ubuntu22.04
Miniconda installieren
Git-Klon RAGLAB
https://github.com/fate-ubw/RAGLAB.git
Erstellen Sie eine Umgebung aus einer YML-Datei
CD RAGLAB conda env create -f ambient.yml
Installieren Sie flash-attn, en_core_web_sm, punkt manuell
pip install flash-attn==2.2 python -m spacy herunterladen en_core_web_sm python -m nltk.downloader Punkt
CD RAGLAB mkdir modelcd-Modell mkdir output_models# Retriever modelmkdir colbertv2.0 Huggingface-cli herunterladen colbert-ir/colbertv2.0 --local-dir colbertv2.0/ --local-dir-use-symlinks Falsch mkdir contriever-msmarco Huggingface-cli herunterladen facebook/contriever-msmarco --local-dir contriever-msmarco/ --local-dir-use-symlinks False# fein abgestimmter Generator# 8B modelmkdir Llama3-8B-baseline Huggingface-cli herunterladen RAGLAB/Llama3-8B-baseline --local-dir Llama3-8B-baseline/ --local-dir-use-symlinks Falsch mkdir selfrag_llama3_8b-epoch_0_1 Huggingface-cli herunterladen RAGLAB/selfrag_llama3-8B --local-dir selfrag_llama3_8b-epoch_0_1/ --local-dir-use-symlinks False# 70B modelmkdir Llama3-70B-baseline-adapter Huggingface-cli herunterladen RAGLAB/Llama3-70B-baseline-adapter --local-dir Llama3-70B-baseline-adapter/ --local-dir-use-symlinks Falsch mkdir selfrag_llama3_70B-adapter Huggingface-cli herunterladen RAGLAB/selfrag_llama3-70B-adapter --local-dir selfrag_llama3_70B-adapter/ --local-dir-use-symlinks Falsch mkdir Meta-Llama-3-70B Huggingface-cli download meta-llama/Meta-Llama-3-70B --local-dir Meta-Llama-3-70B/ --local-dir-use-symlinks False# Basismodell für Finetune und LoRAmkdir Meta-Llama-3 -8B Huggingface-cli download meta-llama/Meta-Llama-3-8B --local-dir Meta-Llama-3-8B/ --local-dir-use-symlinks False# ALCE Metric Modelsmkdir gpt2-large Huggingface-cli herunterladen openai-community/gpt2-large --local-dir gpt2-large/ --local-dir-use-symlinks Falsch mkdir roberta-large-squad Huggingface-cli herunterladen gaotianyu1350/roberta-large-squad --local-dir roberta-large-squad/ --local-dir-use-symlinks Falsch mkdir t5_xxl_true_nli_mixture Huggingface-Cli herunterladen google/t5_xxl_true_nli_mixture --local-dir t5_xxl_true_nli_mixture/ --local-dir-use-symlinks False# Factscore-Modell Wir verwenden gpt3.5 zur Auswertung, daher ist es nicht erforderlich, lokale Modelle# Modelle vom offiziellen Selfrag-Repomkdir selfrag_llama2_7b herunterzuladen Huggingface-cli download selfrag/selfrag_llama2_7b --local-dir selfrag_llama2_7b/ --local-dir-use-symlinks False# Sie können andere Modelle als Generator von Huggingface herunterladen
Wenn Sie nur verstehen müssen, wie verschiedene Algorithmen funktionieren, kann der von RAGLAB entwickelte Interaktionsmodus Ihren Anforderungen gerecht werden.
Wenn Sie die Ergebnisse der Arbeiten reproduzieren möchten, müssen Sie alle erforderlichen Daten von Hugging Face herunterladen, einschließlich Trainingsdaten, Wissensdaten und Bewertungsdaten. Wir haben alle Daten für Sie gepackt, Sie müssen sie also nur noch herunterladen und schon ist sie einsatzbereit.
CD RAGLAB Huggingface-cli lädt RAGLAB/data --local-dir data --repo-type dataset herunter
Der Interaktionsmodus wurde speziell für das schnelle Verständnis von Algorithmen entwickelt. Im Interaktionsmodus können Sie verschiedene Algorithmen sehr schnell ausführen und den Argumentationsprozess verschiedener Algorithmen verstehen, ohne zusätzliche Daten herunterladen zu müssen.
Alle in Raglab integrierten Algorithmen umfassen zwei Modi: interact
und evaluation
. Die Testphase wird im interact
demonstriert, nur zur Demonstration und Schulung?
Notiz
Aufgrund der Anforderung von Colbert nach absoluten Pfaden müssen Sie index_dbPath und text_dbPath in der Konfigurationsdatei ändern, um absolute Pfade zu verwenden.
Ändern Sie index_dbPath
und text_dbPath
in der Konfigurationsdatei:colbert_server-10samples.yaml
index_dbPath: /your_root_path/RAGLAB/data/retrieval/colbertv2.0_embedding/wiki2023-10samples text_dbPath: /your_root_path/RAGLAB/data/retrieval/colbertv2.0_passages/wiki2023-10samples/enwiki-20230401-10samples.tsv
Führen Sie den Colbert-Server aus
CD RAGLAB sh run/colbert_server/colbert_server-10samples.sh
Notiz
An diesem Punkt weist die Colbert-Einbettung darauf hin, dass die Colbert-Einbettung aufgrund von Pfadfehlern erneut verarbeitet werden muss. Bitte geben Sie yes
ein und dann hilft Ihnen Raglab automatisch bei der Einbettung und beim Starten des Colbert-Servers.
Öffnen Sie nun bitte ein anderes Terminal und versuchen Sie, den Colbert-Server anzufordern
CD RAGLAB sh run/colbert_server/ask_api.sh
Wenn ein Ergebnis zurückgegeben wird, bedeutet dies, dass der Colbert-Server erfolgreich gestartet wurde! ?
Ausführen von Selfrag (Kurzform und adaptiver Abruf), Interaktionsmodustest, 10-Proben-Einbettung
CD RAGLAB sh run/rag_inference/3-selfrag_reproduktion-interact-short_form-adaptive_retrieval.sh
Herzlichen Glückwunsch!!!Jetzt wissen Sie bereits, wie man Raglab betreibt?
In Raglab verfügt jeder Algorithmus über 10 integrierte Abfragen im Interaktionsmodus, die aus verschiedenen Benchmarks entnommen werden
Notiz
Denken Sie daran, die Wissensdatenbank und das Modell von Wiki2018 herunterzuladen, bevor Sie die Papierergebnisse ausführen
Aufgrund der Forderung von Colbert nach absoluten Pfaden müssen Sie index_dbPath
und text_dbPath
in der Konfigurationsdatei ändern und die wiki2018-Einbettungsdatenbank verarbeiten
cd RAGLAB/config/colbert_server vim colbert_server.yaml index_dbPath: {your_root_path}/RAGLAB/data/retrieval/colbertv2.0_embedding/wiki2018 text_dbPath: {your_root_path}/RAGLAB/data/retrieval/colbertv2.0_passages/wiki2018/wiki2018.tsv
vim /data/retrieval/colbertv2.0_embedding/wiki2018/indexes/wiki2018/metadata.json# Stammpfad ändern, andere Parameter müssen nicht geändert werden"collection": "/{your_root_path}/RAGLAB/data/retrieval/colbertv2. 0_passages/wiki2018/wiki2018.tsv","experiment": „/{your_root_path}/RAGLAB/data/retrieval/colbertv2.0_embedding/wiki2018“,
Ändern Sie die absoluten Pfade, die in der wiki2018-Einbettungsquelldatei gebunden sind
Ändern Sie die Pfade in der Konfigurationsdatei
Achtung: colbert_server benötigt mindestens 60 GB RAM
CD RAGLAB sh run/colbert_server/colbert_server.sh
Öffnen Sie ein anderes Terminal und testen Sie Ihren ColBERT-Server
CD RAGLAB sh run/colbert_server/ask_api.sh
ColBERT-Server erfolgreich gestartet!!! ?
Inferenzexperimente erfordern die parallele Ausführung von Hunderten von Skripten. Der automatische GPU-Planer muss verwendet werden, um GPUs automatisch für verschiedene Bash-Skripte parallel zuzuweisen.
installiere simple_gpu_scheduler
pip install simple_gpu_scheduler
Hunderte von Experimenten in einer Zeile ausführen?
CD RAGLAB simple_gpu_scheduler --gpus 0,1,2,3,4,5,6,7 < auto_gpu_scheduling_scripts/auto_run-llama3_8b-baseline-scripts.txt# Andere Skripte können mit derselben Methode ausgeführt werden
Wie schreibe ich your_script.txt?
# auto_inference_selfreg-7b.txtsh run/rag_inference/selfrag_reproduktion/selfrag_reproduktion-evaluation-short_form-PubHealth-adaptive_retrieval-pregiven_passages.sh sh run/rag_inference/selfrag_reproduktion/selfrag_reproduktion-evaluation-short_form-PubHealth-always_retrieval-pregiven_passages.sh
Hier ist ein Beispiel
RAGLAB umfasst drei klassische Bewertungsmethoden: Genauigkeit, F1 und EM (Exact Match). Diese drei Methoden sind einfach zu berechnen, sodass sie während des Inferenzprozesses dynamisch berechnet werden können. Allerdings erfordern ALCE und Factscore, zwei fortgeschrittene Metriken, den Abschluss des Inferenzprozesses vor der Auswertung.
ALCE : RAGLAB hat das ALCE-Repository in RAGLAB integriert. Sie müssen lediglich den Pfad für die Inferenzergebnisse in der Konfigurationsdatei festlegen.
cd RAGLABcd run/ALCE/# Ändern Sie den Pfad in jeder SH-Datei für die durch die Inferenz generierten Dateien# Zum Beispiel:# python ./ALCE/eval.py --f './data/eval_results/ASQA/{your_input_file_path}.jsonl' # --mauve # --qasimple_gpu_scheduler --gpus 0,1,2,3,4,5,6,7 < auto_gpu_scheduling_scripts/auto_eval_ALCE.txt
Die Auswertungsergebnisse befinden sich im selben Verzeichnis wie die Eingabedatei, mit dem Dateinamensuffix .score
Factscore : Die Factscore-Umgebung erfordert die Installation von torch 1.13.1
, was im Widerspruch zur Flash-Attn-Version steht, die in den Trainings- und Inferenzmodulen von RAGLAB benötigt wird. Daher kann RAGLAB die Factscore-Umgebung derzeit nicht integrieren, sodass Benutzer die Factscore-Umgebung zur Auswertung separat installieren müssen.
Ändern Sie nach der Installation der Factscore-Umgebung bitte den Pfad der Inferenzergebnisse in der Bash-Datei
cd RAGLAB/run/Factscore/# Ändern Sie den Pfad in jeder SH-Datei für die von der Inferenz generierten Dateien# Zum Beispiel:# python ./FActScore/factscore/factscorer.py # --input_path './data/eval_results/Factscore/{your_input_file_path }.jsonl' # --model_name "retrieval+ChatGPT"# --openai_key ./api_keys.txt # --data_dir ./data/retrieval/colbertv2.0_passages/wiki2023 # --verbosesimple_gpu_scheduler --gpus 0,1,2,3,4,5,6,7 < auto_gpu_scheduling_scripts/auto_eval_Factscore.txt
Die Auswertungsergebnisse befinden sich im selben Verzeichnis wie die Eingabedatei mit dem Dateinamensuffix _factscore_output.json
Notiz
Während des Factscore-Evaluierungsprozesses haben wir GPT-3.5 als Evaluierungsmodell verwendet, sodass kein lokales Modell heruntergeladen werden muss. Wenn Sie zur Bewertung von Factscore ein lokales Modell verwenden müssen, lesen Sie bitte Factscore
Wenn Sie die Wissensdatenbank selbst bearbeiten möchten, beachten Sie bitte die folgenden Schritte. RAGLAB hat die verarbeitete Wissensdatenbank bereits auf Hugging Face hochgeladen
Dokument: process_wiki.md
In diesem Abschnitt wird der Prozess des Trainierens von Modellen in RAGLAB behandelt. Sie können entweder alle vorab trainierten Modelle von HuggingFace? herunterladen oder das Tutorial unten verwenden, um von Grund auf zu trainieren.
Alle Daten liefern alle für die Feinabstimmung notwendigen Daten.
Dokument: train_docs.md
Wenn Sie dieses Repository nützlich finden, zitieren Sie bitte unsere Arbeit.
@inproceedings{zhang-etal-2024-raglab, title = "{RAGLAB}: A Modular and Research-Oriented Unified Framework for Retrieval-Augmented Generation", author = "Zhang, Xuanwang and Song, Yunze and Wang, Yidong and Tang, Shuyun and others", booktitle = "Proceedings of the 2024 Conference on Empirical Methods in Natural Language Processing: System Demonstrations", month = dec, year = "2024", publisher = "Association for Computational Linguistics", }
RAGLAB ist unter der MIT-Lizenz lizenziert.