𝗦𝗮𝗹𝗶𝗲𝗻𝗰𝗲 𝗶𝘀 𝗡𝗼𝘁 𝗖𝗮𝗿𝗿𝘆 𝗩𝗮𝗹𝘂𝗲
സല്യൻസ് (Salience) എന്നാൽ ക്യാരി വാല്യൂ (Carry Value) അല്ല
മിക്ക ആളുകളും ഏജന്റ് മെമ്മറി (agent memory) നിർമ്മിക്കുന്നത് തെറ്റായ രീതിയിലാണ്.
അവർ സ്റ്റോറേജിലാണ് (storage) ശ്രദ്ധ കേന്ദ്രീകരിക്കുന്നത്. അവർ വെക്റ്റർ സ്റ്റോറുകളോ (vector stores) ബുദ്ധിപരമായ സമ്മറൈസറുകളോ (summarizers) ഉപയോഗിക്കുന്നു. എല്ലാം സേവ് ചെയ്താൽ ഏജന്റിന് എല്ലാം അറിയാൻ കഴിയുമെന്ന് അവർ കരുതുന്നു.
അവർ തെറ്റാണ്.
നൂറുകണക്കിന് സെഷനുകൾ (sessions) ഉള്ളപ്പോൾ, നിങ്ങൾക്ക് അവയെല്ലാം വായിക്കാൻ കഴിയില്ല. നിങ്ങളുടെ ഏജന്റ് ഒരു പുതിയ സെഷൻ തുടങ്ങുന്നത് ശൂന്യമായ അവസ്ഥയിൽ (cold start) ആണെങ്കിൽ, അത് സമയം പാഴാക്കും. അമിതമായ നോയിസ് (noise) ഉള്ള അവസ്ഥയിൽ തുടങ്ങിയാൽ അത് തെറ്റുകൾ വരുത്തും.
പ്രശ്നം സെലക്ഷനിലാണ് (selection). മിക്ക ആളുകളും സല്യൻസിനെയും (salience) ക്യാരി വാല്യൂവിനെയും (carry value) തമ്മിൽ മാറിപ്പോകുന്നു.
- സല്യൻസ് എന്നത് കഴിഞ്ഞ സെഷനിൽ എന്താണ് കൂടുതൽ ശ്രദ്ധിക്കപ്പെട്ടത് എന്ന് നിങ്ങളോട് പറയുന്നു.
- ക്യാരി വാല്യൂ എന്നത് അടുത്ത സെഷൻ പ്രവർത്തിക്കാൻ എന്താണ് ആവശ്യമെന്ന് നിങ്ങളോട് പറയുന്നു.
ഒരു വേരിയബിൾ നാമത്തെക്കുറിച്ചുള്ള (variable name) വലിയ തർക്കം ഉയർന്ന സല്യൻസ് കാണിക്കുന്നു. എന്നാൽ ആ പേര് ഭാവിയിലെ കോഡിനെ ബാധിക്കുന്നില്ലെങ്കിൽ, അതിന് ക്യാരി വാല്യൂ പൂജ്യമാണ്. നിങ്ങൾ അത് മുന്നോട്ട് കൊണ്ടുപോയാൽ, നിങ്ങൾ വെറുതെ നോയിസ് മാത്രമേ കൂട്ടുന്നുള്ളൂ.
ഈ നിയമങ്ങളെ അടിസ്ഥാനമാക്കി ഞാൻ ഒരു മെമ്മറി പൈപ്പ്ലൈൻ (memory pipeline) പ്രവർത്തിപ്പിക്കുന്നു:
Mechanical salience first. പ്രധാനപ്പെട്ട നിമിഷങ്ങൾ കണ്ടെത്താൻ ഒരു ഡെറ്റർമിനിസ്റ്റിക് സ്കോറർ (deterministic scorer) ഉപയോഗിക്കുക. സാധാരണ കമന്റുകളേക്കാൾ തിരുത്തലുകൾക്ക് (corrections) കൂടുതൽ പ്രാധാന്യം നൽകുക. ഓരോ ഹൈലൈറ്റും അതിന്റെ ഒറിജിനൽ ട്രാൻസ്ക്രിപ്റ്റുമായി (raw transcript) ബന്ധിപ്പിച്ചിരിക്കണം. ഒരു സ്രോതസ്സില്ലാതെ വസ്തുതകൾ നിർമ്മിക്കാൻ ഒരു മോഡലിനെ അനുവദിക്കരുത്.
Synthesis second. ഹൈലൈറ്റുകൾക്ക് അർത്ഥം നൽകാൻ മാത്രം ഒരു LLM ഉപയോഗിക്കുക. നിങ്ങളുടെ ഹൈലൈറ്റുകൾ മോശമാണെങ്കിൽ, സമ്മറി (summary) വെറും ആത്മവിശ്വാസത്തോടെയുള്ള അർത്ഥശൂന്യമായ കാര്യങ്ങൾ മാത്രമായിരിക്കും.
Use a retrieval-time brief. ഓരോ പ്രോജക്റ്റിനും INDEX.md പോലുള്ള ഒരു ഫയൽ നിർമ്മിക്കുക. ഒരു സെഷന്റെ തുടക്കത്തിൽ ഏജന്റ് ഈ ഫയൽ വായിക്കുന്നു. ഒരു മോഡലും ഈ ബ്രീഫ് പെട്ടെന്ന് നിർമ്മിച്ചെടുക്കാൻ പാടില്ല. ഇത് നിങ്ങൾക്ക് നേരിട്ട് തുറന്ന് എഡിറ്റ് ചെയ്യാവുന്ന ഒരു സാധാരണ ഫയൽ ആയിരിക്കണം.
മികച്ച മെമ്മറി നിർമ്മിക്കാൻ, പ്രധാനപ്പെട്ട കാര്യങ്ങളുടെ ഒരു പട്ടിക മാത്രം പോരാ. നിങ്ങൾക്ക് ഇവ ആവശ്യമാണ്:
- രണ്ട് സ്കോറുകൾ: ഒന്ന് അത് എത്രത്തോളം ശ്രദ്ധിക്കപ്പെട്ടതാണ് (salience) എന്നും മറ്റൊന്ന് അത് പിന്നീട് എത്രത്തോളം പ്രധാനമാണ് (carry value) എന്നും അറിയാൻ.
- മെമ്മറി ക്ലാസുകൾ (Memory classes): ആക്റ്റീവ് തീരുമാനങ്ങൾ (active decisions), പ്രവർത്തന നിയന്ത്രണങ്ങൾ (operating constraints), ഓപ്പൺ ലൂപ്പുകൾ (open loops) എന്നിവ വേർതിരിക്കുക.
- എക്സ്പയറി ഡേറ്റുകൾ (Expiry dates): ഓരോ മെമ്മറിയും ഇല്ലാതാകാൻ ഒരു കാരണം ഉണ്ടായിരിക്കണം. എക്സ്പയറി ഇല്ലെങ്കിൽ, കോൺടെക്സ്റ്റ് (context) നിങ്ങളുടെ സിസ്റ്റത്തെ തടസ്സപ്പെടുത്തും.
- ട്രിഗറുകൾ (Triggers): ഒരു മെമ്മറി എപ്പോൾ പ്രത്യക്ഷപ്പെടണം എന്ന് കൃത്യമായി നിർവചിക്കുക.
ലക്ഷ്യം റിക്കവറി കോസ്റ്റ് (recovery cost) കുറയ്ക്കുക എന്നതാണ്.
ഒരു ഏജന്റ് നിർത്തിയ ഇടത്തുനിന്ന് വീണ്ടും തുടങ്ങാൻ എത്ര ടോക്കണുകളോ (tokens) മിനിറ്റുകളോ എടുക്കുന്നു എന്നതാണ് റിക്കവറി കോസ്റ്റ്. നിങ്ങളുടെ മെമ്മറി പൈപ്പ്ലൈൻ വെറും പ്രഹസനം മാത്രമാണെങ്കിൽ, നിങ്ങളുടെ റിക്കവറി കോസ്റ്റ് ഉയർന്നതായി തന്നെ തുടരും.
വലിയ സ്റ്റോറേജുകൾ നിർമ്മിക്കുന്നത് നിർത്തുക. മികച്ച സെലക്ഷൻ നിർമ്മിക്കാൻ തുടങ്ങുക.
Source: https://dev.to/jugeni/salience-is-not-carry-value-notes-from-a-running-session-memory-pipeline-4dda
Optional learning community: https://t.me/GyaanSetuAi
