الدرس 11 من 20

الذاكرة والمعرفة

الذاكرة قصيرة المدى مقابل طويلة المدى

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

الوكلاء الفعالون يحتاجون كلا نوعي الذاكرة: قصيرة المدى للمحادثة الحالية وطويلة المدى للمعرفة المستمرة عبر الجلسات.

نظرة عامة على أنواع الذاكرة

النوعالنطاقالتخزينحالة الاستخدام
قصيرة المدىالجلسة الحاليةفي الذاكرةسياق المحادثة
طويلة المدىعبر الجلساتقاعدة بيانات/مخزن متجهاتتفضيلات المستخدم، الحقائق
عرضيةالتجارب السابقةمخزن متجهاتالمواقف السابقة المماثلة
دلاليةالحقائق والمفاهيمرسم معرفيمعرفة المجال

الذاكرة قصيرة المدى

تتابع المحادثة الحالية:

from langchain.memory import ConversationBufferMemory

# مخزن بسيط - يخزن جميع الرسائل
memory = ConversationBufferMemory()
memory.save_context(
    {"input": "اسمي أليس"},
    {"output": "تشرفت بمعرفتك يا أليس!"}
)

# مخزن نافذة - يحتفظ بآخر N تبادلات
from langchain.memory import ConversationBufferWindowMemory
memory = ConversationBufferWindowMemory(k=10)

# ذاكرة ملخصة - تلخص الرسائل القديمة
from langchain.memory import ConversationSummaryMemory
memory = ConversationSummaryMemory(llm=llm)

الذاكرة طويلة المدى

تحافظ على المعلومات عبر الجلسات:

import json
from datetime import datetime

class LongTermMemory:
    def __init__(self, user_id, db):
        self.user_id = user_id
        self.db = db

    def remember(self, key, value, metadata=None):
        """تخزين حقيقة عن المستخدم"""
        self.db.upsert({
            "user_id": self.user_id,
            "key": key,
            "value": value,
            "metadata": metadata,
            "updated_at": datetime.now()
        })

    def recall(self, key):
        """استرجاع حقيقة مخزنة"""
        return self.db.query(
            user_id=self.user_id,
            key=key
        )

    def search(self, query):
        """بحث دلالي عبر الذكريات"""
        embedding = embed(query)
        return self.db.vector_search(
            user_id=self.user_id,
            embedding=embedding,
            top_k=5
        )

دمج أنواع الذاكرة

وكيل الإنتاج عادةً يستخدم أنظمة ذاكرة متعددة:

class AgentMemory:
    def __init__(self, user_id):
        # قصيرة المدى: المحادثة الحالية
        self.conversation = ConversationBufferWindowMemory(k=20)

        # طويلة المدى: حقائق المستخدم
        self.user_facts = LongTermMemory(user_id, facts_db)

        # عرضية: المحادثات السابقة
        self.episodes = VectorStore(f"episodes_{user_id}")

    def get_context(self, query):
        """بناء السياق من جميع أنواع الذاكرة"""
        context = {
            "recent": self.conversation.load_memory_variables({}),
            "user_info": self.user_facts.recall("preferences"),
            "similar_past": self.episodes.search(query, k=3)
        }
        return context

    def save_interaction(self, input, output):
        """الحفظ في كل من قصيرة وطويلة المدى"""
        # قصيرة المدى
        self.conversation.save_context(
            {"input": input},
            {"output": output}
        )

        # استخراج وتخزين الحقائق
        facts = extract_facts(input, output)
        for fact in facts:
            self.user_facts.remember(fact.key, fact.value)

استخراج الذاكرة

استخراج المعلومات القابلة للتذكر تلقائياً:

def extract_facts(conversation):
    """استخدام LLM لاستخراج الحقائق التي تستحق التذكر"""
    prompt = """
    استخرج الحقائق الرئيسية من هذه المحادثة التي يجب تذكرها:
    - تفضيلات المستخدم
    - التواريخ/الأحداث المهمة
    - الأهداف أو الاحتياجات المذكورة

    المحادثة: {conversation}

    الحقائق (تنسيق JSON):
    """
    return llm.generate(prompt.format(conversation=conversation))

أفضل الممارسات

الممارسةلماذا تهم
حدد نطاق الذاكرة بشكل مناسبلا تخزن كل شيء
أضف طوابع زمنيةاعرف متى تم تعلم المعلومة
مكّن النسيانأزل المعلومات القديمة
احترم الخصوصيةتعامل مع البيانات الشخصية بعناية
اختبر دقة الاسترجاعتحقق من استرجاع الذاكرة

بعد ذلك، سنناقش إبقاء الوكلاء محدثين مع انقطاعات المعرفة والتحديثات. :::

مراجعة سريعة: كيف تجد هذا الدرس؟

اختبار

الوحدة 3: الذاكرة والمعرفة

خذ الاختبار
نشرة أسبوعية مجانية

ابقَ على مسار النيرد

بريد واحد أسبوعياً — دورات، مقالات معمّقة، أدوات، وتجارب ذكاء اصطناعي.

بدون إزعاج. إلغاء الاشتراك في أي وقت.