Phase 14: Agent Engineering

الذاكرة الهجينة: المتجه + الرسم البياني + KV

يدير الذاكرة الهجينة ثلاثة مخازن متوازية متجهة للتشابه التجاري ، KV للبحث السريع عن الحقائق ، الرسم البياني للتفكير في العلاقة بين الكيانات مع طبقة تسجيل تضمنها عند الاسترداد. هذا نمط إنتاج يستخدم على نطاق واسع للذاكرة الخارجية. Mem0 (تشيكارا وآخرون ، 2025) هو تنفيذ مرجعي واحد.

Type: Build

Languages: Python (stdlib)

Prerequisites: Phase 14 · 07 (MemGPT), Phase 14 · 08 (Letta Blocks)

Time: ~75 minutes

أهداف التعلم

  • شرح لماذا مخزن واحد (مجهر فقط، الرسم البياني فقط، KV فقط) غير كافية لذاكرة العميل.
  • اسم ثلاثة متاجر متوازية في Mem0 وما يُحسن لكل منها
  • وصف درجة الاندماج في Mem0 الصلة والأهمية والجدد ولماذا هي مبلغ معين، وليس Hierarchy.
  • تنفيذ لعبة ذاكرة ثلاثية الطوابق في stdlib مع add()الذي يكتب إلى كل ثلاثة وsearch()هذا يضبط النتائج

المشكلة

متجر واحد خاطئ لأحد ثلاث فئات الاستفسارات:

  • Semantic similarity"ماذا ناقشنا عن التجول العميل الأسبوع الماضي؟" فاز فيكتور، و"كيف" و"غراف"
  • Fact lookup "ما هو رقم الهاتف للمستخدم؟" كيف يفوز، والمتجه هو مضيعة، والجراف هو المبالغ فيه.
  • Relationship reasoning "أي عملاء يشتركون في نفس الكيان التفويض؟" الفوز الرسم البياني؛ المتجه وكيف لا يمكن أن تجيب.

وكلاء الإنتاج يخرجون كل ثلاثة في جلسة واحدة. ذاكرة متجر واحد هو دائما خاطئ بالنسبة لثلاثة منهم. مساهمة Mem0 هو توصيل كل ثلاثة خلف واحد add-أجلsearchالسطح مع وظيفة تسجيل التي تجمعهم.

المفهوم

ثلاثة متاجر متوازية

مذكرة (arXiv: 2504.19413, أبريل 2025)add(text, user_id, metadata):

  1. استخراج الحقائق المرشحة من النص (خطوة مدفوعة على ماجستير في إدارة الأعمال).
  2. اكتب كل حقيقة في مخزن المتجه (التركيب) للبحث عن النطق.
  3. اكتب كل حقيقة إلى مخزن KV المفتوح (user_id، fact_type، entity) للبحث O(1).
  4. اكتب كل حقيقة إلى مخزن الرسم البياني (Mem0g) كحواف مدرجة للاستفسارات العلاقة.

علىsearch(query, user_id):

  1. متجر المتجه يعود إلى أعلى ك من خلال إضافة كوسين.
  2. يعيد مخزن KV النقاط المباشرة المفتاحة على استقصاء (user_id، النوع، الكيان).
  3. مخزن الرسوم يعيد الرسوم الفرعية يمكن الوصول إليها من كيانات الاستفسار.
  4. طبقة تسجيل الدرجات تجمع بين الثلاثة

تسجيل الاندماج

score = w_relevance * relevance(q, record)
      + w_importance * importance(record)
      + w_recency * recency(record)
  • Relevance متجه كوسين، KV مطابقة دقيقة، وزن مسار الرسم البياني.
  • Importance تم وضع علامات على وقت الكتابة أو تعلم (بعض الحقائق هي أكثر أهمية: الأسماء والهوية والسياسات).
  • Recency التدهور المتفصلي مع مرور الوقت منذ آخر كتابة أو قراءة.

الوزن يتم ضبطه لكل منتج. أعلى w_recencyللعملاء في الدردشة؛ أعلى w_importanceبالنسبة لوكلاء الامتثال؛ أعلى w_relevanceلعملاء الاستعلام

التفكير في الأوقات

يضيف Mem0g جهاز كشف النزاعات. عندما تتناقض حقيقة جديدة مع حافة قائمة، يتم وضع علامة على الحافة الحالية غير صالحة ولكن لا يتم حذفها. تسأل عن الوقت ("ما كانت مدينة المستخدم في مارس؟") عبر المخطط الفرعي الصالح في الوقت الحالي.

هذا هو السلوك الذي يُعَمّلُه نمطِ إلغاءِ الالتزامِ لِيتّا.

أرقام المراجع

تقارير ورقة "ميم" (2025):

  • LoCoMo(ذاكرة محادثة طويلة الأجل): 91.6
  • LongMemEval(ذاكرة حلقة طويلة الأفق): 93.4
  • BEAM 1M(مؤشر مقارنة لـ M-token memory): 64.1

خطوط مقارنة (مدرسة التدريب الدولي 128k في السياق الكامل، متجر متجهات مسطحة، KV مسطحة) تخسر جميعها بنسبة 10+ نقاط. لا تبرر المؤشرات وحدها الاختيار الشكل التشغيلي ولكن الأرقام تظهر أن تصميم الاندماج ليس خطأ في التدريب.

تصنيف النطاق

Mem0 تقسم الذاكرة حسب النطاق:

  • User memory يستمر عبر الجلسات، ويتم وضعها علىuser_id. . .
  • Session memory يستمر في خيط واحد.
  • Agent memory حالة حالة كل وكيل

كل كتابة تحصل على نطاق واحد. الاستعلام يمكن استفسار عبر النطاقات مع وزن لكل نطاق. مزيج النطاقات دون تفكير هو كيف تحصل على "المساعد أخبر أليس عن مشروع بوب" الحوادث.

حيث يذهب هذا النمط خطأ

  • Embedding drift.النتائج المتجهة التي تبدو على ما يرام على المئة استفسارات الأولى تتدهور مع نمو الجسم. أضف إعادة إدراج دوري من السجلات المستخدمة أعلى N.
  • KV schema creep. (user_id, type, entity)يبدو بسيطاً حتى يضيف كل فريق فريق خاص بهtype- مراجعة النوع المحدد ربع سنويًا
  • Graph explosion.واحد صاخب استخراج يضيف 50 حافة لكل رسالة.addدعوة، إسقاط حواف منخفضة الثقة.

بناءها

code/main.pyيطبق نمط ثلاث طوابق في stdlib:

  • VectorStore التشابه البطيء بين الرموز كمركز متكامل.
  • KVStore إشارة إلى(user_id, fact_type, entity). . .
  • GraphStore حواف مدرجة (الموضوع، العلاقة، الموضوع، صالحة).
  • Mem0 واجهة على المستوى العلوي مع add()،search()، و تسجيل الاندماج و استرداد مستوى
  • أثر عمل على محادثة متعددة المستخدمين، متعددة الجلسات.

إشغله

python3 code/main.py

النتائج تظهر ثلاث مسارات استدعاء منفصلة بالإضافة إلى أعلى المضطربة.main()وشاهد تغيير التصنيف

استخدمها

  • Mem0 (Apache 2.0) جاهز للإنتاج. استضافة الذاتية مع Postgres + Qdrant + Neo4j ، أو استخدام السحابة المدارة.
  • Letta محور ثلاثي المستويات/التذكر/المؤلف؛ احضر خلفيات متجهة وخطوط رسمية خاصة بك.
  • Zep بديل تجاري مع KG مؤقتة واستخراج الحقائق.
  • Custom builds عندما تحتاج إلى التحكم الدقيق في الجهاز الاستخراجي (التزام) أو الوزن الاندماج (موثلي الصوت حيث تهيمن الحاجة).

أرسله

outputs/skill-hybrid-memory.mdيُولد منصة ذاكرة ثلاث طوابق مع مؤشر التضميد، وتصنيف النطاق، والطرد الزمني متصل.

التمارين

  1. استبدل شبيهة متجهات الألعاب بنموذج إضافة حقيقي (تحولات الجملة، أولاما، إضافة OpenAI). قياس recall@10 على محادثة طويلة اصطناعية. هل تتحرك التصنيف فوق 1000 كتابة؟
  2. إضافة استفسار زمني: search(query, as_of=timestamp)إرجاع فقط سجلات صالحة في ذلك الوقت أو قبل ذلك الوقت. أي متجر يحتاج إلى العمل الأكثر؟
  3. تنفيذ جهاز كشف النزاعات: إذا كانت الحقيقة المتوصلة تتناقض مع حافة الرسم البياني، قم بإبطال الحافة القديمة وتسجيل كلتا. اختبار على "المستخدم يعيش في برلين" -> "المستخدم يعيش في لشبونة".
  4. نقل المحقق من الاندماج ليشمل user_feedbackحجم (إبصراً على السجلات المكتسبة). كيفية منع اللعب (الوكيل يعيد فقط السجلات التي أحبها بالفعل) ؟
  5. اقرأ وثائق المذكرة (docs.mem0.ai) احملي اللعبة إلىmem0مقارنة جودة الاسترداد على نفس 20 استفسار اختبار.

الشروط الرئيسية

TermWhat people sayWhat it actually means
Hybrid memory"Vector plus graph plus KV"Three stores written in parallel, fused on retrieval
Fact extraction"Memory ingestion"LLM step that breaks text into (entity, relation, fact) tuples
Fusion scoring"Relevance ranking"Weighted sum of relevance, importance, recency
Scope"Memory namespace"user / session / agent — determines who sees what
Mem0g"Memory graph"Typed edges with temporal validity for relationship queries
Temporal invalidation"Soft delete"Mark contradicted edges invalid; never delete
Embedding drift"Retrieval rot"Vector quality degrades as corpus grows; re-embed periodically

المزيد من القراءة

This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.

Browse the complete course catalog or open this lesson on GitHub.