ഏജന്റ് മെമ്മറി: 7 തരങ്ങൾ, ഇതിൽ 2 എണ്ണവും യഥാർത്ഥത്തിൽ ഓർമ്മിച്ചുവെക്കുന്നില്ല

നിങ്ങളുടെ ഏജന്റിന് മെമ്മറി പ്രശ്നമില്ല. അതിന് ഏഴ് വ്യത്യസ്ത തരം മെമ്മറികളുണ്ട്. മിക്ക ടീമുകളും രണ്ട് എണ്ണം മാത്രമേ നിർമ്മിക്കാറുള്ളൂ.

നിങ്ങൾ ആദ്യം മനസ്സിലാക്കേണ്ട കാര്യം: മോഡലിന് ഒന്നും ഓർമ്മയില്ല. ഒരു LLM എന്നത് ഒരു 'pure function' ആണ്. അത് ഒരു ഇൻപുട്ട് സ്വീകരിച്ച് ഒരു ഔട്ട്പുട്ട് നൽകുന്നു. ഓരോ കോളിനും ഇടയിൽ അത് ഒരു സ്റ്റേറ്റും (state) സൂക്ഷിക്കുന്നില്ല. മെമ്മറി പോലെ തോന്നിക്കുന്നത് ഓരോ റിക്വസ്റ്റോടുമൊപ്പം ഹിസ്റ്ററി വീണ്ടും അയക്കുന്ന ഒരു ലെയർ മാത്രമാണ്. ഓരോ തവണയും ആ ടോക്കണുകൾക്കായി നിങ്ങൾ പണം നൽകേണ്ടി വരുന്നു.

മിക്ക എഞ്ചിനീയറിംഗ് ശ്രമങ്ങളും രണ്ട് രീതികളിലേക്ക് ചുരുങ്ങുന്നു: കൺവേർസേഷൻ ഹിസ്റ്ററിയും (conversation history) RAG-ഉം. ഇവ ഏഴ് തരങ്ങളിൽ രണ്ടെണ്ണമാണ്. പ്രശ്നം എന്തെന്നാൽ, ഇവ നിങ്ങളുടെ ഏജന്റിനെ കാലക്രമേണ കൂടുതൽ ബുദ്ധിമാനാക്കുന്നില്ല.

ഇതാ ഏഴ് തരം മെമ്മറികൾ:

• Working: നിലവിലെ കോൺടെക്സ്റ്റ് വിൻഡോയിലുള്ള (context window) എല്ലാം. • Semantic: വസ്തുതകൾ, താൽപ്പര്യങ്ങൾ, ഡൊമെയ്ൻ അറിവ് എന്നിവ. • Episodic: കഴിഞ്ഞ സംഭവങ്ങളുടെയും എന്താണ് വിജയിച്ചതെന്നോ പരാജയപ്പെട്ടതെന്നോ ഉള്ള വിവരങ്ങളുടെയും ഒരു ലോഗ്. • Procedural: നൈപുണ്യങ്ങൾ, വർക്ക്ഫ്ലോകൾ, ടൂൾ പാറ്റേണുകൾ എന്നിവ. • Retrieval: സിമിലാരിറ്റി സെർച്ച് (similarity search) വഴി അറിവ് വീണ്ടെടുക്കുന്നത്. • Parametric: മോഡൽ വെയ്റ്റുകളിൽ (model weights) ഉൾച്ചേർക്കപ്പെട്ട അറിവ്. • Prospective: ഭാവി ലക്ഷ്യങ്ങളും ഷെഡ്യൂൾ ചെയ്ത ജോലികളും.

ഇതിൽ രണ്ടെണ്ണം യഥാർത്ഥ മെമ്മറിയല്ല. RAG എന്നത് വെറുമൊരു ഡെലിവറി സംവിധാനം മാത്രമാണ്. അത് പൈപ്പിംഗ് പോലെയാണ്, വെള്ളമല്ല. അത് ഒരു സ്റ്റോറിൽ നിന്ന് ഡാറ്റയെ വർക്കിംഗ് മെമ്മറിയിലേക്ക് എത്തിക്കുന്നു. നിങ്ങൾ ഒരു വെക്റ്റർ ഡാറ്റാബേസ് (vector database) മാത്രം ഉപയോഗിക്കുകയാണെങ്കിൽ, നിങ്ങൾ ഒരു പൈപ്പ് നിർമ്മിക്കുകയും അതിലൂടെ ഒഴുകേണ്ട ദ്രാവകം മറന്നുപോവുകയും ചെയ്തു എന്നാണ് അർത്ഥം.

യഥാർത്ഥത്തിൽ പഠിക്കാൻ കഴിയുന്ന ഒരു ഏജന്റിനെ നിർമ്മിക്കാൻ, നിങ്ങൾക്ക് ഒരു consolidation loop ആവശ്യമാണ്. അതായത് എപ്പിസോഡിക് മെമ്മറിയെ (episodic memory) സെമാന്റിക് മെമ്മറിയായി (semantic memory) മാറ്റുക.

ഈ പ്രക്രിയ ഇങ്ങനെയാണ് പ്രവർത്തിക്കുന്നത്:

  1. ഏജന്റ് ഒരു സംഭവം അനുഭവിക്കുന്നു (Episodic).
  2. ഏജന്റ് ഒരേ പാറ്റേൺ പലതവണ ആവർത്തിക്കുന്നത് കാണുന്നു.
  3. ഏജന്റ് ആ പാറ്റേണിനെ ഒരു സ്ഥിരമായ നിയമമായി മാറ്റുന്നു (Semantic).

ഇപ്പോൾ, പന്ത്രണ്ട് ഉദാഹരണങ്ങളിലൂടെ ചിന്തിക്കേണ്ട ആവശ്യം ഏജന്റിന് വരുന്നില്ല. അത് വെറുതെ ഒരു വസ്തുത മാത്രം പ്രയോഗിക്കുന്നു.

നിങ്ങളുടെ നിർമ്മാണം എങ്ങനെ മുൻഗണനാക്രമത്തിൽ ചെയ്യാം:

  • Working memory ഒരു ബജറ്റ് പോലെ കൈകാര്യം ചെയ്യുക. ഇതിനാണ് ഏറ്റവും കൂടുതൽ ചിലവ് വരുന്നത്. സമ്മറൈസേഷനും (summarization) എവിക്ഷനും (eviction) നേരത്തെ തന്നെ ഉപയോഗിക്കുക.
  • നിങ്ങളുടെ സ്റ്റോറുകൾ വേർതിരിക്കുക. വസ്തുതകൾ, സംഭവങ്ങൾ, നിയമങ്ങൾ എന്നിവ വ്യത്യസ്ത സ്ഥലങ്ങളിൽ സൂക്ഷിക്കുക.
  • Prospective memory-ക്കായി ഒരു ഷെഡ്യൂളർ ഉപയോഗിക്കുക. ഒരു പ്രത്യേക തീയതിയിൽ നടക്കേണ്ട കാര്യങ്ങൾക്കായി വെക്റ്റർ സ്റ്റോർ ഉപയോഗിക്കരുത്.
  • Parametric memory-ക്കായി കൃത്യമായ ഒരു അതിർവരമ്പ് നിശ്ചയിക്കുക. റീസണിംഗിനായി (reasoning) മോഡൽ ഉപയോഗിക്കുക, എന്നാൽ പലിശ നിരക്കുകൾ അല്ലെങ്കിൽ ഉൽപ്പന്ന നിയമങ്ങൾ പോലുള്ള മാറിക്കൊണ്ടിരിക്കുന്ന ഡാറ്റയ്ക്കായി നിങ്ങളുടെ സ്വന്തം സ്റ്റോറുകൾ ഉപയോഗിക്കുക.

ഇന്നത്തെ മിക്ക ഏജന്റുകളും വെറുമൊരു കോൺടെക്സ്റ്റ് വിൻഡോയും ഒരു വെക്റ്റർ ഡാറ്റാബേസും മാത്രമാണ്. ഇന്നലത്തെ തെറ്റുകളെ നാളത്തെ നിയമങ്ങളാക്കി മാറ്റാൻ കഴിയുന്ന ഏജന്റുകളാണ് വിജയിക്കുന്നത്.

Source: https://dev.to/shudiptotrafder/agent-memory-7-types-and-2-of-them-arent-memory-6oi

Optional learning community: https://t.me/GyaanSetuAi