Rift yang hebat telah muncul antara LLMS umum dan toko vektor yang memberi mereka informasi kontekstual. Penyatuan sistem ini merupakan langkah penting dalam landasan sistem AI dalam domain faktual yang efisien, di mana mereka digunakan tidak hanya untuk umumnya, tetapi untuk kekhususan dan keunikannya. Untuk tujuan ini, kami sangat senang untuk open source toolkit ARCEE DOMAIN DOMAIN Model Bahasa (DALM) untuk pengembang untuk membangun di atas llms domain open source domain terbuka kami (DPT). Kami percaya bahwa upaya kami akan membantu ketika kami memulai fase pemodelan bahasa berikutnya, di mana organisasi sangat menyesuaikan AI untuk beroperasi sesuai dengan kekayaan intelektual dan pandangan dunia yang unik.
Contoh kueri Dalms yang dibuat oleh tim Arcee.
| Dalm-paten | Dalm-Pubmed | Dalm-SEC | Dalm-yours |
|---|---|---|---|
Repositori ini terutama berisi kode untuk menyempurnakan arsitektur generasi augmented augmented (Rag-End2end) yang sepenuhnya diferensial .
Untuk pertama kalinya dalam literatur, kami memodifikasi model rag-end2end awal (kertas TACL, implementasi Huggingface) untuk bekerja dengan model bahasa hanya decoder seperti Llama, Falcon, atau GPT. Kami juga memasukkan konsep negatif dalam batch di samping marginalisasi kain untuk membuat seluruh proses efisien .
Di dalam folder pelatihan, Anda akan menemukan dua kode untuk melatih rag-end2end dan retriever dengan pembelajaran yang kontras.
Semua evaluasi yang terkait dengan retriever dan generator terletak di folder eval.
Selain itu, kami memiliki kode pemrosesan data dan kode pembuatan data sintetis di dalam folder Dataset.
Untuk melakukan pelatihan dan evaluasi untuk model Retriever dan model Rag-E2E baru, silakan patuhi langkah-langkah berikut.
Sistem Reqs tergantung pada model retriever, model generator, dan ukuran batch. Tetapi untuk referensi (Rag E2E), kami menggunakan yang berikut untuk percobaan kami (evaluasi hasil di bawah):
BAAI/bge-large-enmeta-llama/Llama-2-7b-hfIni memakan waktu 7 jam dengan satu GPU A100 (80GB).
Anda dapat menginstal repo ini langsung melalui pip install indomain
Atau, untuk pengembangan atau penelitian, Anda dapat mengkloning dan menginstal repo secara lokal:
git clone https://github.com/arcee-ai/DALM.git && cd DALM
pip install --upgrade -e .Ini akan menginstal repo DALM dan semua dependensi yang diperlukan.
Pastikan semuanya diinstal dengan benar dengan menjalankan dalm version . Pada Mac non-intel, Anda mungkin perlu menurunkan peringkat transformers Library: pip install transformers==4.30 .
Anda dapat menjalankan dalm qa-gen <path-to-dataset> untuk preprocess dataset Anda untuk pelatihan. Lihat dalm qa-gen --help untuk lebih banyak opsi
Jika Anda tidak memiliki dataset, Anda dapat mulai dengan kami
# Note - our dataset already has queries and answers, so you don't actually need to run this.
# replace `toy_dataset_train.csv` with your dataset of titles and passages
dalm qa-gen dalm/datasets/toy_data_train.csvPassage , Query (dan Answer jika menjalankan e2e). Anda dapat menggunakan skrip question_answer_generation.py untuk menghasilkan CSV ini.BAAI/bge-large-en sebagai retriever default dan menggunakan meta-llama/Llama-2-7b-hf sebagai generator default. Kode ini dirancang agar kompatibel dengan model embedding atau model autoregresif yang tersedia di repositori model pemeluk wajah di https://huggingface.co/models. Anda dapat memanfaatkan skrip kami secara langsung jika Anda mau, atau Anda dapat menggunakan dalm CLI. Argumen untuk keduanya identik
Latih BAAI/bge-large-en Retriever dengan pembelajaran kontras.
python dalm/training/retriever_only/train_retriever_only.py
--dataset_path " ./dalm/datasets/toy_data_train.csv "
--retriever_name_or_path " BAAI/bge-large-en "
--output_dir " retriever_only_checkpoints "
--use_peft
--with_tracking
--report_to all
--per_device_train_batch_size 150atau
dalm train-retriever-only " BAAI/bge-large-en " " ./dalm/datasets/toy_data_train.csv "
--output-dir " retriever_only_checkpoints "
--use-peft
--with-tracking
--report-to all
--per-device-train-batch-size 150 Untuk semua argumen dan opsi yang tersedia, lihat dalm train-retriever-only --help
Latih generator Llama-2-7b bersama dengan model retriever BAAI/bge-large-en .
python dalm/training/rag_e2e/train_rage2e.py
--dataset_path " ./dalm/datasets/toy_data_train.csv "
--retriever_name_or_path " BAAI/bge-large-en "
--generator_name_or_path " meta-llama/Llama-2-7b-hf "
--output_dir " rag_e2e_checkpoints "
--with_tracking
--report_to all
--per_device_train_batch_size 20atau
dalm train-rag-e2e
" ./dalm/datasets/toy_data_train.csv "
" BAAI/bge-large-en "
" meta-llama/Llama-2-7b-hf "
--output-dir " rag_e2e_checkpoints "
--with-tracking
--report-to all
--per-device-train-batch-size 20 Untuk semua argumen dan opsi yang tersedia, lihat dalm train-rag-e2e --help
Retriever secara umum dilatih untuk pandai menemukan bagian -bagian yang paling relevan dalam sebuah korpus yang diberikan kueri.
Diberikan dataset uji kebenaran tanah yang merupakan CSV 200.000 yang mengandung abstrak paten dan yang lebih penting adalah dataset evaluasi ini tidak ada dalam dataset pelatihan, langkah-langkah yang terdaftar di bawah ini diikuti:
recall dan hit rate . | Jenis retriever | Mengingat | Tarif hit |
|---|---|---|
| Retriever polos | 0.45984 | 0.45984 |
| Retriever dengan pembelajaran kontras | 0.46037 | 0.46038 |
| Retriever end2end | 0.73634 | 0.73634 |
Untuk menjalankan Retriever Only Eval (pastikan Anda memiliki pos pemeriksaan di root proyek)
python dalm/eval/eval_retriever_only.py
--dataset_path qa_pairs_test.csv
--retriever_name_or_path " BAAI/bge-large-en "
--passage_column_name Abstract
--query_column_name Question
--retriever_peft_model_path retriever_only_checkpointsatau
dalm eval-retriever qa_pairs_test.csv
--retriever-name-or-path " BAAI/bge-large-en "
--passage-column-name Abstract
--query-column-name Question
--retriever-peft-model-path retriever_only_checkpoints Lihat dalm eval-retriever --help untuk semua argumen yang tersedia
Untuk eval e2e
python dalm/eval/eval_rag.py
--dataset_path qa_pairs_test_2.csv
--retriever_name_or_path " BAAI/bge-large-en "
--generator_name_or_path " meta-llama/Llama-2-7b-hf "
--passage_column_name Abstract
--query_column_name Question
--answer_column_name Answer
--evaluate_generator
--query_batch_size 5
--retriever_peft_model_path rag_e2e_checkpoints/retriever
--generator_peft_model_path rag_e2e_checkpoints/generatoratau
dalm eval-rag qa_pairs_test.csv
--retriever-name-or-path " BAAI/bge-large-en "
--generator-name-or-path " meta-llama/Llama-2-7b-hf "
--retriever-peft-model-path rag_e2e_checkpoints/retriever
--generator-peft-model-path rag_e2e_checkpoints/generator
--passage-column-name Abstract
--query-column-name Question
--answer-column-name Answer
--query-batch-size 5 Lihat dalm eval-rag --help untuk semua argumen yang tersedia
Lihat Kontribusi