RAGLAB: Kerangka Kerja Terpadu Modular dan Berorientasi Penelitian untuk Generasi Augmented Pengambilan
RAGLAB adalah kerangka kerja sumber terbuka modular dan berorientasi penelitian untuk algoritma Retrieval-Augmented Generation (RAG). Ini menawarkan reproduksi 6 algoritma RAG yang ada dan sistem evaluasi komprehensif dengan 10 set data benchmark, memungkinkan perbandingan yang adil antara algoritma RAG dan perluasan yang mudah untuk pengembangan algoritma, set data, dan metrik evaluasi baru yang efisien.
2024.10.6: Makalah kami telah diterima oleh Demonstrasi Sistem EMNLP 2024.? Anda dapat menemukan makalah kami di RAGLAB.
9.9.2024: RAGLAB telah menjadikan semua file log dan file evaluasi dalam hasil evaluasi menjadi sumber terbuka?
20.8.2024: RAGLAB memiliki 4 model sumber terbuka?: llama3-8B-baseline selfrag-llama3-8b llama3-70B-adaptor selfrag-llama3-70B-adaptor
2024.8.6: RAGLAB dirilis?.
Ekosistem RAG Komprehensif: Mendukung keseluruhan alur RAG mulai dari pengumpulan data dan pelatihan hingga evaluasi otomatis.
Implementasi Algoritma Tingkat Lanjut: Mereproduksi 6 algoritma RAG yang canggih, dengan kerangka kerja yang mudah diperluas untuk mengembangkan algoritma baru.
Mode Interaksi & Mode Evaluasi: Mode Interaksi dirancang khusus untuk memahami algoritma dengan cepat. Mode Evaluasi dirancang khusus untuk mereproduksi hasil makalah dan penelitian ilmiah.
Platform Perbandingan yang Adil: Memberikan hasil benchmark untuk 6 algoritma di 5 jenis tugas dan 10 kumpulan data.
Klien Retriever yang Efisien: Menawarkan API lokal untuk akses paralel dan caching, dengan latensi rata-rata di bawah 1 detik.
Dukungan Generator Serbaguna: Kompatibel dengan model 70B+, VLLM, dan teknik kuantisasi.
Lab Instruksi Fleksibel: Templat instruksi yang dapat disesuaikan untuk berbagai skenario RAG.
Aplikasi RAG yang menarik
Survei otomatis
lingkungan pengembang:pytorch:2.0.1-py3.10-cuda11.8.0-devel-ubuntu22.04
instal miniconda
git mengkloning RAGLAB
https://github.com/fate-ubw/RAGLAB.git
buat lingkungan dari file yml
cd RAGLAB conda env buat -f lingkungan.yml
instal flash-attn, en_core_web_sm, punkt secara manual
pip instal flash-attn==2.2 python -m unduhan spacy en_core_web_sm python -m nltk.pengunduh punkt
cd RAGLAB model mkdir model cd mkdir output_models# retriever modelmkdir colbertv2.0 unduh huggingface-cli colbert-ir/colbertv2.0 --local-dir colbertv2.0/ --local-dir-use-symlinks Salah mkdir contriever-msmarco unduh huggingface-cli facebook/contriever-msmarco --local-dir contriever-msmarco/ --local-dir-use-symlinks False# generator yang disempurnakan# 8B modelmkdir Llama3-8B-baseline unduh huggingface-cli RAGLAB/Llama3-8B-baseline --local-dir Llama3-8B-baseline/ --local-dir-use-symlinks Salah mkdir selfrag_llama3_8b-epoch_0_1 Huggingface-cli unduh RAGLAB/selfrag_llama3-8B --local-dir selfrag_llama3_8b-epoch_0_1/ --local-dir-use-symlinks False# 70B modelmkdir Llama3-70B-baseline-adapter unduh huggingface-cli RAGLAB/Llama3-70B-baseline-adapter --local-dir Llama3-70B-baseline-adapter/ --local-dir-use-symlinks Salah mkdir selfrag_llama3_70B-adaptor pelukanface-cli unduh RAGLAB/selfrag_llama3-70B-adapter --local-dir selfrag_llama3_70B-adapter/ --local-dir-use-symlinks Salah mkdir Meta-Llama-3-70B unduh huggingface-cli meta-llama/Meta-Llama-3-70B --local-dir Meta-Llama-3-70B/ --local-dir-use-symlinks False# model dasar untuk finetune dan LoRAmkdir Meta-Llama-3 -8B unduhan huggingface-cli meta-llama/Meta-Llama-3-8B --local-dir Meta-Llama-3-8B/ --local-dir-use-symlinks False# ALCE Metric Modelsmkdir gpt2-large unduhan huggingface-cli openai-community/gpt2-large --local-dir gpt2-large/ --local-dir-use-symlinks Salah mkdir roberta-skuad besar unduhan huggingface-cli gaotianyu1350/roberta-large-squad --local-dir roberta-large-squad/ --local-dir-use-symlinks Salah mkdir t5_xxl_true_nli_mixture huggingface-cli unduh google/t5_xxl_true_nli_mixture --local-dir t5_xxl_true_nli_mixture/ --local-dir-use-symlinks False# model factcore kami menggunakan gpt3.5 untuk evaluasi, jadi tidak perlu mengunduh model lokal# model dari selfrag repomkdir selfrag_llama2_7b resmi unduh huggingface-cli selfrag/selfrag_llama2_7b --local-dir selfrag_llama2_7b/ --local-dir-use-symlinks False# Anda dapat mengunduh model lain sebagai generator dari huggingface
Jika Anda hanya perlu memahami cara kerja berbagai algoritma, mode interaksi yang dikembangkan oleh RAGLAB dapat memenuhi kebutuhan Anda.
Jika Anda ingin mereproduksi hasil makalah, Anda perlu mengunduh semua data yang diperlukan dari Hugging Face, termasuk data pelatihan, data pengetahuan, dan data evaluasi. Semua data telah kami kemas untuk Anda, jadi Anda hanya perlu mendownloadnya dan siap digunakan.
cd RAGLAB pelukanface-cli unduh RAGLAB/data --local-dir data --kumpulan data tipe repo
Mode Interaksi dirancang khusus untuk memahami algoritma dengan cepat. Dalam mode interaksi, Anda dapat menjalankan berbagai algoritme dengan sangat cepat, memahami proses penalaran berbagai algoritme, tanpa perlu mengunduh data tambahan apa pun.
Semua algoritma yang terintegrasi dalam raglab mencakup dua mode: interact
dan evaluation
. Tahap tes mendemonstrasikan dalam mode interact
, hanya untuk demostrasi dan eduksi?.
Catatan
Karena persyaratan colbert untuk jalur absolut, Anda perlu mengubah index_dbPath dan text_dbPath di file konfigurasi untuk menggunakan jalur absolut.
Ubah index_dbPath
dan text_dbPath
di file konfigurasi: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
jalankan server Colbert
cd RAGLAB lalu jalankan/colbert_server/colbert_server-10samples.sh
Catatan
Pada titik ini, penyematan colbert akan meminta bahwa karena kesalahan jalur, penyematan colbert perlu diproses ulang. Silakan masukkan yes
dan kemudian raglab akan secara otomatis membantu Anda memproses penyematan dan memulai server colbert.
Sekarang silahkan buka terminal lain dan coba request ke server colbert
cd RAGLAB lalu jalankan/colbert_server/ask_api.sh
Jika hasilnya dikembalikan, berarti server colbert telah berhasil dimulai! ?
jalankan selfrag (bentuk pendek & pengambilan adaptif) uji mode interaksi penyematan 10 sampel
cd RAGLAB jalankan/rag_inference/3-selfrag_reproduction-interact-short_form-adaptive_retrieval.sh
Selamat!!!Sekarang Anda sudah tahu cara menjalankan raglab?
Di raglab, setiap algoritme memiliki 10 kueri bawaan dalam mode interaksi yang diambil sampelnya dari tolok ukur berbeda
Catatan
ingat unduh database dan model pengetahuan wiki2018 sebelum menjalankan hasil makalah
Karena persyaratan Colbert untuk jalur absolut, Anda perlu memodifikasi index_dbPath
dan text_dbPath
di file konfigurasi dan memproses database penyematan wiki2018
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# ubah jalur root, parameter lain tidak perlu diubah"collection": "/{your_root_path}/RAGLAB/data/retrieval/colbertv2. 0_passages/wiki2018/wiki2018.tsv","eksperimen": "/{your_root_path}/RAGLAB/data/retrieval/colbertv2.0_embedding/wiki2018",
Ubah jalur absolut yang terikat pada file sumber penyematan wiki2018
Ubah jalur di file konfigurasi
Perhatian: colbert_server memerlukan ram minimal 60GB
cd RAGLAB lalu jalankan/colbert_server/colbert_server.sh
buka terminal lain, uji server ColBERT Anda
cd RAGLAB lalu jalankan/colbert_server/ask_api.sh
Server ColBERT berhasil dimulai!!! ?
Eksperimen inferensi memerlukan menjalankan ratusan skrip secara paralel, penjadwal GPU otomatis perlu digunakan untuk mengalokasikan GPU secara otomatis untuk skrip bash yang berbeda secara Paralel.
instal simple_gpu_scheduler
pip instal simple_gpu_scheduler
menjalankan ratusan eksperimen dalam satu baris?
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# Skrip lain dapat dijalankan menggunakan metode yang sama
bagaimana cara menulis skrip_Anda.txt?
# auto_inference_selfreg-7b.txtsh run/rag_inference/selfrag_reproduction/selfrag_reproduction-evaluation-short_form-PubHealth-adaptive_retrieval-pregiven_passages.sh jalankan/rag_inference/selfrag_reproduction/selfrag_reproduction-evaluation-short_form-PubHealth-always_retrieval-pregiven_passages.sh
ini sebuah contoh
RAGLAB mencakup 3 metode evaluasi klasik: akurasi, F1, dan EM (Exact Match). Ketiga metode ini mudah dihitung, sehingga dapat dihitung secara dinamis selama proses inferensi. Namun, ALCE dan Factscore, dua metrik tingkat lanjut, memerlukan penyelesaian proses inferensi sebelum evaluasi.
ALCE : RAGLAB telah mengintegrasikan repositori ALCE ke dalam RAGLAB. Anda hanya perlu mengatur jalur untuk hasil inferensi di file konfigurasi.
cd RAGLABcd run/ALCE/# Ubah jalur di setiap file sh untuk file yang dihasilkan inferensi# Misalnya:# python ./ALCE/eval.py --f './data/eval_results/ASQA/{your_input_file_path}.jsonl' # --ungu muda # --qasimple_gpu_scheduler --gpus 0,1,2,3,4,5,6,7 < auto_gpu_scheduling_scripts/auto_eval_ALCE.txt
Hasil evaluasi akan berada pada direktori yang sama dengan file masukan, dengan akhiran nama file .score
Factscore : Lingkungan Factscore memerlukan instalasi torch 1.13.1
, yang bertentangan dengan versi flash-attn yang diperlukan dalam modul pelatihan dan inferensi RAGLAB. Oleh karena itu, RAGLAB saat ini tidak dapat mengintegrasikan lingkungan Factscore, sehingga pengguna perlu menginstal lingkungan Factscore secara terpisah untuk evaluasi.
Setelah menginstal lingkungan Factscore, harap ubah jalur hasil inferensi di file bash
cd RAGLAB/run/Factscore/# ubah jalur di setiap file sh untuk file yang dihasilkan inferensi# Misalnya:# python ./FActScore/factscore/factscorer.py # --input_path './data/eval_results/Factscore/{your_input_file_path }.jsonl' # --model_name "pengambilan+ObrolanGPT"# --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
Hasil evaluasi akan berada pada direktori yang sama dengan file masukan, dengan akhiran nama file _factscore_output.json
Catatan
Selama proses evaluasi Factscore, kami menggunakan GPT-3.5 sebagai model evaluasi, sehingga tidak perlu mendownload model lokal. Jika Anda perlu menggunakan model lokal untuk mengevaluasi Factscore, silakan merujuk ke Factscore
Jika Anda ingin memproses sendiri database pengetahuan, silakan lihat langkah-langkah berikut. RAGLAB telah mengunggah database pengetahuan yang telah diproses ke Hugging Face
dokumen: process_wiki.md
Bagian ini mencakup proses pelatihan model di RAGLAB. Anda dapat mengunduh semua model terlatih dari HuggingFace?, atau menggunakan tutorial di bawah untuk berlatih dari awal.
Semua data menyediakan semua data yang diperlukan untuk penyesuaian.
dokumen: train_docs.md
Jika Anda merasa repositori ini bermanfaat, harap kutip karya kami.
@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 dilisensikan di bawah Lisensi MIT.