بناء خط معالجة RAG من الصفر

أردت إضافة مساعد ذكاء اصطناعي إلى SmartQueue.

SmartQueue هو طابور مهام (task queue) قمت ببنائه بلغة Go لتذاكر دعم تقنية المعلومات. لم أكن أريد ذكاءً اصطناعيًا عامًا؛ فالنماذج العامة لا تعرف قواعد إعادة تعيين كلمة المرور الخاصة بك أو أدلة تشغيل حالات الانقطاع (outage runbooks) الخاصة بك.

كنت بحاجة إلى تقنية "التوليد المعزز بالاسترجاع" (Retrieval-Augmented Generation - RAG). تقوم هذه التقنية بسحب الحقائق من مستنداتك أولاً، ثم تقدم تلك الحقائق إلى النموذج كـ "سياق" (context).

إليكم ما تعلمته أثناء بناء خط المعالجة هذا.

فشل عملية النشر

استخدم إصداري الأول ChromaDB للبحث الشعاعي (vector search). كان يعمل محليًا، لكنه فشل أثناء عملية النشر.

قمت بتشغيل كل شيء في حاوية (container) واحدة على Hugging Face Spaces. شمل ذلك Redis، وGo API، وعمال (workers)، وخدمة FastAPI، وChromaDB. كانت هناك خمس عمليات تتنافس على ذاكرة ومعالج محدودين. تسبب ChromaDB في حدوث سباقات عند بدء التشغيل (startup races) وإخفاقات صامتة.

اتخذت قرارًا؛ قمت بإزالة قاعدة بيانات المتجهات واستبدلتها ببحث BM25 بسيط.

الحل البسيط

البديل الجديد يتكون من 50 سطرًا من لغة Python. ليس له عملية خارجية، ولا يتطلب استدعاءات شبكية. يستخدم صيغة Okapi BM25 لمطابقة الكلمات المفتاحية في الذاكرة.

المقايضة واضحة:

ضبط النظام

قمت بضبط عدة إعدادات للحفاظ على استقرار النظام: • المستندات المسترجعة (k): 4. يوفر هذا سياقًا كافيًا دون تجاوز حدود الـ tokens. • درجة حرارة البوت (Bot temperature): 0.2. تتطلب استكشاف الأخطاء وإصلاحها إجابات حرفية، وليس إبداعًا. • درجة حرارة المصنف (Classifier temperature): 0.1. يضمن ذلك أن تكون مخرجات JSON متوقعة. • سجل الجلسة: آخر 10 جولات. يوفر هذا استمرارية دون استهلاك الكثير من الذاكرة. • حدود المعدل (Rate limits): 30 طلبًا في الدقيقة. يحمي هذا حصة الـ API الخاصة بي.

التصميم الأفضل هو التصميم الذي يتناقص أداؤه تدريجيًا

قمت ببناء كل نقطة نهاية (endpoint) مع خيار احتياطي (fallback) غير معتمد على الذكاء الاصطناعي. إذا توقفت خدمة الذكاء الاصطناعي، يستخدم النظام مطابقة الكلمات المفتاحية أو المنطق القائم على القواعد. يتراجع أداء النظام تدريجيًا بدلاً من الانهيار التام.

هذا ليس إعداد RAG معقدًا؛ فهو لا يحتوي على إعادة ترتيب (re-ranking) أو بحث هجين (hybrid search). إنه أداة صغيرة وذكية صُممت لنطاق محدد.

الدروس المستفادة:

المصدر: https://dev.to/ambarish_0221/building-a-rag-pipeline-from-scratch-what-smartqueue-taught-me-about-retrieval-4gdb

مجتمع تعليمي اختياري: https://t.me/GyaanSetuAi