Memora: दीर्घकालिक कार्यों के लिए विस्तार योग्य मेमोरी सिस्टम
(github.com/microsoft)सारांश अवलोकन
-
उद्देश्य
- AI एजेंट्स को बातचीत और दस्तावेज़ों से आवश्यक जानकारी अपने-आप निकालने, उसे लंबे समय तक स्टोर करने और खोजने में मदद करने वाला मेमोरी फ्रेमवर्क
-
मुख्य डिज़ाइन
- पूरा मूल पाठ
Memory valueके रूप में ज्यों-का-त्यों सुरक्षित रखा जाता है, और खोज के लिएPrimary abstractionतथाCue anchorsका उपयोग किया जाता है
- पूरा मूल पाठ
-
मुख्य अंतर
- पूरे मूल पाठ को सीधे embed करने वाले सामान्य RAG की तुलना में, यह संरचना information loss और retrieval ambiguity को कम करने की दिशा में बनाई गई है
-
मुख्य फीचर
- मेमोरी का स्वचालित extraction, deduplication, merge और update, semantic search, keyword search, तथा LLM-आधारित multi-step search का समर्थन
-
उपयुक्त उपयोग क्षेत्र
- दीर्घकालिक conversational AI, multi-agent systems, personalized services, और document-based knowledge management
-
वर्तमान स्थिति
- यह Python-आधारित MIT लाइसेंस वाला ओपन प्रोजेक्ट है, जिसमें benchmark और experimental फीचर शामिल हैं, लेकिन यह अभी शुरुआती सार्वजनिक चरण के काफ़ी करीब है
परिचय
एजेंट मेमोरी प्रबंधन की जटिलता का समाधान
-
मौजूदा AI एजेंट विकास में डेवलपर को निम्न समस्याएँ सीधे संभालनी पड़ती हैं
- कौन-सी जानकारी को मेमोरी के रूप में स्टोर करना है, यह तय करना
- स्टोर की गई जानकारी को कब update या delete करना है, यह निर्धारित करना
- उपयोगकर्ता के प्रश्न से संबंधित यादों को retrieve करना
- duplicate या conflicting यादों को manage करना
-
Memora का लक्ष्य इस मेमोरी lifecycle को फ्रेमवर्क के भीतर संभालना है
-
इससे डेवलपर low-level storage और retrieval logic की बजाय एजेंट के कार्यात्मक behavior और response generation पर ध्यान दे सकता है
मौजूदा मेमोरी संरचनाओं की सीमाएँ
-
सामान्य RAG सिस्टम
- दस्तावेज़ या बातचीत के मूल पाठ को निश्चित आकार के हिस्सों में बाँटते हैं
- हर हिस्से को embed करके vector database में स्टोर करते हैं
- प्रश्न से अर्थ के स्तर पर मिलते-जुलते हिस्सों को खोजते हैं
-
यह तरीका लागू करना आसान है, लेकिन इससे निम्न समस्याएँ हो सकती हैं
- लंबा context कई हिस्सों में बिखर जाता है
- समान अभिव्यक्ति वाली जानकारी duplicate रूप से स्टोर हो जाती है
- साधारण semantic similarity वास्तविक प्रश्न-उद्देश्य से मेल न खा सके
- यदि केवल compressed summary स्टोर की जाए तो details खो सकती हैं
-
graph-आधारित knowledge base संबंधों को व्यक्त करने में उपयोगी है, लेकिन schema और relation structure को लगातार maintain करना एक अतिरिक्त बोझ है
मुख्य भाग
मूल पाठ और retrieval संरचना को अलग करना
- Memora की प्रत्येक मेमोरी तीन तत्वों से बनी होती है
Memory value
- वास्तव में स्टोर की जाने वाली पूरी जानकारी
- मूल पाठ और विवरणों को compress किए बिना सुरक्षित रखता है
- search index में सीधे शामिल नहीं किया जाता
- information loss के बिना मूल context बनाए रखने का काम करता है
Primary abstraction
- यह बताने वाला प्रतिनिधि सार कि संबंधित मेमोरी किस बारे में है
- हर मेमोरी के लिए एक बनाया जाता है
- retrieval, update, merge और deduplication के आधार के रूप में उपयोग होता है
- मेमोरी की पहचान दिखाने वाली मानक इकाई की तरह काम करता है
Cue anchors
- कई semantic संकेत जिनके माध्यम से एक मेमोरी तक पहुँचा जा सकता है
- व्यक्ति, वस्तु, घटना, मुख्य गुण आदि को मिलाकर बनाए जाते हैं
- एक ही मेमोरी से कई संकेत जोड़े जा सकते हैं
- कई यादें एक ही संकेत को साझा करते हुए many-to-many संरचना बना सकती हैं
खोज लक्ष्य का चयनात्मक indexing
-
Memora हर मूल पाठ को सीधे index नहीं करता
-
वास्तविक retrieval में केवल निम्न जानकारी का उपयोग होता है
- Primary abstraction
- Cue anchors
-
retrieval पूरा होने पर उससे जुड़े मूल
Memory valueको लौटाया जाता है -
इस संरचना का उद्देश्य
- retrieval representation और वास्तविक स्टोर की गई जानकारी को अलग करना
- search index को संक्षिप्त बनाए रखना
- मूल पाठ की details को ज्यों-का-त्यों सुरक्षित रखना
- मूल पाठ embedding से उत्पन्न semantic noise को कम करना
RAG और graph संरचना के बीच का रूप
-
सामान्य RAG की तुलना में अधिक structured retrieval संकेत प्रदान करता है
-
graph database की तरह हर संबंध को सख़्त schema में परिभाषित नहीं करता
-
यह मेमोरी के ऊपर abstraction layer जोड़कर flexibility और structure दोनों हासिल करने की कोशिश करता है
-
मुख्य दिशा
- मूल पाठ को स्वतंत्र रूप में स्टोर करना
- retrieval और linking के लिए structured representation का उपयोग करना
- storage structure और retrieval structure को स्वतंत्र रूप से manage करना
मेमोरी निर्माण से उत्तर तक की processing flow
1. मेमोरी संग्रह
-
एजेंट बातचीत या दस्तावेज़ को प्रोसेस करता है
-
सामग्री से निम्न जानकारी स्वतः निकाली जाती है
- तथ्यात्मक जानकारी
- घटनाएँ और अनुभव
- प्रक्रियाएँ और कार्य-पद्धतियाँ
-
लंबी बातचीत को विषय-आधारित episodes में बाँटा जाता है
-
मुख्य जानकारी को structured memory items में बदला जाता है
2. बुद्धिमान स्टोरेज
-
ChromaDB vector database को default storage के रूप में उपयोग किया जाता है
-
semantic embedding का उपयोग करके मेमोरी स्टोर की जाती है
-
नई जानकारी आने पर उसका मौजूदा मेमोरी से तुलना की जाती है
-
समान या duplicate जानकारी के लिए निम्न कार्य किए जाते हैं
- deduplication
- मौजूदा याद के साथ merge
- पुरानी जानकारी को update करना
-
वैकल्पिक रूप से Cue index बनाकर structured retrieval का समर्थन किया जा सकता है
3. अनुकूली retrieval
- प्रश्न के प्रकार और settings के अनुसार कई retrieval रणनीतियाँ प्रदान की जाती हैं
Semantic खोज
- प्रश्न और मेमोरी representation के बीच vector similarity की गणना की जाती है
- implementation सरल है और सामान्य प्रश्नों पर लागू किया जा सकता है
- अभिव्यक्ति अलग होने पर भी अर्थ-समान जानकारी खोजी जा सकती है
Prompted खोज
- LLM retrieval प्रक्रिया को चरण-दर-चरण चलाता है
- शुरुआती retrieval results के आधार पर search terms और search scope को बार-बार समायोजित किया जाता है
- जटिल प्रश्नों या कई यादों को जोड़ने वाले प्रश्नों के लिए उपयुक्त
- अतिरिक्त LLM calls के कारण लागत और response time बढ़ सकता है
Hybrid खोज
- vector-आधारित semantic search और BM25/keyword search को मिलाता है
- semantic similarity और exact word match दोनों का उपयोग करता है
- proper nouns, product names, code, dates आदि की retrieval miss कम करने में मददगार
GRPO खोज
- reinforcement learning से प्रशिक्षित retrieval policy का उपयोग करता है
- यह स्वयं सीखता है कि प्रश्न के लिए कौन-सी मेमोरी चुननी है
- इसका लक्ष्य LLM-आधारित iterative retrieval को local fine-tuned model से बदलना है
- फिलहाल इसे experimental फीचर माना गया है
4. उत्तर निर्माण
- retrieve की गई मेमोरी को निर्धारित format में व्यवस्थित किया जाता है
- इस सामग्री को LLM prompt में डाला जाता है
- LLM प्रश्न और retrieve की गई यादों का साथ में उपयोग करके उत्तर बनाता है
- उत्तर को स्टोर की गई मेमोरी पर आधारित रखने के लिए निर्देशित किया जाता है
मेमोरी गुणवत्ता बनाए रखने वाली प्रबंधन सुविधाएँ
-
केवल मेमोरी जोड़ते जाने वाले flat storage से अलग, यह मौजूदा मेमोरी की स्थिति को भी manage करता है
-
मुख्य प्रबंधन फीचर
- duplicate यादों को हटाना
- समान यादों को merge करना
- बदले हुए तथ्यों को update करना
- मेमोरी संरचना को पुनर्गठित करना
-
Primary abstraction को मेमोरी update और integration के आधार के रूप में इस्तेमाल किया जाता है
-
इसका लक्ष्य समय के साथ मेमोरी में duplicate का अनियंत्रित संचय कम करना है
विभिन्न मेमोरी प्रकारों का समर्थन
- memory value और abstraction के तरीकों को अलग-अलग बनाकर कई प्रकार की यादों को व्यक्त किया जा सकता है
तथ्यात्मक यादें
- व्यक्ति, स्थान, गुण, settings जैसी अपेक्षाकृत स्थिर जानकारी
- उदाहरण: किसी विशेष उपयोगकर्ता का कार्यस्थल, पसंदीदा tools, project tech stack
प्रासंगिक/घटनात्मक यादें
- किसी विशेष समय पर हुई घटना या बातचीत
- उदाहरण: पिछली मीटिंग में लिया गया निर्णय, किसी विशेष error को हल करने की प्रक्रिया
प्रक्रियात्मक यादें
- काम करने का तरीका या दोहराई जा सकने वाली प्रक्रिया
- उदाहरण: server deployment प्रक्रिया, error checking का क्रम, document creation rules
multi-agent में मेमोरी साझा करना और अलगाव
-
एक ही environment में काम करने वाले कई एजेंट एक common memory space का उपयोग कर सकते हैं
-
एक एजेंट द्वारा स्टोर की गई जानकारी को दूसरा एजेंट दोबारा उपयोग कर सकता है
-
एजेंट या role के अनुसार memory scope को सीमित भी किया जा सकता है
-
अपेक्षित प्रभाव
- एजेंट्स के बीच knowledge duplication में कमी
- task handoff में सुधार
- shared project information की consistency बनाए रखना
-
access control और isolation फीचर के माध्यम से selective sharing और privacy protection का समर्थन करने वाली संरचना
storage infrastructure और representation structure का विभाजन
-
इस तरह डिज़ाइन किया गया है कि मेमोरी representation किसी एक storage पर बहुत अधिक निर्भर न हो
-
project structure में निम्न database connection फीचर शामिल हैं
- ChromaDB
- Redis
-
local या remote storage environments में लागू किया जा सकता है
-
storage backend बदलने पर भी मेमोरी की abstraction और cue संरचना को बनाए रखा जा सकता है
मूल उपयोग तरीका
- Python 3.10 या उससे ऊपर आवश्यक
- GitHub repository clone करने के बाद package install करें
MemoraClientबनाएँ और user या agent identifier निर्दिष्ट करेंadd()का उपयोग करके बातचीत या दस्तावेज़ को मेमोरी में जोड़ेंquery()का उपयोग करके semantic retrieval करेंadvance_query()का उपयोग करके Prompted या GRPO तरीके से advanced retrieval करें
एजेंट इंटीग्रेशन संरचना
-
उपयोगकर्ता संदेश मिलने पर पहले संबंधित मेमोरी retrieve की जाती है
-
retrieval result और उपयोगकर्ता प्रश्न का उपयोग करके उत्तर बनाया जाता है
-
बने हुए उत्तर और उपयोगकर्ता संदेश को एक conversation record में संगठित किया जाता है
-
उस बातचीत को फिर से Memora में स्टोर किया जाता है
-
दोहराव प्रक्रिया
- प्रश्न प्राप्त करना
- संबंधित यादों को retrieve करना
- उत्तर बनाना
- बातचीत स्टोर करना
- आगे के प्रश्नों में पुन: उपयोग करना
दीर्घकालिक मेमोरी प्रदर्शन का मूल्यांकन
LoCoMo benchmark
-
लंबे समय तक चलने वाली बातचीत में memory retrieval क्षमता का मूल्यांकन
-
मुख्य मूल्यांकन प्रकार
- single-step प्रश्न
- कई जानकारियों को जोड़ने वाले multi-step प्रश्न
- time relation प्रश्न
- open-ended प्रश्न
-
Semantic, Prompted, Cue index आदि के combinations का परीक्षण किया जा सकता है
LongMemEval benchmark
- long-term memory system की विभिन्न प्रश्न-संभाल क्षमताओं का मूल्यांकन
- episodic memory और semantic retrieval settings लागू की जा सकती हैं
- वास्तविक long-term conversation environment में information retention और retrieval performance की जाँच के लिए उपयोग
GRPO-आधारित retrieval policy training
-
retrieval procedure को reinforcement learning policy के रूप में सिखाने वाला experimental फीचर
-
processing steps
- मौजूदा policy से retrieval path बनाना
- retrieval result की grounding, duplication और cost का मूल्यांकन
- group relative advantage की गणना
- GRPO तरीके से retrieval policy को train करना
-
Qwen 3B या 7B series models और LoRA fine-tuning को उदाहरण के रूप में प्रस्तुत किया गया है
-
training के लिए GPU आवश्यक है
-
लक्ष्य
- हर retrieval पर external LLM call की लागत कम करना
- विशेष डेटा और कार्यों के लिए optimized retrieval strategy बनाना
-
सीमाएँ
- training data और evaluation criteria की आवश्यकता
- model training और operations management की अतिरिक्त जटिलता
- सामान्य उपयोगकर्ता के लिए सीधे लागू करना Semantic retrieval की तुलना में अधिक जटिल
मुख्य लाभ
- मूल पाठ की details को बिना compress किए सुरक्षित रखा जा सकता है
- retrieval representation और वास्तविक जानकारी अलग होने से मेमोरी संरचना अधिक स्पष्ट बनती है
- मेमोरी deduplication और update को व्यवस्थित रूप से संभाला जा सकता है
- semantic search, keyword search, LLM search और reinforcement learning search में से चयन किया जा सकता है
- तथ्यात्मक, घटनात्मक और प्रक्रियात्मक यादों को एक ही framework में manage किया जा सकता है
- कई एजेंट एक ही यादों को साझा कर सकते हैं
- मौजूदा agent system में अपेक्षाकृत कम बदलाव के साथ integration का लक्ष्य
- local और remote storage structure दोनों का समर्थन कर सकता है
संरचनात्मक सीमाएँ और सावधानियाँ
- Primary abstraction और Cue anchors की गुणवत्ता retrieval performance को सीधे प्रभावित करती है
- यदि auto-generated abstraction सटीक न हो, तो मूल पाठ सही होने पर भी retrieval में छूट सकता है
- मूल पाठ को सीधे index न करने वाली संरचना detailed phrasing या sparse information retrieval में कमज़ोर पड़ सकती है
- deduplication और merge प्रक्रिया में अलग-अलग घटनाएँ गलती से एक ही मेमोरी में मिल सकती हैं
- Prompted retrieval में कई LLM calls के कारण लागत और latency बढ़ सकती है
- GRPO तरीके में GPU, training data और evaluation framework की आवश्यकता होती है, इसलिए operational complexity अधिक है
- multi-agent shared memory में access permissions और information isolation को स्पष्ट रूप से डिज़ाइन करना होगा
- personal data या sensitive बातचीत स्टोर करने पर अलग encryption, deletion और retention policy की आवश्यकता होगी
- public repository में releases नहीं हैं और contributors व usage metrics भी कम हैं, इसलिए large-scale operational stability को पर्याप्त रूप से सत्यापित मानना कठिन है
निष्कर्ष
structured access layer जोड़ने वाला long-term memory approach
-
Memora पूरे मूल पाठ को बस vectorize करने के तरीके से आगे बढ़कर निम्न संरचना प्रस्तावित करता है
- details को
Memory valueमें सुरक्षित रखना - प्रतिनिधि अर्थ को
Primary abstractionसे व्यक्त करना - विविध retrieval paths को
Cue anchorsसे बनाना
- details को
-
इसका मुख्य मूल्य information preservation और retrieval efficiency के बीच संतुलन में है
-
साधारण document retrieval की तुलना में निम्न environments में इसका उपयोग अधिक संभावनाशील है
- personalized agents जो लंबे समय तक उपयोगकर्ताओं के साथ interact करते हैं
- ऐसे systems जो लगातार बड़ी मात्रा में development और business documents जमा करते हैं
- ऐसे environments जहाँ अलग-अलग भूमिकाओं वाले एजेंट ज्ञान साझा करते हैं
- ऐसे projects जहाँ पिछले निर्णयों और कार्य-प्रक्रियाओं का पुन: उपयोग करना पड़ता है
अपनाने से पहले सत्यापन आवश्यक
-
वास्तविक उपयोग में निम्न बिंदुओं की पहले जाँच करनी चाहिए
- कोरियाई दस्तावेज़ों के abstraction और Cue generation की गुणवत्ता
- मौजूदा RAG की तुलना में retrieval accuracy
- memory merge प्रक्रिया की error rate
- लंबे समय के संचालन में data growth और retrieval speed
- LLM और embedding API की लागत
- personal data storage और access control का तरीका
-
शुरुआती चरण में कुछ मुख्य दस्तावेज़ों पर छोटे स्तर का PoC करना, और सामान्य RAG व hybrid retrieval के साथ performance compare करना एक उपयुक्त तरीका है
अभी कोई टिप्पणी नहीं है.