اضمحلال الذاكرة وجمع القمامة
انسَ الذكريات القديمة قليلة الصلة وفق جدول زمني، حتى يظل الفهرس مركزًا.
اضمحلال الذاكرة وجمع القمامة درس مجاني في AI Agents على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في AI Agents، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة AI Agents 4 دروس في المجموع.
تنمو الذاكرة بلا حدود
من دون صيانة نشطة، يستمر مخزن الذاكرة في النمو. وتشوّه الذكريات القديمة وغير ذات الصلة نتائج الاسترجاع وتهدر مساحة التخزين.
تحتاج الذاكرة إلى جمع القمامة، شأنها شأن أي مورد آخر.
لماذا نحذف الذكريات؟
- الخصوصية — الامتثال لطلبات الحذف بموجب GDPR/CCPA
- الصلة — تقل احتمالية صحة الحقائق القديمة حاليًا
- التكلفة — تتراكم تكلفة تخزين المتجهات مع التوسع
- الجودة — تؤدي الفهارس المتضخمة إلى إضعاف صلة نتائج البحث
الاستراتيجية 1: TTL
حدّد طابعًا زمنيًا لانتهاء صلاحية كل ذكرى:
ALTER TABLE semantic_facts ADD COLUMN expires_at TIMESTAMPTZ;
-- short-lived
INSERT INTO semantic_facts (..., expires_at) VALUES (..., NOW() + INTERVAL '7 days');
-- garbage collect
DELETE FROM semantic_facts WHERE expires_at < NOW();الاستراتيجية 2: التلاشي بمرور الوقت
خفّض مستوى الثقة مع مرور الزمن — إذ تصبح الذكريات الأقدم أقل أولوية:
import math
def decayed_confidence(original, age_days, half_life_days=30):
return original * math.exp(-age_days * math.log(2) / half_life_days)
# Then retrieval filters: WHERE decayed_confidence > 0.3
for age in [0, 30, 60, 90]:
print(f"Age {age} days -> confidence {decayed_confidence(1.0, age):.3f}")
الاستراتيجية 3: التلاشي بحسب الاستخدام
الذكريات التي لا تُسترجع مطلقًا ليست مفيدة — احذفها بعد انتهاء فترة سماح:
ALTER TABLE semantic_facts ADD COLUMN last_used_at TIMESTAMPTZ DEFAULT NOW();
-- update on retrieval
UPDATE semantic_facts SET last_used_at = NOW() WHERE id = ANY(:retrieved_ids);
-- gc
DELETE FROM semantic_facts WHERE last_used_at < NOW() - INTERVAL '90 days';الاستراتيجية 4: حد السعة لكل مستخدم
حدّد عدد الذكريات لكل مستخدم؛ وعند امتلاء السعة، أزِل الذكرى الأقل استخدامًا:
MAX_FACTS = 500
SELECT COUNT(*) FROM semantic_facts WHERE user_id = %s;
-- if > MAX_FACTS: delete oldest unusedالضغط: دمج الذكريات المتشابهة
قد تعبّر ذكريات متعددة عن الشيء نفسه بطرق مختلفة. اجمعها في مجموعات وادمجها دوريًا:
def compact(user_id):
facts = all_facts(user_id)
clusters = cluster_by_embedding(facts, threshold=0.85)
for cluster in clusters:
merged = llm.invoke(f'Merge these into one canonical statement: {cluster}')
replace_with_merged(cluster, merged)حل التناقضات
إذا تعارضت ذكريتان، فضع علامة على الأقدم باعتبارها قديمة:
def resolve(user_id, new_fact):
similar = retrieve(user_id, new_fact, k=5)
for s in similar:
if llm_says_contradicts(s, new_fact):
mark_obsolete(s.id)
save(new_fact)الاستراتيجية 5: ترجيح الأهمية
بعض الذكريات أهم من غيرها. امنح كل ذكرى درجة:
importance_prompt = 'Rate the importance of this fact for future interactions (0-1):\n{fact}'
for fact in facts:
score = float(llm.invoke(importance_prompt.format(fact=fact)).content)
update_importance(fact.id, score)
# Retrieval: weight by importance and recencyالتلخيص على طريقة Letta
يضغط Letta (MemGPT) الذاكرة الأرشيفية القديمة من خلال تلخيص كتل من الحقائق ذات الصلة عند امتلاء مساحة التخزين:
if archival_size > LIMIT:
block = oldest_facts(50)
summary = summarise(block)
replace(block, summary)الحذف الذي يفعّله المستخدم
وفّر للمستخدمين زرًا بعنوان «انسَني». عند النقر عليه:
def forget_user(user_id):
conn.execute('DELETE FROM semantic_facts WHERE user_id = %s', (user_id,))
conn.execute('DELETE FROM episodes WHERE user_id = %s', (user_id,))
vector_db.delete(filter={'user_id': user_id})الحذف المنطقي مقابل الحذف الفعلي
لأغراض التدقيق، يُفضّل استخدام الحذف المنطقي (وضع علامة على البيانات كمحذوفة مع إبقائها مشفّرة) حتى انقضاء فترة الاحتفاظ، ثم إجراء الحذف الفعلي:
ALTER TABLE semantic_facts ADD COLUMN deleted_at TIMESTAMPTZ;
-- queries always: WHERE deleted_at IS NULLمهام GC المجدولة
شغّل GC وفق جدول زمني (cron أو عامل يومي). لا تنفّذ GC كثيفًا بشكل مباشر — فهو يزيد زمن الاستجابة للمستخدمين:
# Daily cron at 03:00 UTC
for user_id in all_users():
decay_confidence(user_id)
delete_expired(user_id)
compact_clusters(user_id)لماذا يحدث التلاشي؟
لماذا نخفّض مستوى الثقة في الذاكرة بمرور الوقت؟
مراجعة
TTL، والتلاشي، والإزالة بحسب الاستخدام، وحدود السعة، والضغط، وحل التناقضات، والحذف الذي يفعّله المستخدم. تحتاج الذاكرة إلى آلية تنظيف؛ فابنِ واحدة.
الأسئلة الشائعة
هل درس «اضمحلال الذاكرة وجمع القمامة» مجاني؟
نعم — نص درس «اضمحلال الذاكرة وجمع القمامة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة AI Agents، انتقل إلى CoddyKit PRO. تتضمن دورة AI Agents 4 دروس في المجموع.
ماذا ستتعلم في «اضمحلال الذاكرة وجمع القمامة»؟
انسَ الذكريات القديمة قليلة الصلة وفق جدول زمني، حتى يظل الفهرس مركزًا. تتمرن على AI Agents مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ AI Agents؟
لا تُشترط خبرة سابقة. AI Agents على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «اضمحلال الذاكرة وجمع القمامة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس AI Agents هذا؟
نعم. كل درس في AI Agents يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- الذاكرة العرضية (سجل كل جلسة)
- الذاكرة الدلالية (حقائق متجهة)
- الذاكرة الإجرائية (مكتبة المهارات)
- اضمحلال الذاكرة وجمع القمامة