داخل خط ذاكرة LangGraph: من رسالة إلى ذاكرة
تشريح خط الاستخراج في iRemember: لماذا LangGraph، كيف تتحول رسالة إلى ذكريات مرشحة مهيكلة، إزالة التكرار، المعالجة غير المتزامنة، وقرارات المخطط التي تجعل الاسترجاع ممكنًا.

معظم الشروح تريك prompt واحد: «استخرج الحقائق من هذه المحادثة». هذا الـprompt هو نحو 10٪ فقط من خط إنتاجي. إليك الـ90٪ الباقية كما بُنيت في iRemember.
لماذا LangGraph
الاستخراج ليس نداءً واحدًا بل سير عمل بحالة:
دفعة_رسائل
-> استخراج_مرشحين (LLM: حقائق، أحداث، أشخاص، قرارات)
-> حل_الكيانات (LLM + قواعد: من «هي»؟ دمج الأسماء البديلة)
-> إزالة_تكرار_وتثبيت (مطابقة متجهات ضد الذكريات الموجودة)
-> تسجيل_الأهمية (إشارات -> وزن)
-> كتابة (فقط إذا نجت مما سبق)
لكل خطوة أعطال مختلفة وتستحق تقييمها الخاص. LangGraph يعطينا رسمًا صريحًا بحالة موزونة النوع: اختبار التثبيت مستقلًا عن الاستخراج، إعادة محاولة أخطاء المخزن دون إعادة نداء المستخرج، وتفرعات (صفر كتابة للحديث العابر).
المخطط الذي يجعل الاسترجاع ممكنًا
كل ذكرى محفوظة تحمل: محتوى ذريًا مكتفٍ بذاته بلا ضمائر («سارة تفضل الرسائل الصوتية على المكالمات»)، نوعًا (تفضيل/حدث/حقيقة/قرار/علاقة)، كيانات محلولة، طوابع زمنية، وزن أهمية متعلمًا، ومتجه pgvector محسوبًا عند الكتابة.
أهم انضباط: المحتوى الذري المكتفي بذاته. مستخرج يخزّن «تحدثوا عن الزفاف» لم يخزّن شيئًا قابلًا للاسترجاع.
كل شيء غير متزامن
يعمل الاستخراج في Celery بعد انسياب الرد؛ حلقة المحادثة تدفع ثمن الاسترجاع فقط. نتيجتان تستحقان الهندسة: فجوات القراءة-بعد-الكتابة (عبارات «تذكر أن...» تمر بمسار كتابة سريع)، والإيدامبية (كل مهمة تحمل مفتاح نطاق رسائل كي لا تتضاعف التخزينات عند إعادة المحاولة).
التثبيت بدل الإضافة الأعمى
الإضافة الأعمى بداية التضخم. عندما يطابق مرشح ذكرى موجودة (تقاطع كيانات + تشابه فوق العتبة) يوجَّه لعقدة تثبيت: تحديث أو دمج أو إحلال بطابع زمني. التناقضات مدخل متوقع لا خطأ — الناس يغيرون وظائفهم ومدنهم.
ما أقول لنفسي الماضي
اكتب منطق التثبيت قبل صقل prompts الاستخراج؛ جودة إزالة التكرار تهيمن على الدقة المدركة. قيّم كل عقدة باستقلال بمجموعات ذهبية — الأرقام الشاملة تخفي أي مرحلة تراجعت. وأوقف الحديث العابر قبل المستخرج: بوابة مصنف رخيصة وفّرت ~40٪ من نداءات الاستخراج.
FAQ
لماذا LangGraph بدل نداءات LLM مباشرة؟
استخراج الذاكرة سير عمل متعدد الخطوات بحالة: استخراج مرشحين، حل الكيانات، إزالة التكرار، قرارات الكتابة. يمثله LangGraph رسمًا صريحًا بحالة مكتوبة النوع — قابل للاختبار عقدة بعقدة بدل ميجا-prompt هش.
هل يضيف الاستخراج تأخيرًا للردود؟
لا ينبغي. يعمل غير متزامن بعد إرسال الرد — عبر workers Celery لدينا. حلقة المحادثة تنتظر الاسترجاع فقط لا الكتابة.
كيف تمنع الذكريات المكررة أو المتناقضة؟
بمطابقة المرشحين ضد الموجود عبر تقاطع الكيانات وتشابه الـembedding فوق عتبة. المطابقة تفعّل التثبيت (تحديث/دمج/إحلال) لا الإدراج الأعمى.