روبوت محادثة مفتوح المصدر يعتمد على Weaviate لإنشاء استرجاع معزز (RAG)، يوفر حلول RAG شاملة وسلسة وسهلة الاستخدام.
وصف تفصيلي لمشروع Verba
نظرة عامة على المشروع
Verba هو تطبيق توليد معزز بالاسترجاع (RAG) مفتوح المصدر، تم تطويره بواسطة Weaviate، ويُعرف باسم "The Golden RAGtriever". يوفر هذا التطبيق حلاً شاملاً وسلسًا وسهل الاستخدام لـ RAG، حيث يمكن للمستخدمين استكشاف مجموعات البيانات واستخلاص الرؤى بخطوات بسيطة، سواء باستخدام Ollama و Huggingface محليًا، أو من خلال مزودي نماذج اللغة الكبيرة (LLM) مثل Anthropic و Cohere و OpenAI.
الميزات الأساسية
🤖 دعم النماذج
- النماذج المحلية: يدعم Ollama (مثل Llama3) ونماذج HuggingFace
- النماذج السحابية: يدمج مزودي خدمات الذكاء الاصطناعي الرئيسيين مثل OpenAI و Anthropic و Cohere و Groq و Novita AI و Upstage
- نماذج التضمين (Embedding): يدعم نماذج تضمين متعددة، بما في ذلك Weaviate و SentenceTransformers و VoyageAI وغيرها
📁 دعم البيانات
- أنواع الملفات: يدعم صيغًا متعددة مثل .txt و .md و .pdf و .csv و .docx و .pptx
- مصادر البيانات: يمكن استيراد البيانات من نظام الملفات المحلي، مستودعات GitHub، عناوين URL، وغيرها
- ميزات خاصة:
- استخراج الويب عبر Firecrawl
- تحليل المستندات عبر UpstageDocumentParse
- معالجة الملفات الصوتية عبر AssemblyAI
✨ ميزات وظائف RAG
- البحث الهجين: يجمع بين البحث الدلالي (Semantic Search) والبحث بالكلمات المفتاحية (Keyword Search)
- اقتراحات الإكمال التلقائي: يوفر وظيفة اقتراح الاستعلامات
- التصفية الذكية: يدعم التصفية حسب المستند، نوع المستند، وغيرها
- بيانات وصفية قابلة للتخصيص: تحكم كامل في إعدادات البيانات الوصفية (Metadata)
- الاستيعاب غير المتزامن: استيعاب البيانات بشكل غير متزامن لزيادة سرعة المعالجة
🗡️ تقنيات تقسيم المستندات (Chunking)
- التقسيم بالرموز (Token): تقسيم المستندات بناءً على الرموز
- التقسيم بالجمل: تقسيم على مستوى الجمل باستخدام spaCy
- التقسيم بالفقرات: يدعم تقسيم المستندات على مستوى الفقرات
الهيكل التقني
يعتمد Verba تصميمًا معماريًا معياريًا، حيث يقسم عملية RAG إلى عدة خطوات معيارية مستقلة، تشمل:
- ReaderManager: يستقبل قائمة من السلاسل النصية (مسارات، عناوين URL، أو نصوص)، ويُخرج قائمة بمستندات Verba
- ChunkerManager: يستقبل قائمة المستندات ويقسم نص كل مستند إلى أجزاء أصغر
- EmbeddingManager: يستقبل قائمة المستندات ويقوم بتضمينها (embedding) في Weaviate
طرق النشر
💻 النشر المحلي
للتشغيل محليًا باستخدام Weaviate Embedded:
pip install goldenverba
verba start
🐳 النشر عبر Docker
git clone https://github.com/weaviate/Verba
docker compose up -d --build
🌩️ النشر السحابي
الاتصال بنسخة Weaviate Cloud Services (WCS)
⚙️ النشر المخصص
يدعم الاتصال بنسخ Weaviate المستضافة ذاتيًا
سير العمل
1. إعداد البيئة
إنشاء ملف .env
لتكوين مفاتيح API:
# OpenAI
OPENAI_API_KEY=your_openai_key
# Anthropic
ANTHROPIC_API_KEY=your_anthropic_key
# Weaviate
WEAVIATE_URL_VERBA=your_weaviate_url
WEAVIATE_API_KEY_VERBA=your_weaviate_key
# Ollama
OLLAMA_URL=http://localhost:11434
2. استيراد البيانات
- من خلال واجهة الويب، اختر "Import Data" (استيراد البيانات)
- يدعم إضافة الملفات، المجلدات، أو عناوين URL
- يمكن تخصيص إعدادات كل ملف على حدة
3. تكوين مسار RAG
في صفحة "Config" (التكوين)، قم بتكوين:
- اختيار نموذج التضمين (Embedding Model)
- اختيار النموذج التوليدي (Generative Model)
- تعيين استراتيجية التقسيم (Chunking Strategy)
- تكوين معلمات الاسترجاع (Retrieval Parameters)
4. بدء المحادثة
في صفحة "Chat" (الدردشة):
- أدخل سؤالاً للحصول على إجابات ذات صلة
- عرض مقتطفات المستندات ذات الصلة دلاليًا
- الحصول على إجابات شاملة مولدة بواسطة الذكاء الاصطناعي
ميزات فريدة
📊 تصور المتجهات ثلاثي الأبعاد
يوفر واجهة تصور ثلاثية الأبعاد لبيانات المتجهات، لمساعدة المستخدمين على فهم توزيع البيانات
🎨 واجهة أمامية قابلة للتخصيص
واجهة أمامية قابلة للتخصيص بالكامل، تدعم التخصيص حسب العلامة التجارية
🔄 التخزين المؤقت الدلالي (Semantic Caching)
يستفيد من ميزة التخزين المؤقت الدلالي في Weaviate، حيث يقوم بتضمين الاستجابات والاستعلامات المولدة، مما يضمن معالجة سريعة للاستعلامات المتكررة عن طريق التحقق من الاستعلامات المتطابقة دلاليًا التي تمت معالجتها مسبقًا في ذاكرة التخزين المؤقت.
🤝 تكامل مكتبات RAG
- LangChain: يدعم بالفعل مسارات RAG الخاصة بـ LangChain
- Haystack: دعم مخطط له
- LlamaIndex: دعم مخطط له
سيناريوهات التطبيق
- إدارة المعرفة الشخصية: بناء نظام استعلام ذكي لمكتبة المستندات الشخصية
- استرجاع وثائق الشركات: مساعدة الموظفين في العثور بسرعة على وثائق ومعلومات الشركة ذات الصلة
- مساعدة البحث: مساعدة الباحثين في تحليل واستعلام المواد البحثية
- خدمة العملاء: بناء نظام خدمة عملاء ذكي يعتمد على قاعدة المعرفة الخاصة بالشركة
- التعليم والتدريب: إنشاء نظام استعلام تفاعلي لمواد التعلم
حالة المشروع
هذا المشروع مدفوع بالمجتمع، وتقدم Weaviate دعمًا مفتوح المصدر له. على الرغم من أن الفريق يسعى جاهدًا لحل المشكلات بسرعة، إلا أن أولوية الصيانة قد لا تكون بنفس مستوى برامج الإنتاج. نرحب بمساهمات المجتمع للمساعدة في استقرار المشروع.
المتطلبات التقنية
- إصدار Python: >=3.10.0, <3.13.0
- نظام التشغيل: Linux، macOS (Weaviate Embedded على Windows غير مدعوم حاليًا)
- الأجهزة: يعتمد على النموذج المختار وحجم البيانات
المساهمات مفتوحة المصدر
يرحب المشروع بالمساهمات بجميع أشكالها:
- تحسينات الميزات وإصلاح الأخطاء
- تحسين التوثيق
- اقتراحات الميزات الجديدة
- الاختبار وتقديم الملاحظات
للحصول على تفاصيل، يرجى الرجوع إلى دليل المساهمة والوثائق التقنية للمشروع.
التطوير المستقبلي
وفقًا لخارطة طريق المشروع، تشمل الميزات المخطط لها ما يلي:
- وظائف استعلام متقدمة (تفويض المهام بناءً على تقييم LLM)
- وظيفة إعادة الترتيب (إعادة ترتيب النتائج بناءً على السياق)
- واجهة تقييم RAG
- المزيد من تكامل مكتبات RAG
يمثل Verba أفضل الممارسات في تطبيق تقنية RAG، ويوفر للمستخدمين حلاً قويًا وسهل الاستخدام للاستعلام الذكي عن المستندات.