الـ RAG· الدرس 1 من 4
إيه هو الـ RAG؟
في سطر واحد · الـ RAG بيجيب المستندات المناسبة الأول، وبعدين يخلّي الموديل يجاوب منها ويستشهد بيها — بدل ما يفتي من دماغه.
RAG (Retrieval-Augmented Generation) يعني: استرجع → أسند → استشهد. بتدوّر في بياناتك، تحطّ اللي لقيته في الـ prompt، والموديل يجاوب من النص ده بس. النتيجة: إجابات مبنية على مصادرك الفعلية، مش تخمين.
الـ LLM ما يعرفش مستنداتك الخاصة، ولمّا تسأله عنها بيهلوس بثقة. الـ RAG هو الحل القياسي للمشكلة دي — وهو أكتر نمط AI بيتبني في الشركات النهارده. لو هتبني أي حاجة على بيانات خاصة، هتبنيها بـ RAG غالبًا.
بدل ما تسأل الموديل «إيه سياسة الإجازات؟» وتستنى يفتكر، إنت بتدوّر في ملفات الشركة الأول، تجيب الفقرة اللي فيها السياسة، وتقول للموديل: «جاوب من النص ده بس». كده الإجابة جاية من مصدرك، مش من ذاكرته.
زي امتحان open-book: الطالب مش مطلوب منه يحفظ الكتاب، مطلوب منه يفتح على الصفحة الصح ويجاوب منها ويقول «صفحة كام». الـ retrieval هو فتح الصفحة، والـ grounding هو الإجابة منها، والـ citation هو رقم الصفحة.
مستخدم بيسأل «بنرجّع فلوس الشحن؟». النظام بيدوّر في مستندات الدعم، بيلاقي بند سياسة الإرجاع، بيحطّه في الـ prompt، والموديل يردّ: «أيوه، خلال 14 يوم — المصدر: سياسة الإرجاع، بند 3».
بتحوّل مستنداتك لـ embeddings وتخزّنها في vector store. لمّا يجي سؤال، بتحوّله هو كمان لـ embedding، تجيب أقرب مقاطع (chunks) ليه، تحطّها في الـ prompt مع تعليمات «جاوب من السياق ده واستشهد بالمصدر»، والموديل يولّد الإجابة.
الـ pipeline الكامل: chunking → embedding → indexing وقت الإعداد، وبعدين retrieval (غالبًا similarity search + إعادة ترتيب) → prompt assembly → generation وقت السؤال. جودة الـ RAG بتتحكم فيها جودة الاسترجاع أكتر من جودة الموديل — chunks غلط يعني إجابة غلط مهما كان الموديل قوي.
🧪 جرّب بنفسك: خد 3 فقرات من أي مستند عندك، والصق واحدة منهم في الـ prompt مع سؤال عنها وتعليمة «جاوب من النص ده بس، ولو الإجابة مش فيه قول مش عارف». بعدين اسأل سؤال إجابته مش في الفقرة وشوف بيلتزم ولا بيفتي. ده RAG يدوي — الأنظمة الحقيقية بتعمل خطوة «اختيار الفقرة» أوتوماتيك.
أشهر غلطة: الاعتقاد إن RAG بيمنع الهلوسة تمامًا. هو بيقلّلها جدًا على بياناتك، بس لو الاسترجاع رجّع نص غلط أو مفيش تعليمات «لو مش في السياق قول مش عارف»، الموديل هيفتي برضه. الغلطة التانية: خلط RAG بالـ fine-tuning — دول بيحلّوا مشاكل مختلفة.
استخدم RAG لمّا الإجابات لازم تيجي من معرفة خاصة أو بتتغيّر (مستندات شركة، سياسات، توثيق منتج)، ولمّا محتاج citations، ولمّا البيانات أكبر من أي context window.
متستخدمش RAG عشان تغيّر أسلوب أو سلوك الموديل — ده شغل fine-tuning. ولو معرفتك كلها بتدخل في الـ context window وثابتة وصغيّرة، حطّها في الـ prompt على طول وبلاش تعقيد pipeline كامل.