الفصل 1: ما هو RAG؟
مقدمة
التوليد المعزّز بالاسترجاع (RAG) تقنية تعزّز نماذج اللغة الكبيرة (LLMs) بتزويدها بمعلومات ذات صلة تُسترجع من مصادر معرفة خارجية. بدل الاعتماد فقط على بيانات تدريب النموذج، تجلب أنظمة RAG الوثائق المناسبة وتستخدمها لتوليد إجابات أدق وأحدث وأكثر ارتباطًا بالسياق.
المفهوم الأساسي
تخيّل RAG كاختبار كتاب مفتوح:
- بدون RAG (كتاب مغلق): يجيب نموذج LLM عن الأسئلة بما حفظه أثناء التدريب فقط
- مع RAG (كتاب مفتوح): يمكن للنموذج البحث عن المعلومات ذات الصلة قبل الإجابة
الأصل والتاريخ
صاغ Lewis وزملاؤه مصطلح «Retrieval-Augmented Generation» في ورقتهم لعام 2020 "Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks".
محطات أساسية:
- 2020: نشر ورقة RAG الأصلية من Facebook AI Research
- 2021: تحسينات Dense Passage Retrieval (DPR)
- 2022: انتشار قواعد البيانات المتجهية على نطاق واسع
- 2023: تعميم خطوط أنابيب RAG عبر LangChain وLlamaIndex
- 2024: تقنيات RAG متقدمة (HyDE، Multi-Query، وغيرها)
RAG مقابل المقاربات الأخرى
RAG مقابل Fine-Tuning
| الجانب | RAG | Fine-Tuning |
|---|---|---|
| تحديث البيانات | فوري | يتطلّب إعادة تدريب |
| التكلفة | أقل | أعلى |
| الأنسب لـ | المعرفة الديناميكية | تغييرات السلوك |
| الشفافية | يمكن الاستشهاد بالمصادر | صندوق أسود |
| تعقيد الإعداد | متوسط | أعلى |
RAG مقابل هندسة الـ prompt
| الجانب | RAG | هندسة الـ prompt |
|---|---|---|
| حجم السياق | يتعامل مع قواعد معرفة كبيرة | محدود بنافذة السياق |
| الدقة | أعلى للاستعلامات الواقعية | تعتمد على معرفة النموذج |
| حالة الاستخدام | مهام كثيفة المعرفة | مهام عامة |
المكوّنان الأساسيان
1. المسترجع (Retriever)
المسترجع مسؤول عن إيجاد المعلومات ذات الصلة:
# Simplified retriever concept
def retrieve(query, knowledge_base, top_k=5):
"""
Find the most relevant documents for a query
"""
# Convert query to embedding
query_embedding = embed(query)
# Search knowledge base
results = knowledge_base.similarity_search(
query_embedding,
top_k=top_k
)
return results
2. المولّد (Generator)
يستخدم المولّد السياق المسترجع لإنتاج الإجابات:
# Simplified generator concept
def generate(query, retrieved_docs, llm):
"""
Generate a response using retrieved context
"""
# Build prompt with context
context = "\n".join([doc.content for doc in retrieved_docs])
prompt = f"""Based on the following context, answer the question.
Context:
{context}
Question: {query}
Answer:"""
# Generate response
response = llm.generate(prompt)
return response
تشبيه من الواقع
تخيّل أنك وكيل دعم عملاء:
بدون RAG:
تجيب من الذاكرة، وقد تقدّم معلومات قديمة أو غير صحيحة.
مع RAG:
قبل الإجابة، تبحث بسرعة في قاعدة معرفة الشركة، تجد وثيقة السياسة ذات الصلة، وتقدّم إجابة دقيقة مع مرجع.
متى تستخدم RAG
RAG مثالي عندما تحتاج إلى:
✅ معلومات محدّثة - وثائق الشركة، الأخبار، الأبحاث
✅ معرفة متخصّصة - وثائق طبية أو قانونية أو تقنية
✅ إسناد المصادر - ذكر مصدر المعلومة
✅ الوصول إلى بيانات خاصة - معلومات داخلية للشركة
✅ تقليل الهلوسات - تثبيت الإجابات في حقائق
قد لا يكون RAG الخيار الأفضل عندما:
❌ الكتابة الإبداعية - شعر، خيال، عصف ذهني
❌ محادثة عامة - الدردشة العابرة لا تحتاج استرجاعًا
❌ تغييرات سلوكية - تعليم النموذج أسلوبًا جديدًا (استخدم fine-tuning)
تطبيقات صناعية
دعم العملاء
User: "What's your return policy for electronics?"
RAG: Retrieves current return policy → Generates accurate response
البحث القانوني
User: "Find case law about intellectual property in software"
RAG: Retrieves relevant cases → Summarizes findings
المعلومات الطبية
User: "What are the side effects of medication X?"
RAG: Retrieves FDA documents → Provides accurate list
البحث المؤسسي
User: "What was discussed in last quarter's board meeting?"
RAG: Retrieves meeting minutes → Summarizes key points
مصطلحات أساسية
| المصطلح | التعريف |
|---|---|
| Retrieval | عملية إيجاد الوثائق ذات الصلة |
| Augmentation | إضافة السياق المسترجع إلى الـ prompt |
| Generation | إنتاج نموذج LLM لإجابة |
| Knowledge Base | مجموعة الوثائق التي يُبحث فيها |
| Embedding | تمثيل متجهي للنص |
| Semantic Search | إيجاد الوثائق بالمعنى لا بالكلمات المفتاحية |
ملخص
- يجمع RAG بين الاسترجاع والتوليد لإجابات ذكاء اصطناعي أفضل
- يعالج قيودًا أساسية في LLM مثل المعرفة القديمة والهلوسات
- مكوّنان رئيسيان: المسترجع (يجد الوثائق) + المولّد (ينتج الإجابة)
- مثالي للمهام كثيفة المعرفة التي تتطلّب دقة واستشهادات
- يختلف عن fine-tuning - RAG للمعرفة، وfine-tuning للسلوك
الخطوات التالية
تابع إلى الفصل 2: لماذا RAG؟ لفهم المشكلات المحددة التي يعالجها RAG.