LLM കോളുകൾ നടത്തുമ്പോൾ എന്തുകൊണ്ട് ഡാറ്റാബേസ് (DB) കണക്ഷനുകൾ പിടിച്ചുവെക്കരുത്
AI ലേറ്റൻസി (latency) എന്നത് മോഡൽ ചിന്തിക്കാൻ എടുക്കുന്ന സമയം മാത്രമല്ല. ഡാറ്റാബേസ് കണക്ഷനുകൾ നിങ്ങൾ എങ്ങനെ കൈകാര്യം ചെയ്യുന്നു എന്നതും ഇതിൽ ഉൾപ്പെടുന്നു.
ഒരു LLM അല്ലെങ്കിൽ എംബെഡിംഗ് (embedding) API-നായി കാത്തുനിൽക്കുമ്പോൾ ഒരു DB കണക്ഷൻ പിടിച്ചുവെക്കുന്നത് നിങ്ങളുടെ കണക്ഷൻ പൂൾ (connection pool) തീർന്നുപോകാൻ കാരണമായേക്കാം. സാവധാനത്തിലുള്ള എക്സ്റ്റേണൽ കോളുകൾ സെഷനുകൾ ആവശ്യമില്ലാത്തവിധം കൂടുതൽ സമയം തുറന്നുനിർത്തുന്നു.
അവരുടെ പരിഹാരം എന്താണെന്ന് അറിയാൻ ഞാൻ Honcho റെപ്പോസിറ്ററി പരിശോധിച്ചു. അവർ ഒരു നീണ്ട സെഷന് പകരം ചെറിയ, ഓരോ ടാസ്കിനും അനുയോജ്യമായ സെഷനുകൾ ഉപയോഗിക്കാൻ മാറി.
പഴയ രീതി (Old Pattern)
- DB സെഷൻ തുറക്കുക
- യൂസർ സെറ്റിംഗ്സ് വായിക്കുക
- LLM വിളിക്കുക (സാവധാനത്തിൽ)
- എംബെഡിംഗ് API വിളിക്കുക (സാവധാനത്തിൽ)
- ഫലങ്ങൾ സേവ് ചെയ്യുക
- DB സെഷൻ അടയ്ക്കുക
പുതിയ രീതി (New Pattern)
- പ്രാരംഭ പരിശോധനകൾക്കായി (pre-flight checks) DB സെഷൻ തുറക്കുക
- ആവശ്യമായ മൂല്യങ്ങൾ വേരിയബിളുകളിലേക്ക് മാറ്റുക
- DB സെഷൻ അടയ്ക്കുക
- LLM, എംബെഡിംഗ് API എന്നിവ വിളിക്കുക (DB കണക്ഷൻ പിടിച്ചുവെക്കുന്നില്ല)
- ഫലങ്ങൾ സേവ് ചെയ്യാൻ പുതിയൊരു ചെറിയ DB സെഷൻ തുറക്കുക
- DB സെഷൻ അടയ്ക്കുക
ഡാറ്റാബേസ് ഉപേക്ഷിക്കുക എന്നതല്ല ഇതിന്റെ ലക്ഷ്യം; മറിച്ച് നെറ്റ്വർക്ക് കാത്തിരിപ്പിൽ നിന്നും ട്രാൻസാക്ഷൻ കൺസിസ്റ്റൻസി (transaction consistency) വേർതിരിച്ചു നിർത്തുക എന്നതാണ്.
കണക്ഷനുകൾ കൈകാര്യം ചെയ്യാനുള്ള അഞ്ച് ഘട്ടങ്ങൾ
- നിങ്ങളുടെ കൺസിസ്റ്റൻസി പരിധികൾ (consistency boundaries) നിർവചിക്കുക.
- ഏതൊരു എക്സ്റ്റേണൽ API കോളിനും മുമ്പ് ആവശ്യമായ എല്ലാ മൂല്യങ്ങളും വേരിയബിളുകളിലേക്ക് മാറ്റുക.
- ഡാറ്റാബേസ് സ്കോപ്പ് (database scope) അടയ്ക്കുക.
- സാവധാനത്തിലുള്ള എക്സ്റ്റേണൽ ജോലികൾ ചെയ്യുക.
- ഫൈനൽ റിസൾട്ടുകൾ സേവ് ചെയ്യാൻ പുതിയൊരു ചെറിയ റൈറ്റ് സ്കോപ്പ് (write scope) തുറക്കുക.
ശ്രദ്ധിക്കുക: നിങ്ങൾ pgvector ഉപയോഗിക്കുന്നുണ്ടെങ്കിൽ, സെർച്ച് ഡാറ്റാബേസിനുള്ളിൽ തന്നെ നടക്കുന്നു, അതിനാൽ ആ ഓപ്പറേഷൻ നടക്കുമ്പോൾ സെഷൻ തുറന്നുതന്നെ വെക്കണം.
സെഷൻ കാലാവധി കുറയ്ക്കുന്നത് സ്കെയിലിംഗ് (scaling) മെച്ചപ്പെടുത്തും, എന്നാൽ നിങ്ങളുടെ ORM-ൽ detached-object എററുകൾ ഉണ്ടാകുന്നുണ്ടോ എന്ന് ശ്രദ്ധിക്കുകയും ട്രാൻസാക്ഷൻ സ്നാപ്ഷോട്ടുകളിൽ ഡാറ്റ കൺസിസ്റ്റന്റ് ആണെന്ന് ഉറപ്പുവരുത്തുകയും ചെയ്യുക.
Source: https://dev.to/junhyun-dev/neurin-llm-hocul-jung-db-connectioneul-jabji-anhneun-iyu-3abg
Optional learning community: https://t.me/GyaanSetuAi
