RAGLAB: إطار موحد معياري موجه نحو البحث من أجل توليد الاسترجاع المعزز
RAGLAB هو إطار عمل معياري مفتوح المصدر موجه نحو البحث لخوارزميات توليد الاسترجاع المعزز (RAG). وهو يقدم نسخًا من 6 خوارزميات RAG الحالية ونظام تقييم شامل مع 10 مجموعات بيانات مرجعية، مما يتيح إجراء مقارنات عادلة بين خوارزميات RAG والتوسع السهل للتطوير الفعال للخوارزميات الجديدة ومجموعات البيانات ومقاييس التقييم.
2024.10.6: تم قبول ورقتنا من قبل عرض نظام EMNLP 2024.؟ يمكنك العثور على ورقتنا في RAGLAB.
2024.9.9: هل قام RAGLAB بفتح جميع ملفات السجل وملفات التقييم في نتائج التقييم؟
2024.8.20: لدى RAGLAB 4 نماذج مفتوحة المصدر؟: llama3-8B-baseline selfrag-llama3-8b llama3-70B-adaptor selfrag-llama3-70B-adaptor
2024.8.6: إطلاق RAGLAB؟.
نظام RAG البيئي الشامل: يدعم خط أنابيب RAG بالكامل بدءًا من جمع البيانات والتدريب وحتى التقييم التلقائي.
تطبيقات الخوارزميات المتقدمة: إعادة إنتاج 6 خوارزميات RAG متطورة، مع إطار عمل سهل التوسيع لتطوير خوارزميات جديدة.
وضع التفاعل ووضع التقييم: تم تصميم وضع التفاعل خصيصًا لفهم الخوارزميات بسرعة. تم تصميم وضع التقييم خصيصًا لإعادة إنتاج النتائج الورقية والبحث العلمي.
منصة المقارنة العادلة: توفر نتائج قياسية لستة خوارزميات عبر 5 أنواع مهام و10 مجموعات بيانات.
عميل المسترد الفعال: يوفر واجهة برمجة تطبيقات محلية للوصول المتوازي والتخزين المؤقت، بمتوسط زمن وصول أقل من ثانية واحدة.
دعم المولدات متعددة الاستخدامات: متوافق مع نماذج 70B+ وVLLM وتقنيات القياس الكمي.
معمل التعليمات المرنة: قوالب تعليمات قابلة للتخصيص لسيناريوهات RAG المختلفة.
تطبيقات RAG مثيرة للاهتمام
المسح التلقائي
بيئة التطوير: pytorch:2.0.1-py3.10-cuda11.8.0-devel-ubuntu22.04
قم بتثبيت miniconda
بوابة استنساخ RAGLAB
https://github.com/fate-ubw/RAGLAB.git
إنشاء بيئة من ملف yml
سي دي رجب conda env create -f بيئة.yml
قم بتثبيت flash-attn وen_core_web_sm وpunkt يدويًا
تثبيت النقطة flash-attn==2.2 python -m spacey تنزيل en_core_web_sm بايثون -m nltk.downloader punkt
سي دي رجب نموذج mkdir نموذج cd mkdirput_models# نموذج المستردmkdir colbertv2.0 Huggingface-cli تنزيل colbert-ir/colbertv2.0 --local-dir colbertv2.0/ --local-dir-use-symlinks False mkdir contriever-msmarco Huggingface-cli تنزيل facebook/contriever-msmarco --local-dir contriever-msmarco/ --local-dir-use-symlinks False# Finetuned generator# 8B modelmkdir Llama3-8B-baseline Huggingface-cli تنزيل RAGLAB/Llama3-8B-baseline --local-dir Llama3-8B-baseline/ --local-dir-use-symlinks False mkdir selfrag_llama3_8b-epoch_0_1 Huggingface-cli تنزيل 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 تنزيل RAGLAB/Llama3-70B-baseline-adapter --local-dir Llama3-70B-baseline-adapter/ --local-dir-use-symlinks False mkdir selfrag_llama3_70B-adapter Huggingface-cli تنزيل RAGLAB/selfrag_llama3-70B-adapter --local-dir selfrag_llama3_70B-adapter/ --local-dir-use-symlinks False مكدير ميتا اللاما-3-70B Huggingface-cli تنزيل meta-llama/Meta-Llama-3-70B --local-dir Meta-Llama-3-70B/ --local-dir-use-symlinks False# النموذج الأساسي للضبط الدقيق وLoRAmkdir Meta-Llama-3 -8ب Huggingface-cli تنزيل meta-llama/Meta-Llama-3-8B --local-dir Meta-Llama-3-8B/ --local-dir-use-symlinks False# ALCE Metric Modelsmkdir gpt2-large Huggingface-cli تنزيل openai-community/gpt2-large --local-dir gpt2-large/ --local-dir-use-symlinks False مكدير روبرتا-فرقة كبيرة Huggingface-cli تنزيل gaotianyu1350/roberta-large-squad --local-dir roberta-large-squad/ --local-dir-use-symlinks False mkdir t5_xxl_true_nli_mixture Huggingface-cli تنزيل google/t5_xxl_true_nli_mixture --local-dir t5_xxl_true_nli_mixture/ --local-dir-use-symlinks False# نموذج Factscore نستخدم gpt3.5 للتقييم، لذا لا داعي لتنزيل النماذج المحلية # النماذج من selfrag repomkdir selfrag_llama2_7b Huggingface-cli تنزيل selfrag/selfrag_llama2_7b --local-dir selfrag_llama2_7b/ --local-dir-use-symlinks False# يمكنك تنزيل نموذج آخر كمولد من Huggingface
إذا كنت تحتاج فقط إلى فهم كيفية عمل الخوارزميات المختلفة، فإن وضع التفاعل الذي طورته RAGLAB يمكن أن يلبي احتياجاتك.
إذا كنت ترغب في إعادة إنتاج النتائج من الأوراق، فأنت بحاجة إلى تنزيل جميع البيانات المطلوبة من Hugging Face، بما في ذلك بيانات التدريب وبيانات المعرفة وبيانات التقييم. لقد قمنا بتجميع جميع البيانات من أجلك، لذلك كل ما عليك فعله هو تنزيلها وهي جاهزة للاستخدام.
سي دي رجب Huggingface-cli تنزيل RAGLAB/data --local-dir data --repo-type dataset
تم تصميم وضع التفاعل خصيصًا لفهم الخوارزميات بسرعة. في وضع التفاعل، يمكنك تشغيل خوارزميات مختلفة بسرعة كبيرة، وفهم عملية التفكير للخوارزميات المختلفة، دون الحاجة إلى تنزيل أي بيانات إضافية.
تتضمن جميع الخوارزميات المدمجة في raglab وضعين: interact
evaluation
. توضح مرحلة الاختبار وضع interact
فقط للتوضيح والتعليم؟.
ملحوظة
نظرًا لمتطلبات colbert للمسارات المطلقة، فأنت بحاجة إلى تعديل index_dbPath وtext_dbPath في ملف التكوين لاستخدام المسارات المطلقة.
قم بتعديل ملف index_dbPath
و text_dbPath
في ملف التكوين: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
تشغيل خادم كولبيرت
سي دي رجب sh run/colbert_server/colbert_server-10samples.sh
ملحوظة
في هذه المرحلة، سيطالب تضمين كولبير بأنه بسبب أخطاء المسار، يجب إعادة معالجة تضمين كولبير. الرجاء إدخال yes
وبعد ذلك سيساعدك raglab تلقائيًا في معالجة التضمين وبدء تشغيل خادم colbert.
الآن يرجى فتح محطة أخرى ومحاولة طلب خادم كولبيرت
سي دي رجب sh run/colbert_server/ask_api.sh
إذا تم إرجاع النتيجة، فهذا يعني أن خادم كولبير قد بدأ بنجاح! ؟
تشغيل selfrag (النموذج القصير والاسترجاع التكيفي) اختبار الوضع التفاعلي وتضمين 10 عينات
سي دي رجب sh run/rag_inference/3-selfrag_reproduction-interact-short_form-adaptive_retrival.sh
تهانينا! الآن أنت تعرف بالفعل كيفية تشغيل raglab؟
في raglab، تحتوي كل خوارزمية على 10 استعلامات مدمجة في وضع التفاعل والتي يتم أخذ عينات منها من معايير مختلفة
ملحوظة
تذكر تنزيل قاعدة بيانات wiki2018 konwledge ونموذجها قبل تشغيل النتائج الورقية
نظرًا لمتطلبات كولبرت للمسارات المطلقة، فأنت بحاجة إلى تعديل index_dbPath
و text_dbPath
في ملف التكوين ومعالجة قاعدة بيانات التضمين 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# تغيير مسار الجذر، ولا تحتاج المعلمات الأخرى إلى تعديل"collection": "/{your_root_path}/RAGLAB/data/retrieval/colbertv2. 0_passages/wiki2018/wiki2018.tsv"، "experiment": "/{your_root_path}/RAGLAB/data/retrieval/colbertv2.0_embedding/wiki2018"،
قم بتعديل المسارات المطلقة المرتبطة بالملف المصدر للتضمين wiki2018
قم بتعديل المسارات في ملف الكونفيج
تنبيه: يحتاج colbert_server إلى ذاكرة وصول عشوائي سعة 60 جيجابايت على الأقل
سي دي رجب sh run/colbert_server/colbert_server.sh
افتح محطة أخرى لاختبار خادم ColBERT الخاص بك
سي دي رجب sh run/colbert_server/ask_api.sh
بدأ خادم ColBERT بنجاح!!! ؟
تتطلب تجارب الاستدلال تشغيل مئات البرامج النصية بالتوازي، ويجب استخدام برنامج جدولة GPU التلقائي لتخصيص وحدات معالجة الرسومات تلقائيًا لنصوص bash المختلفة بالتوازي.
قم بتثبيت simple_gpu_scheduler
تثبيت النقطة simple_gpu_scheduler
إجراء مئات التجارب في سطر واحد؟
سي دي رجب simple_gpu_scheduler --gpus 0,1,2,3,4,5,6,7 < auto_gpu_scheduling_scripts/auto_run-llama3_8b-baseline-scripts.txt# يمكن تشغيل البرامج النصية الأخرى بنفس الطريقة
كيف تكتب your_script.txt؟
# auto_inference_selfreg-7b.txtsh run/rag_inference/selfrag_reproduction/selfrag_reproduction-evaluation-short_form-PubHealth-adaptive_retrieval-pregiven_passages.sh sh run/rag_inference/selfrag_reproduction/selfrag_reproduction-evaluation-short_form-PubHealth-always_retrieval-pregiven_passages.sh
هنا مثال
يتضمن RAGLAB ثلاث طرق تقييم كلاسيكية: الدقة، وF1، وEM (المطابقة التامة). هذه الطرق الثلاث سهلة الحساب، لذا يمكن حسابها ديناميكيًا أثناء عملية الاستدلال. ومع ذلك، ALCE وFactscore، وهما مقياسان متقدمان، يتطلبان إكمال عملية الاستدلال قبل التقييم.
ALCE : قام RAGLAB بدمج مستودع ALCE في RAGLAB. ما عليك سوى تعيين المسار لنتائج الاستدلال في ملف التكوين.
cd RAGLABcd run/ALCE/# قم بتغيير المسار في كل ملف sh للملفات التي تم إنشاؤها للاستدلال# على سبيل المثال:# 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
ستكون نتائج التقييم في نفس الدليل الذي يوجد به ملف الإدخال، مع لاحقة اسم الملف .score
Factscore : تتطلب بيئة Factscore تثبيت torch 1.13.1
، والذي يتعارض مع إصدار flash-attn المطلوب في وحدات التدريب والاستدلال الخاصة بـ RAGLAB. لذلك، لا يمكن لـ RAGLAB حاليًا دمج بيئة Factscore، لذلك يحتاج المستخدمون إلى تثبيت بيئة Factscore بشكل منفصل للتقييم.
بعد تثبيت بيئة Factscore، يرجى تعديل مسار نتائج الاستدلال في ملف bash
cd RAGLAB/run/Factscore/# تغيير المسار في كل ملف sh للملفات التي تم إنشاؤها للاستدلال# على سبيل المثال:# 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
ستكون نتائج التقييم في نفس الدليل الذي يوجد به ملف الإدخال، مع لاحقة اسم الملف _factscore_output.json
ملحوظة
أثناء عملية تقييم Factscore، استخدمنا GPT-3.5 كنموذج للتقييم، لذلك ليست هناك حاجة لتنزيل نموذج محلي. إذا كنت بحاجة إلى استخدام نموذج محلي لتقييم Factscore، فيرجى الرجوع إلى Factscore
إذا كنت ترغب في معالجة قاعدة بيانات المعرفة بنفسك، فيرجى الرجوع إلى الخطوات التالية. لقد قام RAGLAB بالفعل بتحميل قاعدة بيانات المعرفة المعالجة إلى Hugging Face
الوثيقة:process_wiki.md
يغطي هذا القسم عملية نماذج التدريب في RAGLAB. يمكنك إما تنزيل جميع النماذج المدربة مسبقًا من HuggingFace؟، أو استخدام البرنامج التعليمي أدناه للتدريب من البداية.
توفر جميع البيانات جميع البيانات اللازمة للضبط الدقيق.
المستند: Train_docs.md
إذا وجدت هذا المستودع مفيدًا، فيرجى الاستشهاد بعملنا.
@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 مرخص بموجب ترخيص MIT.