𝟰𝟮/𝟲𝟬 ദിവസത്തെ സിസ്റ്റം ഡിസൈൻ ചോദ്യങ്ങൾ
നിങ്ങളുടെ AI ഏജന്റിന് ഒരു ഉപയോക്താവിന്റെ പേര് ഓർമ്മയുണ്ട്.
ഒരു ഉപയോക്താവ് NYC-ലേക്ക് കുറഞ്ഞ നിരക്കിലുള്ള ഒരു ഫ്ലൈറ്റ് ബുക്ക് ചെയ്യാൻ ഏജന്റിനോട് ആവശ്യപ്പെടുന്നു. ഒരു രാത്രിക്ക് $150-ൽ താഴെ നിരക്കുള്ള ഹോട്ടലുകൾ വേണമെന്നും, യാത്രയുടെ ആകെ ചിലവ് താരതമ്യം ചെയ്യണമെന്നും അവർ ആവശ്യപ്പെടുന്നു.
മൂന്നാം ഘട്ടമെത്തുമ്പോഴേക്കും, ഏജന്റ് 8,000 ടോക്കണുകൾ അടങ്ങുന്ന ഹിസ്റ്ററി LLM-ലേക്ക് അയക്കുന്നു. ചാറ്റിന്റെ ആദ്യ ഘട്ടമാണെന്ന രീതിയിൽ അത് മറുപടി നൽകുന്നു.
ഇത് പുറത്തിറക്കുന്നതിന് മുമ്പ് നിങ്ങൾക്ക് ഒരു മെമ്മറി ആർക്കിടെക്ചർ (memory architecture) ആവശ്യമാണ്.
ഇതിൽ ഒന്ന് തിരഞ്ഞെടുക്കുക:
In-context window: പ്രോംപ്റ്റിൽ മുഴുവൻ ഹിസ്റ്ററിയും സൂക്ഷിക്കുക. ഇത് ലളിതമാണ്. എന്നാൽ 15 ടേണുകൾക്ക് ശേഷമോ അല്ലെങ്കിൽ 8,000 ടോക്കണുകൾക്ക് ശേഷമോ ഇത് പരാജയപ്പെടുന്നു.
Vector memory store: മുൻപത്തെ ടേണുകൾ എംബെഡ് (Embed) ചെയ്യുക. സാമ്യതയുടെ അടിസ്ഥാനത്തിൽ ഏറ്റവും അനുയോജ്യമായവ കണ്ടെത്തുക. എന്നാൽ "NYC flight" എന്ന് തിരയുമ്പോൾ നിലവിലെ ടാസ്കിന് പകരം പഴയൊരു യാത്രയുടെ മെമ്മറി വരുന്നത് ഇതിന്റെ പോരായ്മയാണ്.
Episodic memory with summarization: പഴയ ടേണുകളെ ഘടനാപരമായ സംഗ്രഹങ്ങളായി (structured summaries) ചുരുക്കുക. ഓരോ റിക്വസ്റ്റിലും പ്രസക്തമായ സംഗ്രഹങ്ങൾ ഉൾപ്പെടുത്തുക. ഇത് നിർമ്മിക്കാൻ പ്രയാസമാണ്, എന്നാൽ തെറ്റായ വിവരങ്ങൾ വരാനുള്ള സാധ്യത കുറവാണ്.
Redis session state: ഒരു സ്ട്രക്ചേർഡ് കീ-വാല്യൂ സ്റ്റോർ (key-value store) ഉപയോഗിക്കുക. ഏജന്റ് കാര്യങ്ങൾ വ്യക്തമായി വായിക്കുകയും എഴുതുകയും ചെയ്യുന്നു. ഇത് ഡെറ്റർമിനിസ്റ്റിക് (deterministic) ആണ്. എന്നാൽ എന്ത്, എപ്പോൾ സ്റ്റോർ ചെയ്യണം എന്ന് ഏജന്റിന് കൃത്യമായി അറിയണം.
ഒരു ഓപ്ഷൻ 15 ടേണുകൾക്ക് ശേഷം പരാജയപ്പെടുന്നു. മറ്റൊന്ന് തെറ്റായ സമയത്ത് തെറ്റായ കോൺടെക്സ്റ്റ് നൽകുന്നു. ടാസ്ക്-ഓറിയന്റഡ് ഏജന്റുകൾക്ക് ഏറ്റവും അനുയോജ്യമായത് മറ്റൊന്നാണ്.
A, B, C, അല്ലെങ്കിൽ D തിരഞ്ഞെടുക്കുക. പ്രൊഡക്ഷനിൽ നിങ്ങൾ ഇത് നേരിട്ടിട്ടുണ്ടെങ്കിൽ എന്നോട് പറയുക.
ഇതിന്റെ പൂർണ്ണമായ വിവരങ്ങൾ ഞാൻ കമന്റുകളിൽ പങ്കുവെക്കാം.
Source: https://dev.to/thejoud1997/4260-days-system-design-questions-4018
Optional learning community: https://t.me/GyaanSetuAi