પ્રકાર મુજબ મેમરીનું માળખું તૈયાર કરવાથી મેળવેલા ટોકન્સમાં લગભગ 40% નો ઘટાડો થાય છે.
ફ્લેટ મેમરી સ્ટોર (flat memory store) શા માટે નિષ્ફળ જાય છે
મોટાભાગના શિખાઉ ટ્યુટોરિયલ્સ LLM એજન્ટને દરેક નવી માહિતીને એક જ લિસ્ટમાં ઉમેરીને અને દરેક વખતે તે લિસ્ટ મોડેલને પાછું મોકલીને "યાદ રાખવાનું" શીખવે છે. આ કોડ માત્ર ત્રણ લાઇનનો હોય છે અને તે એક કામ કરતું ડેમો આપે છે. વ્યવહારમાં, આ લિસ્ટ અનિયંત્રિત રીતે વધતું જાય છે. તેના બે લક્ષણો જોવા મળે છે:
- એજન્ટ જૂના ડેટાને હજુ પણ સાચો માને છે, ઉદાહરણ તરીકે, કલાકો પહેલા એક્સપાયર થઈ ગયેલું ETA આપે છે.
- કોન્ટેક્સ્ટ વિન્ડો (context window) એવી બિનજરૂરી માહિતીથી ભરાઈ જાય છે જે જવાબ પર કોઈ અસર કરતી નથી, જેનાથી API ખર્ચ વધે છે અને પ્રતિસાદ આપવાનો સમય (response time) ધીમો પડે છે.
એક સાદો વેક્ટર સ્ટોર (vector store) અથવા સાદું કી-વેલ્યુ કેશ (key-value cache) વપરાશકર્તાના હોદ્દા અને કામચલાઉ પ્રોજેક્ટ સ્ટેટસ વચ્ચેનો તફાવત સમજી શકતું નથી. જ્યારે એજન્ટ સિમેન્ટિક સર્ચ (semantic search) કરે છે, ત્યારે સમાનતા અલ્ગોરિધમ (similarity algorithm) માત્ર એટલા માટે જૂનું ETA બતાવી શકે છે કારણ કે ક્વેરીમાં તે જ શબ્દો છે, ભલે તે માહિતી હવે સુસંગત ન હોય.
સ્ટ્રક્ચર્ડ મેમરી: ચાર બકેટ, એક હેતુ
તેનો ઉપાય એ છે કે મેમરીને એક જ એકમ (monolith) તરીકે જોવાનું બંધ કરો અને દરેક એન્ટ્રીને ચાર શ્રેણીઓમાંથી એકમાં વર્ગીકૃત કરવાનું શરૂ કરો:
- User facts – સ્થિર ગુણધર્મો જેમ કે વપરાશકર્તાની ભૂમિકા, પસંદગીની ભાષા અથવા સિક્યુરિટી ક્લિયરન્સ. આ ભાગ્યે જ બદલાય છે અને આખા સેશન માટે કેશ (cache) કરી શકાય છે.
- Feedback – સ્પષ્ટ નિયમો જેનું એજન્ટ પાલન કરવું આવશ્યક છે, જેમ કે, "ડેટાબેઝ પાસવર્ડ ક્યારેય જાહેર ન કરો" અથવા "કમ્પ્લાયન્સ ક્વેરીઝમાં રમૂજ ટાળો." કારણ કે તેઓ વર્તનને નિયંત્રિત કરે છે, તેથી તેઓ સર્ચેબલ પૂલને બદલે સિસ્ટમ પ્રોમ્પ્ટમાં હોવા જોઈએ.
- Project state – ઝડપથી બદલાતી માહિતી જેમ કે વર્તમાન ETA, કાર્યની પ્રગતિ અથવા કામચલાઉ ટોકન્સ. આ બકેટમાં એક્સપાયરી ચેક (expiry check) ની જરૂર છે; એકવાર ટાઈમસ્ટેમ્પ નિર્ધારિત સમયગાળાની બહાર જાય પછી એન્ટ્રીને દૂર કરી દેવી જોઈએ.
- References – બાહ્ય સેવાઓ, ડોક્યુમેન્ટ ID અથવા API એન્ડપોઈન્ટ્સના પોઈન્ટર્સ. તે પ્રદર્શિત કરવા માટેની સામગ્રી નથી પરંતુ જ્યારે જરૂર હોય ત્યારે તાજી માહિતી મેળવવા માટેના રૂટ્સ છે.
Mem0 ડેવલપર્સને દરેક મેમરી રેકોર્ડ સાથે મનસ્વી મેટાડેટા જોડવાની સુવિધા આપે છે. "kind" ફિલ્ડ પર ઇન્ડેક્સિંગ કરીને, LLM પરિણામનો ઉપયોગ કેવી રીતે કરવો તે નક્કી કરે તે પહેલાં ક્વેરી સંબંધિત બકેટ માટે ફિલ્ટર કરી શકે છે.
Mem0 સાથે બે-તબક્કાની રિટ્રાઇવલ (retrieval) પ્રક્રિયા
- Kind મુજબ મેમરી મેળવો – એક ટૂંકી ફિલ્ટર ક્વેરી Mem0 ને "તમામ ફીડબેક" અથવા "ટૂંકા અંતરાલ કરતા નવા પ્રોજેક્ટ-સ્ટેટ એન્ટ્રીઝ" માટે પૂછે છે. પરિણામ સેટ પહેલેથી જ યોગ્ય શ્રેણી મુજબ ફિલ્ટર થયેલ હોય છે.
- LLM ને નિર્ણય લેવા દો – ફિલ્ટર કરેલા સ્નિપેટ્સ (snippets) ને વપરાશકર્તાના વર્તમાન પ્રશ્ન સાથે પ્રોમ્પ્ટમાં દાખલ કરવામાં આવે છે. હવે મોડેલ બિનજરૂરી તથ્યોમાં શોધ્યા વગર તેના વિશે તર્ક કરી શકે છે.
એક નક્કર ઉદાહરણ: "ડેટાબેઝની મજાક ન ઉડાવો" એ નિયમ સિમેન્ટિક મેચ દ્વારા સામે આવે તેની રાહ જોવાને બદલે, ડેવલપર તે નિયમને સેશન શરૂઆતમાં સીધો સિસ્ટમ પ્રોમ્પ્ટમાં ઉમેરે છે અને આખા ઇન્ટરેક્શન માટે તેને કેશ કરે છે. જો વપરાશકર્તાની ક્વેરીમાં ડેટાબેઝનો કોઈ સ્પષ્ટ ઉલ્લેખ ન હોય, તો પણ મોડેલ પહેલેથી જ તે મર્યાદા જાણે છે.
ખર્ચ ઘટાડવા માટેની વ્યવહારિક ટિપ્સ
- Feedback નિયમોને કેશ કરો – દરેક વખતે ફરીથી શોધવાને બદલે સેશનમાં એકવાર નિયમોનો સેટ સ્ટોર કરો અને તેનો ફરીથી ઉપયોગ કરો. આનાથી દરેક રાઉન્ડમાં ટોકનનો વપરાશ ઘટે છે.
- બિનજરૂરી હોય ત્યારે પ્રોજેક્ટ-સ્ટેટ સર્ચ કરવાનું ટાળો – જો વપરાશકર્તા માત્ર વૈચારિક પ્રશ્ન પૂછે છે ("સુપરવાઈઝ્ડ અને રિઇન્ફોર્સમેન્ટ લર્નિંગ વચ્ચે શું તફાવત છે?"), તો કોઈપણ ETA અથવા કાર્યની પ્રગતિનો ડેટા મેળવવાની જરૂર નથી.
આ બે ટેવો અપનાવીને, સાદા ફ્લેટ મેમરી અભિગમની સરખામણીમાં ટોકન વપરાશમાં લગભગ 40% નો ઘટાડો કરી શકાય છે. આ બચત સીધી રીતે ઓછા API બિલ અને ઝડપી પ્રતિસાદમાં પરિણમે છે, ખાસ કરીને એવા એજન્ટ્સ માટે જે ઘણા ઇન્ટરેક્શન સુધી સક્રિય રહે છે.
કોને ફાયદો થાય છે અને કોણ ચિંતિત છે
વિજેતાઓ – કસ્ટમર-સપોર્ટ બોટ્સ, આંતરિક વર્કફ્લો આસિસ્ટન્ટ્સ અથવા કોઈપણ મલ્ટી-ટર્ન LLM ઇન્ટરફેસ બનાવતી ટીમો. તેમને વધુ વિશ્વસનીય જવાબો મળે છે, જૂના ડેટાને કારણે થતી શરમજનક ભૂલો ટાળી શકાય છે, અને તેઓ તેમના બજેટનો વધુ સારી રીતે ઉપયોગ કરી શકે છે.
મુખ્ય વાત (Takeaway)
જો તમે એવું LLM એજન્ટ ઈચ્છતા હોવ જે લાંબા સેશન્સ દરમિયાન સચોટ રહે, તો દરેક તથ્યને એક જ કોન્ટેક્સ્ટ વિન્ડોમાં ભરવાનું બંધ કરો. દરેક મેમરીને user fact, feedback, project state અથવા reference તરીકે ટેગ કરો, જ્યાં જરૂર હોય ત્યાં એક્સપાયરી લાગુ કરો, અને Mem0 જેવા સાધનનો ઉપયોગ કરીને મુખ્ય કામ સરળ બનાવો. પરિણામ તરીકે તાજા જવાબો, ઓછા બિનજરૂરી ટોકન્સ અને ઓપરેટિંગ ખર્ચમાં નોંધપાત્ર ઘટાડો જોવા મળશે.