మెమరీని రకాన్ని బట్టి విభజించడం వల్ల రిట్రీవ్ చేయబడే టోకెన్లు సుమారు 40% తగ్గుతాయి.
ఫ్లాట్ మెమరీ స్టోర్ ఎందుకు విఫలమవుతుంది
చాలా బిగినర్ ట్యుటోరియల్స్ ఒక LLM ఏజెంట్కు ప్రతి కొత్త సమాచారాన్ని ఒకే జాబితాకు (list) జోడించడం ద్వారా "గుర్తుంచుకోవడం" నేర్పిస్తాయి మరియు ప్రతి టర్న్లో ఆ జాబితాను తిరిగి మోడల్కు అందిస్తాయి. ఈ కోడ్ కేవలం మూడు లైన్ల పొడవు ఉంటుంది మరియు ఇది ఒక వర్కింగ్ డెమోను అందిస్తుంది. కానీ వాస్తవంలో, ఈ జాబితా నియంత్రణ లేకుండా పెరుగుతూ పోతుంది. దీనివల్ల రెండు సమస్యలు కనిపిస్తాయి:
- ఏజెంట్ పాత డేటాను ఇంకా నిజమని భావిస్తుంది, ఉదాహరణకు గంటల క్రితమే ముగిసిపోయిన ETAను అందిస్తుంది.
- సమాధానంపై ఎటువంటి ప్రభావం చూపని అనవసరమైన విషయాలతో కాంటెక్స్ట్ విండో నిండిపోతుంది, దీనివల్ల API ఖర్చులు పెరిగి మరియు రెస్పాన్స్ టైమ్స్ నెమ్మదిస్తాయి.
ఒక సాధారణ వెక్టర్ స్టోర్ లేదా సింపుల్ కీ-వాల్యూ క్యాచీ (key-value cache), వినియోగదారుడి ఉద్యోగ హోదాను తాత్కాలిక ప్రాజెక్ట్ స్టేటస్ నుండి వేరు చేయలేదు. ఏజెంట్ సెమాంటిక్ సెర్చ్ చేసినప్పుడు, క్వెరీలో అదే పదాలు ఉన్నందున, ఆ డేటా ఇక సంబంధం లేకపోయినప్పటికీ, సిమిలారిటీ అల్గారిథమ్ పాత ETAను చూపించవచ్చు.
స్ట్రక్చర్డ్ మెమరీ: నాలుగు బకెట్లు, ఒకే లక్ష్యం
దీనికి పరిష్కారం ఏమిటంటే, మెమరీని ఒకే యూనిట్గా చూడటం మానేసి, ప్రతి ఎంట్రీని ఈ క్రింది నాలుగు వర్గాలుగా విభజించడం ప్రారంభించడం:
- User facts – వినియోగదారుడి పాత్ర (role), ఇష్టపడే భాష లేదా సెక్యూరిటీ క్లియరెన్స్ వంటి స్థిరమైన లక్షణాలు. ఇవి చాలా అరుదుగా మారుతాయి మరియు మొత్తం సెషన్ కోసం వీటిని క్యాష్ చేయవచ్చు.
- Feedback – ఏజెంట్ తప్పనిసరిగా పాటించాల్సిన స్పష్టమైన నియమాలు, ఉదాహరణకు "డేటాబేస్ పాస్వర్డ్లను ఎప్పుడూ వెల్లడించవద్దు" లేదా "కంప్లయన్స్ క్వెరీలలో హాస్యాన్ని నివారించండి." ఇవి ప్రవర్తనను నియంత్రిస్తాయి కాబట్టి, వీటిని సెర్చబుల్ పూల్ కంటే సిస్టమ్ ప్రాంప్ట్లో ఉంచడం మంచిది.
- Project state – ప్రస్తుత ETAలు, టాస్క్ ప్రోగ్రెస్ లేదా తాత్కాలిక టోకెన్ల వంటి వేగంగా మారే డేటా. ఈ బకెట్కు ఎక్స్పైరీ చెక్ అవసరం; ఒకసారి టైమ్స్టాంప్ నిర్ణీత సమయం దాటితే, ఆ ఎంట్రీని తొలగించాలి.
- References – ఎక్స్టర్నల్ సర్వీసెస్, డాక్యుమెంట్ ఐడిలు లేదా API ఎండ్పాయింట్లకు పాయింటర్లు. ఇవి ప్రదర్శించాల్సిన కంటెంట్ కాదు, అవసరమైనప్పుడు తాజా డేటాను పొందడానికి మార్గాలు.
Mem0 డెవలపర్లు ప్రతి మెమరీ రికార్డుకు ఏదైనా మెటాడేటాను జోడించడానికి అనుమతిస్తుంది. "kind" ఫీల్డ్పై ఇండెక్సింగ్ చేయడం ద్వారా, LLM ఫలితాన్ని ఎలా ఉపయోగించాలో నిర్ణయించే ముందు, క్వెరీ సంబంధిత బకెట్ను ఫిల్టర్ చేయగలదు.
Mem0తో రెండు-దశల రిట్రీవల్
- Pull memories by kind – ఒక చిన్న ఫిల్టర్ క్వెరీ ద్వారా Mem0 నుండి "అన్ని ఫీడ్బ్యాక్" లేదా "తక్కువ వ్యవధి కంటే కొత్తగా ఉన్న ప్రాజెక్ట్-స్టేట్ ఎంట్రీలు" కావాలని అడగవచ్చు. దీనివల్ల వచ్చే ఫలితాలు ఇప్పటికే సరైన వర్గానికి అనుగుణంగా ఉంటాయి.
- Let the LLM decide – ఫిల్టర్ చేయబడిన స్నిప్పెట్లను వినియోగదారుడి ప్రస్తుత ప్రశ్నతో పాటు ప్రాంప్ట్లో చేరుస్తారు. దీనివల్ల మోడల్ అనవసరమైన విషయాలను వెతకాల్సిన అవసరం లేకుండానే వాటి గురించి ఆలోచించగలదు.
ఒక ఉదాహరణ: "డేటాబేస్ను ఎగతాళి చేయవద్దు" అనే నియమం సెమాంటిక్ మ్యాచ్ ద్వారా బయటకు వచ్చే వరకు వేచి ఉండటానికి బదులుగా, డెవలపర్ ఆ నియమాన్ని సెషన్ ప్రారంభంలోనే నేరుగా సిస్టమ్ ప్రాంప్ట్లో చేర్చి, మొత్తం ఇంటరాక్షన్ కోసం దాన్ని క్యాష్ చేస్తారు. వినియోగదారుడి క్వెరీలో డేటాబేస్లకు సంబంధించి ఎటువంటి స్పష్టమైన ప్రస్తావన లేకపోయినా, మోడల్కు ఆ నిబంధన ముందే తెలుస్తుంది.
ఖర్చులను తగ్గించే ఆచరణాత్మక చిట్కాలు
- Cache feedback rules – ప్రతి టర్న్లో మళ్ళీ వెతకడం కంటే, నియమాల సెట్ను ప్రతి సెషన్కు ఒకసారి మాత్రమే స్టోర్ చేసి మళ్ళీ ఉపయోగించండి. ఇది ప్రతి రౌండ్లో టోకెన్ వినియోగాన్ని తగ్గిస్తుంది.
- Skip project-state searches when irrelevant – వినియోగదారుడు కేవలం కాన్సెప్చువల్ ప్రశ్న అడిగితే (ఉదాహరణకు, "supervised మరియు reinforcement learning మధ్య తేడా ఏమిటి?"), అప్పుడు ETA లేదా టాస్క్ ప్రోగ్రెస్ డేటాను తీసుకురావాల్సిన అవసరం లేదు.
ఈ రెండు అలవాట్లను పాటించడం ద్వారా, సాధారణ ఫ్లాట్ మెమరీ విధానంతో పోలిస్తే టోకెన్ వినియోగాన్ని సుమారు 40% తగ్గించవచ్చు. దీనివల్ల API బిల్లులు తగ్గుతాయి మరియు పని వేగంగా పూర్తవుతుంది, ముఖ్యంగా ఎక్కువ సంభాషణలు జరిపే ఏజెంట్లకు ఇది చాలా ఉపయోగకరం.
ఎవరికి లాభం, ఎవరికి ఆందోళన
Winners – కస్టమర్-సపోర్ట్ బాట్లు, ఇంటర్నల్ వర్క్ఫ్లో అసిస్టెంట్లు లేదా మల్టీ-టర్న్ LLM ఇంటర్ఫేస్లను రూపొందించే టీమ్లు. వీరికి మరింత నమ్మదగిన సమాధానాలు లభిస్తాయి, పాత డేటా వల్ల కలిగే తప్పులను నివారించవచ్చు మరియు బడ్జెట్ను సమర్థవంతంగా ఉపయోగించుకోవచ్చు.
ముఖ్య అంశం
మీరు సుదీర్ఘ సెషన్లలో కూడా సమర్థవంతంగా పనిచేసే LLM ఏజెంట్ను కోరుకుంటే, ప్రతి విషయాన్ని ఒకే కాంటెక్స్ట్ విండోలోకి నెట్టడం ఆపండి. ప్రతి మెమరీని user fact, feedback, project state లేదా reference గా ట్యాగ్ చేయండి, అవసరమైన చోట ఎక్స్పైరీలను అమలు చేయండి మరియు Mem0 వంటి సాధనాన్ని ఉపయోగించి పనిని సులభతరం చేయండి. దీనివల్ల తాజా సమాధానాలు, తక్కువ టోకెన్ల వినియోగం మరియు నిర్వహణ ఖర్చులలో గణనీయమైన తగ్గుదల లభిస్తాయి.