जब एजेंट की मेमोरी छोटे कोड में समेट दी जाए, तो क्या दो AI एक ही गलत जवाब पर सहमत होते हैं?
के साथ Mohan Bheemadolu · AI एजेंट डेवलपर, Redmond · FlyHash for LLM agent memory के सह-लेखक
आधे मिनट में
Mohan Bheemadolu और Dr. Chrisogonas O. Odhiambo ने FlyHash लिखा: AI एजेंट की यादों को बहुत छोटे बाइनरी कोड में रखने का एक तरीका, जो इस पर आधारित है कि फल-मक्खी की नाक गंधों को कैसे अलग पहचानती है। उसी कोड-आकार पर यह आम SimHash के मुकाबले सही याद लगभग 2.5 गुना बार ढूँढ लेता है। इससे एक ऐसा सवाल उठता है जिसका जवाब हम दोनों में से कोई अकेले नहीं दे सकता था। एजेंटों को अक्सर एक दूसरा AI जाँचता है, मगर दोनों AI वही पाई गई मेमोरी पढ़ते हैं। अगर छोटी मेमोरी में तथ्य ज़्यादा बार छूटता है, तो क्या दोनों जाँचने वाले एक ही गलत जवाब पर सहमत होने लगते हैं? आम मेमोरी के साथ पहला रन बताता है कि ऐसा हो सकता है: जब मेमोरी में सबूत छूट गया, तो दोनों AI के सहमत जवाबों में से 45% गलत थे, जबकि सबूत मौजूद होने पर 3%। वह एक रिट्रीवर और एक सीड था, इसलिए यह संबंध दिखाता है, कारण नहीं। Mohan की योजना है कि उसी बेंचमार्क पर चार कोड-आकारों में FlyHash को नापें और पाई गई मेमोरी हमें भेजें; सहमति की जाँच फिर उन पर चलती है।
पेपर
जो एजेंट पुरानी बातचीतों को याद रखता है, उसे उन्हें कहीं रखना होता है और सही टुकड़ा जल्दी ढूँढना होता है। FlyHash फल-मक्खी की सूँघने की क्षमता से उधार लेता है: वह हर याद के एम्बेडिंग को एक छोटे, विरल कोड में बदलता है, जिसमें सिर्फ़ कुछ "सक्रिय बिट" चालू होते हैं। छोटे कोड का मतलब है छोटी मेमोरी।
पेपर के नतीजे ताज़गी भरे सीधे-सादे हैं। बराबर कोड-आकार पर FlyHash सही याद SimHash से लगभग 2.5 गुना बार ढूँढता है (0.27 के मुकाबले 0.11)। जब मेमोरी तंग नहीं होती, तो एक मानक HNSW इंडेक्स अब भी दोनों को हरा देता है, और लेखक यह खुद कहते हैं। जो पेपर बताएँ कि उनका तरीका कहाँ हारता है, वे जितने होने चाहिए उससे कम हैं, और यही बात हमें उन्हें लिखने की वजह बनी।
कोड खुला है: github.com/mohanji/flyhash-agent-memory।
बातचीत कैसे चली
शुरुआत Hugging Face पर पेपर के नीचे की टिप्पणियों में हुई। हमने पूछा कि जब सवाल साँचे में ढले न हों बल्कि अलग शब्दों में पूछे गए हों, तो कोड उन्हें कैसे सँभालते हैं। Mohan ने जवाब दिया कि अब तक के परीक्षणों में साँचे वाले शब्द इस्तेमाल हुए थे, और पूछा कि हम कौन-सा डेटासेट सुझाएँगे। हमने लंबे, असली बहु-सत्र संवादों से बने दो डेटासेट सुझाए: LoCoMo और LongMemEval। उन्होंने LoCoMo से शुरू करने और फिर LongMemEval लेने का तय किया।
फिर हमने वह सवाल पूछा जो उनके काम को हमारे काम से जोड़ता है: क्या सबसे छोटे कोड समय के सवालों ("उसने घर कब बदला?") पर अकेले तथ्यों वाले सवालों से ज़्यादा हारेंगे?
एक-दूसरे को जाँचने वाले दो AI के लिए मेमोरी क्यों मायने रखती है
अलग-अलग कंपनियों के दो मॉडलों का किसी जवाब पर सहमत होना अक्सर अच्छा संकेत माना जाता है। पर एजेंट में दोनों मॉडल आमतौर पर वही पाई गई मेमोरी पढ़ते हैं। अगर रिट्रीवल में तथ्य छूट गया, तो वे अब स्वतंत्र नहीं रहे: वे पूरे भरोसे के साथ एक ही गलत जवाब पर सहमत हो सकते हैं।
यह कितनी बार होता है, यह देखने के लिए हमने LoCoMo पर एक छोटी खुली जाँच बनाई, memory-agreement-check, और उसे एक बार सादी कीवर्ड मेमोरी (BM25, शीर्ष 10 संवाद-वाक्य) के साथ चलाया। GPT और Claude ने अलग-अलग जवाब दिए, और Kimi ने उन्हें बिना देखे ग्रेड किया।
दोनों मॉडलों की गलतियाँ आपस में गहराई से जुड़ी थीं (φ = 0.81)। वह एक रिट्रीवर और एक सीड था, इसलिए यह संबंध दिखाता है, कारण नहीं। पर इससे FlyHash के सामने जवाब देने के लिए एक सटीक सवाल आ जाता है।
जो प्रयोग हम मिलकर चला रहे हैं
Mohan ने रिट्रीवल की तरफ़ का हिस्सा देने की पेशकश की; आगे हम सँभालते हैं।
- Mohan पहले रिट्रीवल नापते हैं: LoCoMo की हर श्रेणी (single-hop, multi-hop, temporal) के लिए recall@k, FlyHash और SimHash के कई कोड-आकारों पर, यानी 16, 32, 64 और 128 सक्रिय बिट, हर सवाल की शीर्ष 10 यादों के साथ, जैसा पहले रन में था।
- हमने शीर्ष 5 भी जोड़ने का सुझाव दिया: कम यादों का मतलब ज़्यादा चूक, जिससे दिखना चाहिए कि आत्मविश्वास से गलत सहमत जवाबों का हिस्सा कितनी तेज़ी से बढ़ता है।
- वे पाए गए संदर्भ JSONL में भेजते हैं, हर सवाल की एक पंक्ति।
- हम हर फ़ाइल पर सहमति की जाँच चलाते हैं और नतीजे उन्हें भेजते हैं।
अंत में हम जो सवाल पढ़ेंगे: जैसे-जैसे कोड छोटे होते हैं, क्या उन जवाबों का हिस्सा बढ़ता है जिन पर दोनों AI सहमत हैं और जो गलत हैं, और क्या वह समय के सवालों में सबसे तेज़ बढ़ता है? अगर हाँ, तो छोटी मेमोरी की एक छिपी कीमत है जिसे दूसरे AI की जाँच नहीं पकड़ेगी। अगर नहीं, तो FlyHash पेपर के दावे से भी बेहतर दिखता है।
कोड
जाँच किसी भी रिट्रीवर का आउटपुट ले लेती है। हर सवाल की एक पंक्ति:
{"qid": "conv-26/0", "memories": [{"text": "[D1:3 | 1:56 pm on 8 May, 2023] Caroline: I went to a LGBTQ support group yesterday...", "dia_id": "D1:3", "score": 0.82}]}रिपॉज़िटरी में पहले से एक उदाहरण है जो Mohan के कोड के FlyHash और SimHash क्लासों से ये संदर्भ बनाता है:
git clone https://github.com/mohanji/flyhash-agent-memory
pip install numpy sentence-transformers
python examples/flyhash_contexts.py --flyhash-src flyhash-agent-memory/src \
--method flyhash --active-bits 32 --out flyhash-k32.jsonl
python -m memcheck run --backend cli --contexts flyhash-k32.jsonl --memory-name flyhash-k32वही सवाल कई कोड-आकारों पर, या संदर्भ के तौर पर --method dense के साथ चलाने से तुलना मिलती है।
शुरुआती आँकड़े क्या कह सकते हैं और क्या नहीं
- वे एक रिट्रीवर (BM25), मॉडलों की एक जोड़ी, एक जज और एक सीड से आए हैं, 200 सवालों पर। दूसरे रिट्रीवर और मॉडल हर आँकड़ा हिला सकते हैं।
- जिन सवालों का सबूत BM25 से छूट जाता है वे बाकियों से अलग होते हैं (multi-hop और खुले-क्षेत्र वाले कहीं ज़्यादा बार छूटते हैं), इसलिए तुलना हर श्रेणी के भीतर भी की जाती है।
- कारण का परीक्षण वही सवाल एक बार सबूत वाले वाक्यों के साथ और एक बार उनके बिना पूछकर होगा। कई कोड-आकारों पर FlyHash उस ओर एक स्वाभाविक कदम है: वही सवाल, वही मॉडल, सिर्फ़ मेमोरी बदलती है।
समयरेखा
- Mohan Bheemadolu और Chrisogonas O. Odhiambo का FlyHash arXiv (2611.05791) पर प्रकाशित होता है।
- पेपर Hugging Face Papers पर आता है। टिप्पणियों में हम अलग शब्दों में पूछे सवालों के बारे में पूछते हैं; Mohan पूछते हैं कि कौन-सा डेटासेट लें; हम LoCoMo और LongMemEval सुझाते हैं, और वे पहले LoCoMo चुनते हैं।
- हम पूछते हैं कि क्या छोटे कोड समय के सवालों पर ज़्यादा हारते हैं। खुली जाँच पहली बार 200 LoCoMo सवालों पर चलती है, FlyHash के उदाहरण के साथ, और हम Mohan को आँकड़े भेजते हैं।
- Mohan योजना रखते हैं: हर श्रेणी में 16, 32, 64 और 128 बिट पर k = 10 के साथ रिट्रीवल रिकॉल, संदर्भ JSONL में। हम सहमत होते हैं और k = 5 जोड़ते हैं।