العودة إلى المدونة

الذكاء الاصطناعي25 مارس 20264 دقائق قراءة

RAG في الإنتاج: ما لا تخبرك به الدروس التعليمية

أسامـــة الدروشـــي

مخطط دارة إلكترونية متوهّج

النسخة الأولى من خط معالجة RAG لدينا لم تستغرق سوى ظهيرة يوم واحد. حوّلت حفنة من السير الذاتية إلى embeddings، وربطتها ببحث متجهي، وطرحت عليها أسئلة، فحصلت على إجابات بدت صحيحة. عرضناها داخليًا في الأسبوع نفسه، فأثارت إعجابًا حقيقيًا. أما وضعها بين يدي مسؤولي توظيف حقيقيين فاستغرق أربعة أشهر إضافية، ولم يذهب من ذلك الوقت شيء يُذكر إلى ما تغطيه الدروس التعليمية.

كان ذلك في Sagan World، حيث قدت تطوير منصة توظيف يراجع فيها الذكاء الاصطناعي مقابلات الفرز. كان على النظام أن يجيب عن أسئلة حول المرشحين انطلاقًا من كلماتهم الفعلية: نصوص المقابلات، والسير الذاتية، والإجابات المكتوبة. والمخاطر هنا ملموسة؛ فعبارة مختلَقة مثل «خمس سنوات من الخبرة في React» ليست مجرد هفوة محرجة، بل قد تكلّف مرشحًا وظيفته أو عميلًا قرار توظيف خاطئًا.

التقطيع قرار من قرارات المنتَج، لا مجرد معالجة أولية

كل درس تعليمي يعطيك مقاطع ثابتة الحجم، عادة 512 رمزًا (token) مع بعض التداخل، ثم يمضي. هذا يصلح للمقالات، أما مع نصوص المقابلات فكان كارثة صامتة: مقاطع تبدأ من منتصف الإجابة، وتفصل ردّ المرشح عن السؤال الذي أثاره، وتوزّع قصة واحدة على ثلاثة مقاطع لا يُسترجَع أي منها جيدًا بمفرده.

أعدنا بناء التقطيع (chunking) انطلاقًا من بنية المستندات نفسها: نصوص المقابلات قُطّعت حسب أدوار المتحدثين، مع دمج الأدوار القصيرة وإبقاء كل إجابة ملتصقة بسؤالها. أما السير الذاتية فسلكنا معها الاتجاه المعاكس: مقاطع صغيرة محصورة في كل قسم، لأن قسم «المهارات» يجيب عن أسئلة مختلفة تمامًا عن قسم «الخبرات». هذا التغيير وحده حسّن جودة الاسترجاع أكثر من أي تبديل لنموذج embeddings جرّبناه، وقد جرّبنا عدة نماذج.

الدرس الذي بقي راسخًا في ذهني: التقطيع ترميز لما تعنيه مستنداتك، ويستحق من العناية في التصميم ما يستحقه مخطط قاعدة بياناتك.

قيّم الاسترجاع على حدة، وإلا فأنت تعمل على غير هدى

في الأسابيع الأولى كنا نضبط النظام بالانطباعات. يبلّغ أحدهم عن إجابة سيئة، فنعدّل في الـ prompts، فيبدو الوضع أفضل، ثم يظهر فشل مختلف بعد يومين. حلقة مفرغة بامتياز: نسدّ ثغرة فتنفتح أخرى.

ما أصلح الأمر كان شيئًا مملًا: مجموعة اختبار ذهبية. جمعنا نحو مئتي سؤال حقيقي من مسؤولي التوظيف، وحدّدنا يدويًا المقاطع التي تحتوي فعلًا على الإجابة، ثم قسنا recall@10 مع كل تغيير في خط المعالجة. كان رقمنا الأول محرجًا، بالكاد تجاوز 60٪. التقطيع حسب أدوار المتحدثين مع البحث الهجين، أي BM25 إلى جانب المتجهات في PostgreSQL عبر pgvector، دفعه إلى قرابة 90٪، دون أن يتغير شيء في النموذج اللغوي طوال تلك الفترة.

معظم «أخطاء الهلوسة» عندنا كانت أخطاء استرجاع متنكرة.

كان هذا أكبر تحوّل في طريقة تفكيرنا. حين يختلق النموذج معلومات، فليكن المشتبه به الأول هو المسترجِع؛ فالنموذج الذي لم يرَ المقطع الصحيح قط لا يملك إلا الارتجال. ابنِ مجموعة التقييم مبكرًا؛ مجموعتنا كلّفتنا يومين وعوّضت كلفتها كل أسبوع بعد ذلك.

الفهارس القديمة وأعمال السباكة التي لا يغرّد عنها أحد

إليك نمط فشل لا يذكره أي درس: يعدّل مسؤول التوظيف وصفًا وظيفيًا، فيبقى الـ embedding القديم في الفهرس، ويستمر الذكاء الاصطناعي في فرز المرشحين وفق متطلبات لم تعد موجودة. أو يرفع مرشح نسخة مصححة من سيرته الذاتية فتُسترجَع النسختان معًا وتتناقضان.

إصلاح هذا تطلّب إصدارات للمستندات، وإبطالًا للـ embeddings، وقائمة انتظار لإعادة الفهرسة بعمّال idempotent، وعزلًا لكل عميل حتى لا تتسرب بيانات أحدهم إلى استرجاع غيره. جزء «RAG» في كودنا المبني على FastAPI لم يتجاوز بضع مئات من الأسطر، أما منظومة ضمان حداثة البيانات وصحتها من حوله فبلغت الآلاف. هذه النسبة طبيعية، ولو خططنا لها منذ البداية لوفّرنا على أنفسنا شهرًا عصيبًا.

الحواجز التي صمدت فعلًا

جرّبنا الكثير من تعاويذ «لا تهلوس» على مستوى الـ prompt. ما نجح فعلًا كان بنيويًا:

  • كل ادعاء في المراجعة يجب أن يستشهد بمعرّفات المقاطع التي جاء منها، ونتحقق من أن تلك المقاطع استُرجعت فعلًا في الطلب نفسه.
  • إذا جاءت درجات الاسترجاع دون عتبة محددة، يقول النظام «لم يُذكر في المقابلة» بدل أن يجيب.
  • كل قيمة رقمية، من سنوات الخبرة إلى توقعات الراتب وفترة الإشعار، تُستخرَج على حدة بتحقق صارم بدل الوثوق بما يخرج من التوليد الحر.

المفاجأة أن ثقة مسؤولي التوظيف بالنظام زادت بعدما بدأ يرفض الإجابة. فالإجابة الخاطئة الواثقة تحرق من المصداقية ما لا تعيده عشر إجابات صحيحة، وتبيّن أن عبارة «لم أجد هذا» ميزة لا عيب.

إن كنت تأخذ RAG إلى الإنتاج، فهذه نصيحتي الصادقة بعد ست سنوات من بناء المنصات ومنتَج ذكاء اصطناعي واحد ترك ندوبه: استمتع بعرضك التجريبي الذي أنجزته في ظهيرة واحدة، ثم خصص ربع سنة للتقطيع والتقييم وحداثة الفهارس والحواجز. هذه ليست ضريبة تدفعها قبل العمل الحقيقي؛ إنها العمل الحقيقي نفسه.