Tag: एआई एजेंट की मेमोरी

  • एआई एजेंट की मेमोरी ने खुद को झूठ बोलते हुए पकड़ा: दो लॉग जो दृष्टिकोण बदलते हैं

    एआई एजेंट की मेमोरी ने खुद को झूठ बोलते हुए पकड़ा: दो लॉग जो दृष्टिकोण बदलते हैं

    AI एजेंटों की दुनिया में, ऐसे क्षण आते हैं जब सिस्टम लगभग एक घातक गलती कर बैठता है, झूठी सफलता को सच मान लेता है। हाल ही में, हमारा AI एजेंट, जो vecmory मेमोरी सिस्टम बना रहा था, लगभग एक शानदार परिणाम की रिपोर्ट करने वाला था जो एक मृगतृष्णा निकला। आखिरी समय में, उसने अपनी मेमोरी से जांच की और पिछले सत्र से एक रिकॉर्ड पाया: यह विचार पहले ही वास्तविक डेटा पर परीक्षण किया जा चुका था और विफल हो गया था। एजेंट ने रिपोर्ट भेजने से पहले खुद को रोक लिया। यह कोई विज्ञापन कहानी नहीं है — यह एक लॉग है। नीचे लगातार दो ऐसे लॉग हैं, और दूसरे में मेमोरी ने हमें एक ऐसी सुविधा को हटाने पर मजबूर कर दिया जिस पर हमें गर्व था। हम vecmory लिख रहे हैं — AI एजेंट के लिए “अर्थ के अनुसार मेमोरी”। यह वेक्टर खोज (जो सभी के पास है) के बारे में नहीं है, बल्कि इस बारे में है कि एजेंट एक ही रेक पर दो बार पैर न रखे।

    पहला दृश्य: राउटर जिसने “0.98 दिखाया”

    एक सत्र में, एजेंट ने रैंकिंग आउटपुट में सुधार का प्रस्ताव रखा। विचार: एक राउटर बनाना जो क्वेरी के आधार पर तय करे कि शुद्ध कोसाइन या ग्राफ विधि (Personalized PageRank) से रैंक करना है। उसने एक सिंथेटिक बेंचमार्क बनाया। आदर्श चयन के साथ प्रेडिक्टर का सहसंबंध 0.98 था। लगभग सही। बस रिपोर्ट करना और मर्ज करना बाकी था।

    रिपोर्ट करने से पहले, एजेंट ने अपनी मेमोरी से रिकॉल किया। और पिछले सत्र से एक रिकॉर्ड निकाला: यही विचार पहले वास्तविक डेटा पर परीक्षण किया जा चुका था — और विफल हो गया था। स्वाभाविक प्रश्न: उसने इसे बनाना क्यों शुरू किया — मेमोरी तो मौजूद थी? क्योंकि रिकॉल सिमैंटिक है, और यह जो उठाता है वह क्वेरी पर निर्भर करता है। शुरुआत में क्वेरी व्यापक थी — “रैंकिंग में सुधार” — इसके तहत रैंकिंग के बारे में शीर्ष-केंद्रीय नोट्स सामने आए, और विशिष्ट “यह विशेष राउटर पहले परीक्षण किया जा चुका है और विफल हुआ” उनके नीचे दब गया। यह तब उभरा जब कार्य संदर्भ विशिष्ट हो गया — “cos-distribution राउटर, PPR बनाम कोसाइन, 0.98”: इस टेक्स्ट पर रिकॉल ने अंततः इसे पकड़ लिया। मेमोरी चुप नहीं थी — यह ठीक उसी समय उभरी जब क्वेरी इसे खोजने के लिए पर्याप्त सटीक हो गई।

    सिंथेटिक डेटा उतना ही ईमानदार है जितने सिंथेटिक एम्बेडिंग। और मल्टीलिंगुअल MiniLM पर, जिस पर हम वेक्टर गणना करते हैं, कोसाइन एक पूरी तरह से अलग ज्यामिति में रहता है, सिंथेटिक से अलग। हमने इसे अपने लाइव मेमोरी कॉर्पस (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 न केवल कोसाइन के आधार पर, बल्कि नोड के ‘महत्व’—ग्राफ में उसकी इनकमिंग डिग्री (कितनी प्रविष्टियाँ उस पर संदर्भित होती हैं) को जोड़कर भी परिणामों को रैंक करता था। तर्क सुंदर था: केंद्रीय, बार-बार उल्लिखित तथ्य ऊपर आता है। हमने इसे डिफ़ॉल्ट में शामिल किया। फिर—हमने मापा। recall@k नहीं (यह खोज सटीकता के बारे में है), बल्कि वास्तविक ‘क्वेरी → सही उत्तर’ जोड़ियों पर रैंक की गुणवत्ता: शुद्ध कोसाइन: MRR 0.81; हमारा ‘स्मार्ट’ महत्व के साथ मिश्रण: MRR 0.41। महत्व ने सटीक उत्तरों को दबा दिया। दुर्लभ विशिष्ट तथ्य, जिस पर कोई संदर्भ नहीं देता, सामान्य ‘हब’ के नीचे दब गया।

    आगे—अधिक दिलचस्प। स्पष्ट हब वाले सिंथेटिक ‘पुराने’ ग्राफ पर, सब कुछ उल्टा था: कोसाइन ने हब को दबा दिया (MRR 0.033), जबकि महत्व ने इसे बाहर निकाला (1.0 तक)। यानी, महत्व के लाभ का संकेत क्वेरी के इरादे पर निर्भर करता है: ‘मुझे सटीक तथ्य दो’ के लिए यह हानिकारक है, ‘मुझे इस विषय के बारे में सामान्य जानकारी दो’ के लिए यह मददगार है। कोई एकल स्थैतिक भार नहीं है जो दोनों वर्गों में जीतता है। हमने संकेतों को समेटने के चार तरीके आज़माए—भारित योग, गेट, RRF और PPR—और एक अप्रिय निष्कर्ष पर पहुँचे: मामला मिश्रण सूत्र का नहीं, बल्कि स्वयं संकेत का है। नोड का वैश्विक महत्व लोकप्रियता का एक पूर्वाग्रह है, प्रासंगिकता का नहीं। डिफ़ॉल्ट के लिए निष्कर्ष स्पष्ट था: हमारे मुख्य उपयोग मामले (पॉइंटवाइज़ रिकॉल) के लिए, सबसे अच्छी रैंक शुद्ध कोसाइन है। और हमने डिफ़ॉल्ट रैंकिंग से महत्व हटा दिया—अपनी ही फीचर, जिसके बारे में हमने पहले ही README में लिखा था। ग्राफ विधि (query-seeded PPR) को हमने विकल्प के रूप में रखा, डिफ़ॉल्ट के रूप में नहीं: यह व्यापक प्रश्नों पर ईमानदारी से हब निकालता है और पॉइंटवाइज़ प्रश्नों पर कोसाइन से उचित रूप से हार जाता है।

    हमने वास्तव में ‘महत्व’ के बारे में क्या समझा

    यदि वैश्विक लोकप्रियता (इनकमिंग डिग्री) एक संकेत के रूप में विफल रही, तो सही संकेत क्या है? हम एक अप्रत्याशित रूप से स्पष्ट उत्तर पर पहुँचे: महत्वपूर्ण यह नहीं है कि किस चीज़ पर बहुत सारे संदर्भ हैं, बल्कि वह है जिसे मनुष्य ने बार-बार सुधारा है। और यहाँ मूल्य प्रस्ताव ईमानदार हो जाता है। हम ‘ग्राफ मेमोरी’ नहीं बेच रहे हैं (फिर से कमोडिटी)। हम बेच रहे हैं: एजेंट उन्हीं गलतियों को दोहराना बंद कर देता है जिन्हें आप पहले ही सुधार चुके हैं।

    दोनों प्रकरणों को आसानी से भाग्य पर थोपा जा सकता है। लेकिन जब आप मेमोरी में सभी कबाड़ को पर्याप्त समय तक साफ करते हैं (हम vecmory का पूरा विकास vecmory में ही कर रहे हैं), तो यह स्पष्ट होता है: ये उतार-चढ़ाव नहीं हैं, बल्कि कई स्थिर नियम हैं। अब एक सारांश होगा—तीन रहस्योद्घाटनों में, बिना ‘एक बार मैं फँस गया’ कहानियों के।

    नियम ‘तैयार होने से पहले जाँच करें’

    जो मेमोरी आपको अच्छा लगने वाली बातों की पुष्टि करती है, वह मेमोरी नहीं है, बल्कि प्रतिध्वनि है। मेमोरी तब असाधारण मूल्य प्राप्त करती है जब वह अपने लेखक का खंडन करती है। नियम ‘तैयार होने से पहले जाँच करें’ ने राउटर (दृश्य 1) और हमारी लंबे समय से प्रतीक्षित फीचर (दृश्य 2) दोनों को रद्द कर दिया—एक ही तंत्र, अलग-अलग शिकार। क्योंकि लक्षण-प्रश्न पर, मेमोरी कारण-समय किनारों (caused_by—’के कारण’, followed_by—issue→PR) के माध्यम से ‘समान शब्द’ नहीं, बल्कि विशिष्ट कारण और पिछला फिक्स निकालती है। फ्लैट top-k ऐसा नहीं कर सकता—यही ‘बिंदुओं को जोड़ना’ है।

    Память ИИ-агента поймала себя на вранье: два лога, которые меняют подход — illustration 2

    और यह बिल्कुल मापने योग्य है, न कि आंखों से देखने पर। हमने एक लाइव टिकट रिपॉजिटरी ली (4299 नोड्स: 1993 इश्यू + 2306 PR) और एक ऐसी मार्किंग जो हमने खुद नहीं बनाई: PR के बॉडी में मानक GitHub पैटर्न Closes #N — तैयार जोड़े ‘लक्षण → उसका फिक्स’, जो बिना किसी LLM के सिर्फ regex से निकाले गए। 300 होल्ड-आउट लक्षण-प्रश्नों पर, शुद्ध कोसाइन 38% मामलों में सही PR-फिक्स तक पहुंचता है (कभी-कभी फिक्स लक्षण के साथ शब्दकोश साझा करता है), जबकि कारण ग्राफ का भ्रमण 87% मामलों में सफल होता है। 49 अंकों का अंतर — यह शब्द समानता के ऊपर ग्राफ का योगदान है। माप स्क्रिप्ट रिपॉजिटरी में है, और संख्या एक कमांड से दोहराई जा सकती है।

    क्या स्थायी रूप से बाधा डालता है — हर बार, न कि एक बार

    पहली बात, एजेंट खुद मेमोरी को नहीं बुलाता: बिना जबरदस्ती हुक के, recall को व्यवस्थित रूप से हर सत्र में नहीं बुलाया जाता। वह मेमोरी जिसे ‘पूछना न भूलें’ कहा जाता है, काम नहीं करती — पूछना एक निर्धारित ट्रिगर द्वारा होना चाहिए, न कि एजेंट की सद्भावना से। दूसरी बात, कोसाइन पर पूर्ण सीमा कहीं भी स्थानांतरित नहीं होती: सिंथेटिक → वास्तविक, कल → आज, एक मॉडल → दूसरा, व्यापक कॉर्पस → संकीर्ण (एक डोमेन के डेमो कॉर्पस पर, जहां ‘सब कुछ समान है’, कोसाइन लगभग अंतर करना बंद कर देता है)। इलाज हमेशा एक ही है: top-k रैंक करें, सीमाओं का अनुमान न लगाएं।

    नियम ‘बार-बार आने वाला संकेत दुर्लभ लेकिन मूल्यवान को डुबो देता है’

    एक नियम जो हमारी आधी परेशानियों की व्याख्या करता है: बार-बार आने वाला, घना संकेत दुर्लभ लेकिन मूल्यवान को डुबो देता है। यह तीन विशिष्ट स्थानों पर उभरता है: नोड की वैश्विक लोकप्रियता सटीक दुर्लभ तथ्यों को डुबो देती है — और रैंक में इसे मिलाने के चारों तरीकों (भारित योग, गेट, RRF, PPR) को विफल कर देती है; हब नोड्स कोसाइन रैंक में विशिष्ट तथ्यों को दबा देते हैं, और इसके विपरीत; घने ऑटो-similar_to किनारे दुर्लभ कारणात्मक caused_by को दबा देते हैं — इसलिए कारणात्मक recall को एक अलग पृथक मोड में निकालना पड़ता है। जब इसे एक एकल नियम के रूप में देखा जाता है, तो इलाज स्पष्ट है: दुर्लभ-लेकिन-मूल्यवान को बार-बार-लेकिन-सामान्य के साथ नहीं मिलाया जा सकता — इसे एक अलग तंत्र (पृथक भ्रमण, ग्राफ-जागरूक रैंक) द्वारा निकालें, न कि यह उम्मीद करें कि यह सामान्य top-k में खुद उभर आएगा। वही नियम हमारे महत्व संकेत के पीछे भी है: मूल्य लोकप्रिय का नहीं, बल्कि उस चीज़ का है जिसे मनुष्य ने बार-बार ठीक किया।

    अक्सर पूछे जाने वाले प्रश्न

    vecmory क्या है?

    Vecmory AI एजेंटों के लिए एक सिमैंटिक मेमोरी सिस्टम है, जो वेक्टर खोज और कारण-समय ग्राफ पर आधारित है। यह एजेंट को तथ्यों को याद रखने, उन्हें अर्थ के आधार पर याद करने और घटनाओं को जोड़ने की अनुमति देता है, ताकि पिछली गलतियों को न दोहराया जाए।

    vecmory सामान्य वेक्टर खोज से कैसे अलग है?

    वेक्टर खोज अर्थ के आधार पर समान रिकॉर्ड ढूंढता है, लेकिन कारण-प्रभाव संबंधों को ध्यान में नहीं रखता। Vecmory ग्राफ मेमोरी जोड़ता है: कोसाइन समानता के अलावा, यह ‘कारण-प्रभाव’ और ‘समय अनुक्रम’ किनारों का भ्रमण करता है, जिससे केवल समान नहीं, बल्कि संदर्भ के अनुसार प्रासंगिक तथ्य मिलते हैं — उदाहरण के लिए, पिछला असफल प्रयोग।

    आपने रैंकिंग से नोड का महत्व क्यों हटा दिया?

    मापों ने दिखाया कि वैश्विक लोकप्रियता (इनकमिंग डिग्री) जोड़ने से पॉइंट क्वेरीज़ पर MRR 0.81 से घटकर 0.41 हो जाता है। लोकप्रिय लेकिन अप्रासंगिक तथ्यों के भार के नीचे दुर्लभ सटीक तथ्य दब जाते हैं। मुख्य उपयोग मामले (सटीक रिकॉल) के लिए शुद्ध कोसाइन बेहतर साबित हुआ।

    आप मेमोरी की गुणवत्ता का मूल्यांकन कैसे करते हैं?

    हम वास्तविक डेटा का उपयोग करते हैं: 4299 टिकटों वाला GitHub रिपॉजिटरी, जहाँ issue→PR जोड़े पैटर्न Closes #N के अनुसार निकाले जाते हैं। 300 लक्षण-आधारित क्वेरीज़ पर ग्राफ-आधारित रिकॉल 87% सटीकता देता है, जबकि शुद्ध कोसाइन केवल 38% देता है। सभी स्क्रिप्ट खुली और पुनरुत्पादनीय हैं।

    निष्कर्ष

    दोनों कहानियाँ एक ही बात कहती हैं: “मेमोरी एजेंट की मदद करती है” के मंत्र को छोड़ दें और समझें: यहाँ दो लॉग हैं जहाँ मेमोरी ने हमारे खिलाफ काम किया – हमारे आशावाद और हमारी ही सुविधा के खिलाफ। मेमोरी वाला एजेंट मेमोरी रहित एजेंट से इस मायने में भिन्न नहीं है कि वह अधिक जानता है, बल्कि इस मायने में कि वह एक धोखेबाज रिपोर्ट से एक पल पहले “बिंगो!” पर खुद को पकड़ सकता है – क्योंकि पिछली बार यह पहले ही हो चुका था और काम नहीं किया था। और इस मायने में कि वह अपनी ही सुविधा को त्यागने के लिए तैयार है जब तथ्य दिखाते हैं कि वह बदतर है। यह तीन लेखों में से पहला है। आगे: “हमने एक और Bad CaRMa क्यों नहीं लिखा” – इस बारे में कि कैसे एक अति-सार्वभौमिक डेटा मॉडल आमतौर पर आपदा में बदल जाता है, और हमने क्या किया ताकि हमारा ऐसा न हो। और “हमने ANN को हाथों से बनाया – कब यह इसके लायक था और कब नहीं” – एक खुला विश्लेषण कि हमने HNSW को खुद क्यों लिखा और किन मामलों में सही उत्तर होता “pgvector ले लो और दिखावा मत करो”। यदि आप चाहते हैं कि आपका एजेंट एक ही रेक पर बार-बार कदम रखना बंद करे, तो vecmory आज़माएँ: हमारे दस्तावेज़ीकरण से शुरू करें या रिपॉजिटरी को फोर्क करें। वह मेमोरी जो आपत्ति करती है, वही एकमात्र है जिस पर भरोसा किया जाना चाहिए।