مشروع توليد الاسترجاع المعزز (RAG).
If this project helps you, consider buying me a coffee ☕. Your support helps me keep contributing to the open-source community!
سيتم إطلاق منصة bRAGAI الرسمية قريبًا. انضم إلى قائمة الانتظار لتكون من أوائل المستخدمين!
يحتوي هذا المستودع على استكشاف شامل لجيل الاسترجاع المعزز (RAG) لمختلف التطبيقات. يوفر كل دفتر ملاحظات دليلاً عمليًا مفصلاً لإعداد RAG وتجربته بدءًا من المستوى التمهيدي وحتى التطبيقات المتقدمة، بما في ذلك الاستعلامات المتعددة وإنشاءات RAG المخصصة.
هيكل المشروع
إذا كنت ترغب في الانتقال إليه مباشرة، فاطلع على الملف full_basic_rag.ipynb
-> سيمنحك هذا الملف رمز بداية نموذجيًا لبرنامج الدردشة الآلي RAG القابل للتخصيص بالكامل.
تأكد من تشغيل ملفاتك في بيئة افتراضية (قسم الخروج Get Started
)
يمكن العثور على دفاتر الملاحظات التالية ضمن الدليل tutorial_notebooks/
.
[1]_rag_setup_overview.ipynb
يوفر هذا الكمبيوتر المحمول التمهيدي نظرة عامة على بنية RAG وإعداداتها الأساسية. يمر دفتر الملاحظات عبر:
- إعداد البيئة : تكوين البيئة، وتثبيت المكتبات الضرورية، وإعدادات واجهة برمجة التطبيقات.
- التحميل الأولي للبيانات : أدوات تحميل المستندات الأساسية وطرق المعالجة المسبقة للبيانات.
- إنشاء التضمين : إنشاء عمليات التضمين باستخدام نماذج مختلفة، بما في ذلك عمليات التضمين الخاصة بـ OpenAI.
- متجر المتجهات : إعداد متجر متجهات (ChromaDB/Pinecone) للبحث الفعال عن التشابه.
- خط أنابيب RAG الأساسي : إنشاء خط أنابيب استرجاع وتوليد بسيط ليكون بمثابة خط الأساس.
[2]_rag_with_multi_query.ipynb
بناءً على الأساسيات، يقدم هذا الكمبيوتر الدفتري تقنيات الاستعلام المتعدد في مسار RAG، ويستكشف:
- إعداد الاستعلامات المتعددة : تكوين استعلامات متعددة لتنويع عملية الاسترجاع.
- تقنيات التضمين المتقدمة : استخدام نماذج التضمين المتعددة لتحسين عملية الاسترجاع.
- خط الأنابيب مع الاستعلام المتعدد : تنفيذ معالجة الاستعلامات المتعددة لتحسين الملاءمة في توليد الاستجابة.
- المقارنة والتحليل : مقارنة النتائج مع مسارات الاستعلام الفردي وتحليل تحسينات الأداء.
[3]_rag_routing_and_query_construction.ipynb
يتعمق هذا الكمبيوتر المحمول بشكل أعمق في تخصيص خط أنابيب RAG. ويغطي:
- التوجيه المنطقي: ينفذ التوجيه القائم على الوظيفة لتصنيف استعلامات المستخدم إلى مصادر البيانات المناسبة بناءً على لغات البرمجة.
- التوجيه الدلالي: يستخدم التضمينات وتشابه جيب التمام لتوجيه الأسئلة إما إلى الرياضيات أو الفيزياء، مما يؤدي إلى تحسين دقة الاستجابة.
- هيكلة الاستعلام لمرشحات البيانات الوصفية: يحدد مخطط البحث المنظم للبيانات الوصفية لبرنامج YouTube التعليمي، مما يتيح التصفية المتقدمة (على سبيل المثال، حسب عدد المشاهدات وتاريخ النشر).
- مطالبة البحث المنظم: الاستفادة من مطالبات LLM لإنشاء استعلامات قاعدة البيانات لاسترداد المحتوى ذي الصلة بناءً على إدخال المستخدم.
- التكامل مع متاجر المتجهات: ربط الاستعلامات المنظمة بمخازن المتجهات لاسترجاع البيانات بكفاءة.
[4]_rag_indexing_and_advanced_retrieval.ipynb
استمرارًا للتخصيص السابق، يستكشف هذا الكمبيوتر الدفتري ما يلي:
- مقدمة عن تقطيع المستندات: تشير إلى الموارد الخارجية لتقنيات تقطيع المستندات.
- فهرسة التمثيل المتعدد: يقوم بإعداد بنية فهرسة متعددة المتجهات للتعامل مع المستندات ذات التضمينات والتمثيلات المختلفة.
- التخزين داخل الذاكرة للملخصات: يستخدم InMemoryByteStore لتخزين ملخصات المستندات إلى جانب المستندات الأصلية، مما يتيح استرجاعها بكفاءة.
- إعداد MultiVectorRetriever: يدمج تمثيلات المتجهات المتعددة لاسترداد المستندات ذات الصلة بناءً على استعلامات المستخدم.
- تنفيذ RAPTOR: يستكشف RAPTOR، وهو نموذج متقدم للفهرسة والاسترجاع، ويرتبط بموارد متعمقة.
- تكامل ColBERT: يوضح فهرسة واسترجاع المتجهات على مستوى الرمز المميز القائم على ColBERT، والذي يلتقط المعنى السياقي على مستوى دقيق.
- مثال ويكيبيديا مع ColBERT: يسترد معلومات حول Hayao Miyazaki باستخدام نموذج استرجاع ColBERT للتوضيح.
[5]_rag_retrival_and_reranking.ipynb
يجمع هذا الكمبيوتر الدفتري النهائي مكونات نظام RAG، مع التركيز على قابلية التوسع والتحسين:
- تحميل المستندات وتقسيمها: تحميل المستندات وتقطيعها للفهرسة وإعدادها للتخزين الموجه.
- إنشاء استعلامات متعددة باستخدام RAG-Fusion: يستخدم أسلوبًا قائمًا على السرعة لإنشاء استعلامات بحث متعددة من سؤال إدخال واحد.
- دمج الرتبة المتبادلة (RRF): يطبق RRF لإعادة ترتيب قوائم الاسترجاع المتعددة، ودمج النتائج لتحسين الصلة.
- إعداد سلسلة المسترد وRAG: إنشاء سلسلة استرجاع للإجابة على الاستفسارات، باستخدام التصنيفات المدمجة وسلاسل RAG لسحب المعلومات ذات الصلة بالسياق.
- إعادة ترتيب Cohere: يوضح إعادة الترتيب باستخدام نموذج Cohere لمزيد من الضغط والتحسين السياقي.
- استرجاع CRAG وSelf-RAG: يستكشف أساليب الاسترجاع المتقدمة مثل CRAG وSelf-RAG، مع روابط للأمثلة.
- استكشاف تأثير السياق الطويل: روابط للموارد التي تشرح تأثير استرجاع السياق الطويل على نماذج RAG.
ابدء
المتطلبات السابقة: Python 3.11.7 (مفضل)
استنساخ المستودع :
git clone https://github.com/bRAGAI/bRAG-langchain.git
cd bRAG-langchain
إنشاء بيئة افتراضية
python -m venv venv
source venv/bin/activate
تثبيت التبعيات : تأكد من تثبيت الحزم المطلوبة المدرجة في ملف requirements.txt
.
pip install -r requirements.txt
تشغيل دفاتر الملاحظات : ابدأ بـ [1]_rag_setup_overview.ipynb
للتعرف على عملية الإعداد. تابع بشكل تسلسلي عبر دفاتر الملاحظات الأخرى لإنشاء وتجربة مفاهيم RAG الأكثر تقدمًا.
إعداد متغيرات البيئة :
ترتيب دفتر الملاحظات : لمتابعة المشروع بطريقة منظمة:
ابدأ بـ [1]_rag_setup_overview.ipynb
تابع باستخدام [2]_rag_with_multi_query.ipynb
ثم انتقل عبر [3]_rag_routing_and_query_construction.ipynb
تابع مع [4]_rag_indexing_and_advanced_retrieval.ipynb
أنهي بـ [5]_rag_retrieval_and_reranking.ipynb
الاستخدام
بعد إعداد البيئة وتشغيل دفاتر الملاحظات بالتسلسل، يمكنك:
تجربة إنشاء الاسترجاع المعزز : استخدم الإعداد الأساسي في [1]_rag_setup_overview.ipynb
لفهم أساسيات RAG.
تنفيذ الاستعلام المتعدد : تعرف على كيفية تحسين ملاءمة الاستجابة من خلال تقديم تقنيات الاستعلام المتعدد في [2]_rag_with_multi_query.ipynb
.
دفاتر الملاحظات الواردة (العمل قيد التقدم)
- دقة السياق مع RAGAS + LangSmith
- دليل حول استخدام RAGAS وLangSmith لتقييم دقة السياق وأهميته ودقة الاستجابة في RAG.
- نشر تطبيق RAG
- دليل حول كيفية نشر تطبيق RAG الخاص بك
The notebooks and visual diagrams were inspired by Lance Martin's LangChain Tutorial.