هذا المقال يتطلب: مستوى مبتدئ
لو عايز ChatGPT يجاوبك من ملفات شركتك أو من PDFs مش موجودة في تدريبه، مش لازم تدرّب موديل من الصفر. فيه طريقة اسمها RAG بتخليك تعمل ده في يومين شغل، بتكلفة أقل من 50 دولار شهريًا للتطبيقات الصغيرة، ودقة بترفع بنسبة 60% على الأقل مقارنة بسؤال الموديل لوحده.
RAG بالعربي: الطريقة اللي بتخلي AI يفهم بياناتك الخاصة
المشكلة باختصار
لو سألت ChatGPT "إيه سياسة الإجازات في شركتي؟" مش هيعرف يجاوب. الموديل اتدرّب على الإنترنت، مش على PDFs الشركة. لو حاولت تحط كل ملفات الشركة في الـ prompt، هتقابل مشكلتين:
- الـ context window محدود (200K توكن في Claude، 128K في GPT-4o، أقل في موديلات تانية).
- التكلفة بتفرقع. كل سؤال هيكلّفك دولارات بدل سنتات لأنك بتبعت كل الكتاب علشان تجيب جملة.
مثال بسيط جدًا قبل التعريف العلمي
تخيّل عندك مكتبة فيها 10 آلاف كتاب. عميل دخل سألك "فين كتاب الطبخ المغربي؟". هتعمل إيه؟
- لو روحت بتقرأ كل الـ 10 آلاف كتاب علشان تجاوب → ده غباء صريح. وده بالظبط اللي بيحصل لو حطّيت كل ملفاتك في prompt.
- المنطقي إنك تروح للفهرس، تجيب 3 كتب فيها "طبخ مغربي"، وتقدّمهم للعميل يقرأ منهم.
RAG بيشتغل بنفس الفكرة بالظبط، بس مع AI:
- الـ AI بيدوّر في "فهرس" ذكي للملفات بدل ما يقرأها كلها.
- بيجيب أهم 3 لـ 5 قطع نص متعلقة بالسؤال.
- بيبعتهم للموديل مع السؤال كـ context.
- الموديل بيرد بناءً على القطع دي بس، مش من ذاكرته العامة.
التعريف العلمي الدقيق
RAG اختصار لـ Retrieval-Augmented Generation. هي معمارية بتجمع خطوتين منفصلتين:
- Retrieval: البحث عن أجزاء نص متعلقة بالسؤال من قاعدة بيانات خارجية، مش من تدريب الموديل.
- Generation: استخدام الموديل اللغوي (LLM) لتوليد إجابة بناءً على النص اللي اتجاب من خطوة الـ retrieval.
المعمارية اقترحها Lewis et al. في ورقة Facebook AI سنة 2020. الفكرة الأساسية إن الموديل مش لازم "يحفظ" المعرفة، يكفي إنه "يقرأ" المعرفة الصحيحة وقت السؤال.
إزاي RAG بيشتغل خطوة بخطوة
عندك مرحلتين، الأولى بتعملها مرة واحدة، والتانية مع كل سؤال.
المرحلة الأولى: الفهرسة (one-time)
- تقسّم ملفاتك لقطع صغيرة (chunks) كل واحدة بين 200 و 500 كلمة.
- كل قطعة بتحوّلها لـ embedding (متجه أرقام بيمثّل المعنى). متجه واحد عادة بين 384 و 1536 رقم.
- تخزّن المتجهات دي في قاعدة بيانات مخصصة اسمها Vector Database، زي Pinecone أو Qdrant أو Chroma.
المرحلة الثانية: الرد (per-question)
- السؤال بيتحوّل لـ embedding بنفس الطريقة.