إنتقل إلى المحتوى الرئيسي

الفصل 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​

الجانبRAGFine-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.