في عالم تطوير وكلاء الذكاء الاصطناعي، هناك لحظات تكاد فيها الأنظمة ترتكب خطأً فادحًا، معتبرة النجاح الزائف حقيقة مطلقة. مؤخرًا، كاد وكيل الذكاء الاصطناعي الخاص بنا، الذي يبني نظام الذاكرة vecmory، أن يبلغ عن نتيجة رائعة تبين أنها سراب. في اللحظة الأخيرة، راجع ذاكرته الخاصة ووجد سجلًا من جلسة سابقة: هذه الفكرة ذاتها تم اختبارها بالفعل على بيانات حقيقية، وفشلت. أوقف الوكيل نفسه قبل إرسال التقرير. هذه ليست قصة ترويجية – بل سجل. فيما يلي سجلان متتاليان من هذا القبيل، وفي الثاني، أجبرتنا الذاكرة على التخلي عن ميزة كنا فخورين بها. نحن نكتب vecmory – “ذاكرة حسب المعنى” لوكيل الذكاء الاصطناعي. هذا لا يتعلق بـ البحث المتجهي (الموجود لدى الجميع)، بل يتعلق بمنع الوكيل من الوقوع في نفس الأخطاء مرتين.
المشهد الأول: جهاز التوجيه الذي “أظهر 0.98”
في إحدى الجلسات، اقترح الوكيل تحسين ترتيب النتائج. الفكرة: إنشاء جهاز توجيه يقرر، بناءً على الاستعلام، ما إذا كان سيتم الترتيب باستخدام جيب التمام النقي أو الطريقة البيانية (Personalized PageRank). جمع معيارًا اصطناعيًا. الارتباط بين المتنبئ والاختيار المثالي كان 0.98. شبه مثالي. كل ما تبقى هو تقديم التقرير ودمج التغييرات.
قبل تقديم التقرير، قام الوكيل باستدعاء من ذاكرته الخاصة. ووجد سجلًا من جلسة سابقة: هذه الفكرة ذاتها تم اختبارها بالفعل على بيانات حقيقية – وفشلت. السؤال المنطقي: لماذا بدأ في بنائها أساسًا، مع أن الذاكرة كانت موجودة؟ لأن الاستدعاء دلالي، وما يرفعه يعتمد على الاستعلام. في البداية، كان الاستعلام واسعًا – “تحسين الترتيب” – مما أظهر ملاحظات مركزية عامة حول الترتيب، بينما غرقت الملاحظة المحددة “تم اختبار جهاز التوجيه هذا بالفعل وفشل” تحتها. ظهرت فقط عندما ضاق السياق العملي إلى المحدد – “موزع جيب التمام، PPR مقابل جيب التمام، 0.98”: أخيرًا التقطها الاستدعاء على هذا النص. الذاكرة لم تكن صامتة – ظهرت بالضبط عندما أصبح الاستعلام دقيقًا بما يكفي لاسترجاعها.
المعيار الاصطناعي صادق بقدر صدق التضمينات الاصطناعية. وبالنسبة لـ MiniML متعددة اللغات، التي نستخدمها لحساب المتجهات، يعيش جيب التمام في هندسة مختلفة تمامًا عن تلك الموجودة في الاصطناعية. قمنا بقياس ذلك مباشرة على مجموعة الذاكرة الحية لدينا (246 عقدة) أثناء كتابة هذه المقالة: الأزواج العشوائية غير المرتبطة تعطي جيب تمام بمتوسط 0.53 (p5–p95: 0.24–0.76)؛ الجيران الحقيقيون الأقرباء بمتوسط 0.80 (p5–p95: 0.57–0.91)؛ بينما في الاصطناعية من المتجهات العشوائية، يكون غير المرتبط عند 0.00 (±0.08). الفرق واضح فورًا. في الاصطناعية، “متشابه” مفصول عن “غير متشابه” بفجوة – أي عتبة معقولة تقطع بشكل نظيف. في البيانات الحقيقية، تتداخل سحب “الجيران” و”العشوائي”: الأزواج العشوائية في النسبة المئوية العليا (0.76) تتجاوز الجيران في النسبة المئوية الدنيا (0.57). العتبة التي تعمل كمشرط في الاصطناعية، تمر في المتجهات الحقيقية داخل سحابة الضوضاء العشوائية ولا تفصل شيئًا. كان السجل في الذاكرة يدور حول هذا بالضبط: للتضمينات الحقيقية جيب تمام أساسي مرتفع مضغوط، لا يمكن نقل العتبة المطلقة من الاصطناعية – يجب الاعتماد على الترتيب (top-k) بدلاً من العتبة. قرأ الوكيل ملاحظته الخاصة وقتل الفكرة – قبل أن يكتب “تم، الارتباط 0.98”.
المشهد الثاني: الوكيل تخلص من ميزته الخاصة
الحالة الثانية هي نفس النمط، لكنها أكثر إيلامًا: الذاكرة أجبرتنا على التخلص من ميزة كنا قد أشادنا بها بالفعل في ملف README. افتراضيًا، كان نظام vecmory يرتب النتائج ليس فقط بناءً على تشابه جيب التمام (cosine)، بل أيضًا بإضافة “أهمية” العقدة — أي درجة دخولها في الرسم البياني (عدد السجلات التي تشير إليها). المنطق جميل: الحقيقة المركزية المذكورة بشكل متكرر تطفو إلى الأعلى. قمنا بتضمين هذا كإعداد افتراضي. ثم قمنا بالقياس. ليس recall@k (الذي يتعلق بدقة البحث)، بل جودة الترتيب تحديدًا، على أزواج حقيقية من “استعلام → إجابة صحيحة”: تشابه جيب التمام النقي: MRR 0.81؛ المزيج “الذكي” مع الأهمية: MRR 0.41. الأهمية كانت تغرق الإجابات الدقيقة. الحقيقة النادرة المحددة التي لا يشير إليها أحد كانت تغرق تحت “العقد المركزية” الشائعة الاستخدام.
ثم يصبح الأمر أكثر إثارة للاهتمام. على رسم بياني اصطناعي “قديم” مع عقد مركزية واضحة، كان العكس تمامًا: تشابه جيب التمام أخفى العقدة المركزية (MRR 0.033)، بينما الأهمية أخرجتها (حتى 1.0). أي أن علامة فائدة الأهمية تعتمد على نية الاستعلام: بالنسبة لـ “أعطني حقيقة دقيقة” فهي تضر، وبالنسبة لـ “أعني معلومات عامة حول هذا الموضوع” فهي تساعد. لا يوجد وزن ثابت واحد يفوز في كلا الفئتين. جربنا أربع طرق للتوفيق بين الإشارات — المجموع الموزون، البوابة (gate)، RRF، وPPR — وتوصلنا إلى استنتاج غير سار: المشكلة ليست في صيغة المزج، بل في الإشارة نفسها. الأهمية العالمية للعقدة هي أسبقية للشعبية، وليس للملاءمة. كان الاستنتاج الافتراضي واضحًا: بالنسبة لحالتنا الرئيسية (الاستدعاء النقطي)، أفضل ترتيب هو تشابه جيب التمام النقي. لذا أزلنا الأهمية من الترتيب الافتراضي — ميزتنا الخاصة التي كتبنا عنها بالفعل في README. تركنا الطريقة القائمة على الرسم البياني (PPR المبدوء بالاستعلام) كخيار، وليس كإعداد افتراضي: فهي تخرج العقد المركزية بصدق في الاستعلامات الواسعة وتخسر بإنصاف أمام تشابه جيب التمام في الاستعلامات النقطية.
ما فهمناه حقًا عن “الأهمية”
إذا فشلت الشعبية العالمية (درجة الدخول) كإشارة، فما هي الإشارة الصحيحة؟ توصلنا إلى إجابة واضحة بشكل غير متوقع: المهم ليس ما تشير إليه الكثير من المراجع، بل ما قام الشخص بتصحيحه بشكل متكرر. وهنا تصبح قيمة العرض صادقة. نحن لا نبيع “ذاكرة قائمة على الرسم البياني” (سلعة مرة أخرى). نحن نبيع: الوكيل يتوقف عن الوقوع في نفس الأخطاء التي صححتها بالفعل.
كلا الحادثتين يمكن نسبهما بسهولة إلى الحظ. ولكن عندما تنظف كل أنواع القمامة في الذاكرة لفترة كافية (نحن ندير تطوير vecmory بالكامل داخل vecmory نفسه)، يصبح واضحًا: هذه ليست تقلبات، بل عدة قوانين ثابتة. الآن سيأتي ملخص — بثلاثة اكتشافات، بدون قصص “ذات مرة وقعت في مشكلة”.
قاعدة “تحقق قبل أن تقول ‘جاهز’”
الذاكرة التي تؤكد ما يسعدك ليست ذاكرة، بل صدى. الذاكرة تكتسب قيمة استثنائية عندما تعترض على مؤلفها. قاعدة “تحقق قبل أن تقول ‘جاهز’” ألغت كلاً من الموجه (المشهد 1) وميزتنا المنتظرة (المشهد 2) — آلية واحدة، ضحايا مختلفون. لأنه عند استعلام الأعراض، تستخرج الذاكرة عبر الحواف السببية الزمنية (caused_by — “بسبب”، followed_by — مشكلة → طلب سحب) ليس “كلمات متشابهة”، بل سببًا محددًا وإصلاحًا سابقًا. top-k المسطح لا يستطيع فعل ذلك — وهذا هو “ربط النقاط”.

و هذا قابل للقياس بدقة، وليس بالتخمين. أخذنا مستودعًا حيًا للتذاكر (4299 عقدة: 1993 مشكلة + 2306 طلب سحب) وترميزًا لم نخترعه بأنفسنا: نمط GitHub القياسي Closes #N في نص طلب السحب — أزواج جاهزة من «العرض → إصلاحه»، مستخرجة بتعبير regex بسيط، دون أي LLM. على 300 استعلام-عرض محجوز، وجد بحث جيب التمام الخالص إصلاح طلب السحب المطلوب في 38% من الحالات (أحيانًا يشارك الإصلاح قاموسًا مع العرض)، بينما اجتياز الرسم البياني السببي وصل إلى 87%. الفرق البالغ 49 نقطة هو بالضبط مساهمة الرسم البياني فوق تشابه الكلمات. نص القياس موجود في المستودع، والرقم قابل للتكرار بأمر.
ما الذي يعيق باستمرار — في كل مرة، وليس مرة واحدة
أولاً، الوكيل لا يستدعي الذاكرة بنفسه: بدون خطاف إجباري، لا يتم استدعاء recall بشكل منهجي في كل جلسة. الذاكرة التي يجب «ألا تنسى سؤالها» لا تعمل — يجب أن يكون المشغل حتميًا، وليس حسن نية الوكيل. ثانيًا، العتبة المطلقة لجيب التمام غير قابلة للنقل في أي مكان: الاصطناعي → الحقيقي، الأمس → اليوم، نموذج → آخر، مجموعة واسعة → ضيقة (على مجموعة تجريبية لمجال واحد حيث «كل شيء متشابه»، يكاد جيب التمام يفقد القدرة على التمييز). العلاج دائمًا واحد: رتب top-k، ولا تخمن العتبات.
قانون «الإشارة المتكررة تغرق النادرة ولكن القيمة»
قانون واحد يشرح نصف مشاكلنا: الإشارة المتكررة والكثيفة تغرق النادرة ولكن القيمة. يظهر في ثلاثة أماكن نموذجية: الشعبية العالمية للعقدة تغرق الحقائق النادرة الدقيقة — وتفشل جميع الطرق الأربع لخلطها بالترتيب (المجموع الموزون، البوابة، RRF، PPR)؛ العقد المحورية تدفن الحقائق المحددة في ترتيب جيب التمام، والعكس صحيح؛ الحواف الكثيفة auto-similar_to تغرق الحواف السببية النادرة caused_by — لذلك يجب إخراج recall السببي إلى وضع منفصل معزول. عندما تدرك هذا كقانون واحد، يصبح العلاج واضحًا: لا يمكن خلط النادر ولكن القيم مع المتكرر ولكن العام — استخرجه بآلية منفصلة (اجتياز معزول، ترتيب واعٍ بالرسم البياني)، ولا تأمل أن يظهر من تلقاء نفسه في top-k العام. نفس القانون يقف وراء إشارة الأهمية لدينا: القيمة ليست للشائع، بل لما صححه الإنسان مرارًا.
الأسئلة المتكررة
ما هو vecmory؟
Vecmory هو نظام ذاكرة دلالية لوكلاء الذكاء الاصطناعي، يعتمد على البحث المتجهي والرسم البياني السببي الزمني. يسمح للوكيل بتذكر الحقائق، واسترجاعها حسب المعنى، وربط الأحداث لتجنب تكرار الأخطاء السابقة.
كيف يختلف vecmory عن البحث المتجهي العادي؟
يجد البحث المتجهي السجلات المتشابهة في المعنى، لكنه لا يأخذ في الاعتبار العلاقات السببية. يضيف Vecmory ذاكرة رسومية: بالإضافة إلى تقارب جيب التمام، يجتاز حواف «السبب والنتيجة» و«التسلسل الزمني»، مما يسمح بالعثور على حقائق ليست فقط متشابهة، بل ذات صلة بالسياق — على سبيل المثال، تجربة فاشلة سابقة.
لماذا أزلتم أهمية العقدة من الترتيب؟
القياسات أظهرت أن إضافة الشعبية العالمية (درجة الواردة) تقلل MRR من 0.81 إلى 0.41 في الاستعلامات النقطية. أهمية الموضوع تخفي الحقائق الدقيقة النادرة تحت كتلة من الحقائق الشائعة ولكن غير ذات الصلة. بالنسبة للحالة الأساسية (الاستدعاء الدقيق)، كان جيب التمام النقي أفضل.
القياسات أظهرت أن إضافة الشعبية العالمية (درجة الواردة) تقلل MRR من 0.81 إلى 0.41 في الاستعلامات النقطية. أهمية الموضوع تخفي الحقائق الدقيقة النادرة تحت كتلة من الحقائق الشائعة ولكن غير ذات الصلة. بالنسبة للحالة الأساسية (الاستدعاء الدقيق)، كان جيب التمام النقي أفضل.
كيف تقيم جودة الذاكرة؟
نستخدم بيانات حقيقية: مستودع GitHub يحتوي على 4299 تذكرة، حيث يتم استخراج أزواج issue→PR وفقًا لنمط Closes #N. على 300 استعلامًا عرضيًا، يعطي استدعاء الرسم البياني دقة 87% مقابل 38% لجيب التمام النقي. جميع البرامج النصية مفتوحة وقابلة للتكرار.
الخاتمة
كلا القصتين تدوران حول شيء واحد: تخلص من الشعار “الذاكرة تساعد الوكيل” وافهم: إليك سجلان حيث عملت الذاكرة ضدنا نحن أنفسنا — ضد تفاؤلنا وضد ميزتنا الخاصة. الوكيل الذي يمتلك ذاكرة يختلف عن الوكيل بدون ذاكرة ليس لأنه يعرف أكثر، بل لأنه يمكنه أن يمسك بنفسه عند قول “bingo!” قبل لحظة من التقرير الخادع — لأنه في المرة السابقة كان هذا قد حدث بالفعل ولم ينجح. ولأنه مستعد للتخلص من ميزته الخاصة عندما تظهر الحقائق أنها أسوأ. هذه هي المقالة الأولى من ثلاث. التالي: “لماذا لم نكتب Bad CaRMa آخر” — حول كيف يتحول نموذج البيانات فائق الشمولية عادةً إلى كارثة، وما فعلناه لضمان ألا يتحول نموذجنا إلى ذلك. و”بنينا ANN بأيدينا — متى كان ذلك يستحق العناء ومتى لا” — تحليل مفتوح حول لماذا كتبنا HNSW بأنفسنا وفي أي الحالات كانت الإجابة الصحيحة هي “خذ pgvector ولا تتعالى”. إذا كنت تريد أن يتوقف وكيلك عن الوقوع في نفس الأخطاء، جرب vecmory: ابدأ من وثائقنا أو قم بعمل fork للمستودع. الذاكرة التي تعترض هي الوحيدة التي تستحق الثقة.
