الوكلاء المدعومون بـ RAG وأنظمة الذاكرة

بنيات ذاكرة الوكلاء والاسترجاع

5 دقيقة للقراءة

لماذا يحتاج الوكلاء للذاكرة

نموذج اللغة الكبير (LLM) عديم الحالة ينسى كل شيء بين استدعاءات API. بدون ذاكرة، لا يستطيع الوكيل الحفاظ على سياق المحادثة، أو استرجاع المعرفة الواقعية من مستندات الشركة، أو التكيف مع تفضيلات المستخدم بمرور الوقت. الذاكرة تحول نموذج لغة عديم الحالة إلى وكيل مستمر واعٍ بالسياق.

ذاكرة الوكيل تخدم ثلاثة أغراض متميزة:

الغرضمثالما الذي يتعطل بدونها
سياق المحادثةتذكر أن المستخدم قال "مشروعي يستخدم PostgreSQL" قبل خمس رسائلالوكيل يطرح نفس الأسئلة التوضيحية بشكل متكرر
المعرفة الواقعيةاسترجاع سياسة استرداد الشركة من المستندات الداخليةالوكيل يخترع سياسات أو يعطي إجابات عامة
التفضيلات المكتسبةمعرفة أن هذا المستخدم يفضل أمثلة كود موجزة بدل الشروحات المطولةالوكيل لا يستطيع تخصيص التفاعلات

تصنيف الذاكرة

أنظمة ذاكرة الوكلاء تتوافق مع تصنيف راسخ. فهم هذه الفئات يساعدك في تصميم بنية الذاكرة المناسبة لحالة الاستخدام المعنية.

الذاكرة العاملة (نافذة السياق)

نافذة سياق LLM هي الذاكرة العاملة للوكيل. كل ما يمكن للنموذج "رؤيته" في وقت الاستدلال — أمر النظام، تاريخ المحادثة، المستندات المسترجعة، نتائج الأدوات — يجب أن يتسع داخل هذه النافذة.

  • السعة: تختلف حسب النموذج (مثلاً 1 مليون token لـ GPT-5.4، و1 مليون token لـ Claude Sonnet 4.6، و1 مليون token لـ Gemini 3.1 Pro)
  • المقايضة: نوافذ السياق الأكبر تزيد التكلفة وزمن الاستجابة لكل طلب
  • القيد الأساسي: السياق محدود، لذا يجب أن تقرر ما تضمنه وما تستبعده

الذاكرة العرضية (تاريخ المحادثة)

الذاكرة العرضية تخزن تسلسل التفاعلات السابقة — ما قاله المستخدم، ما فعله الوكيل، ما الأدوات التي استُدعيت، وما النتائج التي عادت.

# هيكل ذاكرة عرضية بسيط
episodic_memory = [
    {"role": "user", "content": "اعثر على جميع الطلبات فوق 500$"},
    {"role": "assistant", "content": None, "tool_calls": [
        {"name": "query_orders", "args": {"min_amount": 500}}
    ]},
    {"role": "tool", "content": "وُجد 23 طلباً بإجمالي 18,450$"},
    {"role": "assistant", "content": "وجدت 23 طلباً فوق 500$..."},
]

مع طول المحادثات، يجب إدارة الذاكرة العرضية — لا يمكنك الاستمرار في حقن التاريخ الكامل في كل طلب إلى ما لا نهاية.

الذاكرة الدلالية (قاعدة المعرفة)

الذاكرة الدلالية تخزن المعرفة الواقعية التي يمكن للوكيل استرجاعها عند الطلب. هنا يأتي دور RAG (التوليد المعزز بالاسترجاع): بدلاً من حشو كل المعرفة في الأمر، تسترجع فقط الأجزاء ذات الصلة لكل استعلام.

  • التخزين: قواعد بيانات المتجهات (مثل Pinecone وWeaviate وChroma وpgvector)، مخازن المستندات
  • الاسترجاع: بحث التشابه القائم على التضمين، البحث بالكلمات المفتاحية، أو الأساليب الهجينة
  • النطاق: مستندات الشركة، كتالوجات المنتجات، قواعد المعرفة، مستودعات الكود

الذاكرة الإجرائية (الأنماط المكتسبة)

الذاكرة الإجرائية تلتقط كيف يجب أن يتصرف الوكيل — الأنماط وتدفقات العمل والاستراتيجيات التي تعلمها. يمكن تنفيذها كالتالي:

  • أوامر النظام مع التعليمات والأمثلة
  • أمثلة few-shot مخزنة ومسترجعة ديناميكياً
  • أوزان نموذج مضبوطة بدقة تشفر سلوكيات محددة

بنيات RAG للوكلاء

RAG هو الآلية الأساسية لربط الوكلاء بالمعرفة الخارجية. البنية التي تختارها لها تأثير كبير على جودة الإجابات.

RAG البسيط

الأسلوب الأبسط: تضمين الاستعلام، استرجاع أعلى K أجزاء تشابهاً، حشوها في الأمر.

استعلام المستخدم → التضمين → بحث المتجهات (top-K) → الحشو في الأمر → LLM → الإجابة

قيود RAG البسيط:

  • تمريرة استرجاع واحدة — إذا أخطأ البحث الأول المحتوى ذا الصلة، تتدهور الجودة
  • لا إعادة صياغة للاستعلام — سؤال المستخدم الخام قد لا يتطابق مع طريقة تخزين المعلومات
  • لا تحقق — لا يستطيع الوكيل فحص ما إذا كان المحتوى المسترجع يجيب فعلاً على السؤال

RAG الوكيلي

RAG الوكيلي يعامل الاسترجاع كعملية استدلال متعددة الخطوات. الوكيل يخطط وي​سترجع ويقيّم ويكرر بنشاط.

تخطيط الاستعلام: قبل البحث، يحلل الوكيل السؤال وقد يفككه إلى استعلامات فرعية.

# سؤال معقد يتطلب تفكيكاً
user_query = "قارن إيرادات الربع الثالث والرابع واشرح المحركات الرئيسية"

# الوكيل يفكك إلى استعلامات فرعية
sub_queries = [
    "أرقام وتفصيل إيرادات الربع الثالث",
    "أرقام وتفصيل إيرادات الربع الرابع",
    "الأحداث التجارية الرئيسية بين الربع الثالث والرابع",
]
# كل استعلام فرعي يُبحث بشكل مستقل، وتُجمع النتائج

التأمل الذاتي: بعد استرجاع المستندات، يقيّم الوكيل ما إذا كانت النتائج كافية للإجابة على السؤال.

# أمر التأمل الذاتي (مفاهيمي)
reflection_prompt = """
بالنظر إلى هذه المستندات المسترجعة: {retrieved_docs}
والسؤال الأصلي: {user_query}

هل تحتوي هذه المستندات على معلومات كافية للإجابة على السؤال؟
- إذا نعم: تابع لتوليد الإجابة
- إذا لا: ما المعلومات الإضافية المطلوبة؟ أعد صياغة الاستعلام.
"""

الاسترجاع متعدد القفزات: بعض الأسئلة تتطلب تسلسل عمليات استرجاع متعددة — إجابة البحث الأول تُوجه ما يجب البحث عنه بعد ذلك.

استعلام: "من يدير الفريق الذي بنى الميزة X؟"
  → بحث 1: "الميزة X" → يجد "بُنيت بواسطة فريق ألفا"
  → بحث 2: "مدير فريق ألفا" → يجد "يديره سارة تشن"
  → الإجابة: "سارة تشن تدير الفريق الذي بنى الميزة X"

اختيار البنية المناسبة

السيناريوالأسلوب الموصى بهلماذا
بحث بسيط في الأسئلة الشائعةRAG البسيطالأسئلة تتوافق مباشرة مع الإجابات المخزنة
أسئلة تحليلية معقدةRAG الوكيلي مع تفكيك الاستعلامعدة أجزاء من المعلومات مطلوبة
أسئلة تتطلب استدلالاً عبر المستنداتالاسترجاع متعدد القفزاتالإجابة تعتمد على تسلسل الحقائق
تطبيقات عالية المخاطر (قانونية، طبية)RAG الوكيلي مع التأمل الذاتييجب التحقق من جودة الاسترجاع قبل الإجابة

استراتيجيات التقطيع

كيفية تقسيم المستندات إلى أجزاء تؤثر مباشرة على جودة الاسترجاع. الاستراتيجية المناسبة تعتمد على نوع المحتوى وأنماط الاستعلام.

الاستراتيجيةكيف تعملالأفضل لـالعيب
الحجم الثابتالتقسيم كل N token مع تداخلمحتوى متجانس (سجلات، نصوص مكتوبة)يقطع في منتصف الجملة، يكسر السياق
العوديالتقسيم بالفقرات، ثم الجمل، ثم الرموزمستندات مهيكلة (مقالات، وثائق)يتطلب ضبط الفواصل حسب نوع المحتوى
الدلاليتجميع الجمل حسب تشابه التضمينمستندات متعددة المواضيعمكلف حسابياً وقت الاستيعاب
الواعي بالمستندالتقسيم بالعناوين أو الأقسام أو الحدود المنطقيةتنسيقات مهيكلة (Markdown وHTML والكود)يتطلب منطق تحليل خاص بالمحتوى

المبدأ الأساسي: يجب أن تكون الأجزاء مكتفية ذاتياً بما يكفي لتكون مفهومة بدون السياق المحيط، ولكن صغيرة بما يكفي لتكون دقيقة. نقطة بداية شائعة هي 256-512 token مع تداخل 10-20%.

إدارة نافذة السياق

عندما يكون لدى الوكيل تاريخ محادثة ومستندات مسترجعة وتعليمات نظام ونتائج أدوات، تمتلئ نافذة السياق بسرعة. تحتاج استراتيجيات لإدارة ما يدخل فيها.

التلخيص

ضغط أدوار المحادثة القديمة في ملخص، مع الاحتفاظ بالرسائل الأخيرة كما هي.

# استراتيجية إدارة السياق
context = []
context.append(system_prompt)              # ثابت: ~500 token
context.append(conversation_summary)        # مضغوط: ~200 token
context.append(recent_messages[-5:])        # حرفي: ~1000 token
context.append(retrieved_documents[:3])     # أعلى 3 أجزاء: ~1500 token
# الإجمالي: ~3200 token — يتسع بشكل مريح ضمن الميزانية

النافذة المنزلقة

الاحتفاظ فقط بآخر N رسالة في السياق، وإسقاط الأقدم.

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

التنقية القائمة على الأهمية

تسجيل كل جزء من السياق حسب صلته بالاستعلام الحالي وإسقاط العناصر منخفضة الأهمية أولاً.

  • الرسائل التي ذكر فيها المستخدم متطلبات أساسية: أهمية عالية
  • رسائل المجاملة أو التأكيد: أهمية منخفضة
  • نتائج الأدوات من خطوات سابقة: أهمية متوسطة (تُلخص عند الحاجة)

تخصيص ميزانية الرموز

خصص نافذة السياق الخاصة بك إلى ميزانيات صريحة:

المكونالميزانيةمثال (8 آلاف إجمالي)
أمر النظام10-15%~1000 token
ذاكرة المحادثة20-30%~2000 token
المستندات المسترجعة40-50%~3500 token
محجوز للمخرجات15-20%~1500 token

إسناد المصادر ومنع الهلوسة

الوكلاء الذين يسترجعون المعرفة يجب أن يسندوا إجاباتهم إلى مصادر محددة. بدون الإسناد، لا يستطيع المستخدمون التحقق من الادعاءات وتتآكل الثقة.

إسناد المصادر

كل ادعاء في استجابة الوكيل يجب أن يرتبط بجزء محدد من المصدر:

# هيكل الإسناد
attribution = {
    "claim": "سياسة الاسترداد تسمح بالإرجاع خلال 30 يوماً",
    "source_chunk_id": "policy-doc-chunk-42",
    "source_document": "refund-policy-v3.pdf",
    "confidence": 0.92,
    "relevant_excerpt": "يمكن للعملاء إرجاع المنتجات خلال 30 يوماً تقويمياً..."
}

منع الهلوسة

يجب أن يقتصر الوكيل على الادعاءات المدعومة بالمحتوى المسترجع. الاستراتيجيات الشائعة:

  • فحص التأريض: مقارنة كل جملة في الاستجابة مع الأجزاء المسترجعة
  • الامتناع عند عدم اليقين: إذا لم يتناول أي محتوى مسترجع السؤال، قل "لا أملك معلومات حول ذلك" بدلاً من التخمين
  • الاقتباس المباشر: تضمين مقتطفات ذات صلة من المستندات المصدرية
  • تسجيل الثقة: تعيين درجات ثقة ووضع علامات على الادعاءات منخفضة الثقة للمراجعة البشرية

مقاييس التقييم

الوكلاء المدعومون بـ RAG يحتاجون تقييماً منهجياً. ثلاثة مقاييس أساسية مهمة:

المقياسما يقيسهكيفية التقييم
الأمانةهل تحتوي الإجابة فقط على معلومات من المصادر المسترجعة؟فحص كل ادعاء مقابل أجزاء المصدر — معاقبة الادعاءات غير المدعومة
الصلةهل المستندات المسترجعة ذات صلة بالسؤال؟تقييم مدى تناول الأجزاء المسترجعة للاستعلام
الاكتمالهل تتناول الإجابة جميع أجزاء السؤال؟مقارنة تغطية الإجابة مع المجموعة الكاملة للمعلومات ذات الصلة

أبعاد تقييم إضافية لأنظمة الإنتاج:

  • زمن الاستجابة: كم يستغرق خط أنابيب الاسترجاع والتوليد الكامل؟
  • التكلفة: كم عدد الرموز المستهلكة لكل استعلام (الاسترجاع + التوليد)؟
  • المتانة: هل تتدهور الجودة مع الاستعلامات الغامضة أو المدخلات العدائية أو الأسئلة خارج النطاق؟

نصيحة للمقابلة: عند مناقشة تصميم نظام RAG، اذكر التقييم دائماً. المحاورون يريدون أن يروا أنك تفكر في كيفية قياس الجودة، وليس فقط في كيفية بناء النظام.

في المختبر، ستبني وكيل محادثة متكامل مدعوم بـ RAG مع تقطيع قابل للتكوين واسترجاع وكيلي وإدارة ذاكرة وحراس هلوسة. :::

اختبار

اختبار الوحدة 2: الوكلاء المدعومون بـ RAG وأنظمة الذاكرة

خذ الاختبار
هل كان هذا الدرس مفيدًا؟

سجّل الدخول للتقييم