LLM కాల్స్ సమయంలో మీరు ఎందుకు DB కనెక్షన్‌లను పట్టుకోకూడదు

AI లాటెన్సీ (latency) అంటే మోడల్ ఆలోచించడానికి తీసుకునే సమయం మాత్రమే కాదు. మీరు డేటాబేస్ కనెక్షన్‌లను ఎలా నిర్వహిస్తారు అనే అంశం కూడా ఇందులో ఉంటుంది.

LLM లేదా ఎంబెడ్డింగ్ API కోసం వేచి ఉన్నప్పుడు DB కనెక్షన్‌ను పట్టుకోవడం వల్ల మీ కనెక్షన్ పూల్ (connection pool) ఖాళీ అయిపోవచ్చు. నెమ్మదైన ఎక్స్‌టర్నల్ కాల్స్ వల్ల సెషన్లు అవసరమైన దానికంటే ఎక్కువ సమయం తెరిచి ఉంటాయి.

వారి పరిష్కారాన్ని చూడటానికి నేను Honcho రిపోజిటరీని పరిశీలించాను. వారు ఒకే ఒక లాంగ్-లివ్డ్ (long-lived) సెషన్‌కు బదులుగా, చిన్నవి మరియు టాస్క్-స్పెసిఫిక్ (task-specific) సెషన్‌లను ఉపయోగించారు.

పాత పద్ధతి

  • DB సెషన్‌ను ఓపెన్ చేయడం
  • యూజర్ సెట్టింగ్‌లను చదవడం
  • LLMని కాల్ చేయడం (నెమ్మదిగా ఉంటుంది)
  • Embedding APIని కాల్ చేయడం (నెమ్మదిగా ఉంటుంది)
  • ఫలితాలను సేవ్ చేయడం
  • DB సెషన్‌ను క్లోజ్ చేయడం

కొత్త పద్ధతి

  • ప్రీ-ఫ్లైట్ చెక్‌ల కోసం DB సెషన్‌ను ఓపెన్ చేయడం
  • అవసరమైన విలువలను వేరియబుల్స్‌లోకి చదవడం
  • DB సెషన్‌ను క్లోజ్ చేయడం
  • LLM మరియు Embedding APIలను కాల్ చేయడం (DB కనెక్షన్ పట్టుకోకుండా)
  • ఫలితాలను సేవ్ చేయడానికి కొత్త, చిన్న DB సెషన్‌ను ఓపెన్ చేయడం
  • DB సెషన్‌ను క్లోజ్ చేయడం

దీని ఉద్దేశ్యం డేటాబేస్‌ను వదిలేయడం కాదు; నెట్‌వర్క్ వేచి ఉండే సమయం నుండి ట్రాన్సాక్షన్ కన్సిస్టెన్సీని (transaction consistency) వేరుగా ఉంచడం.

మీ కనెక్షన్‌లను నిర్వహించడానికి ఐదు దశలు

  1. మీ కన్సిస్టెన్సీ బౌండరీలను (consistency boundaries) నిర్వచించండి.
  2. ఏదైనా ఎక్స్‌టర్నల్ API కాల్ చేసే ముందు అవసరమైన అన్ని విలువలను వేరియబుల్స్‌లోకి తీసుకోండి.
  3. డేటాబేస్ స్కోప్‌ను క్లోజ్ చేయండి.
  4. నెమ్మదైన ఎక్స్‌టర్నల్ టాస్క్‌లను పూర్తి చేయండి.
  5. తుది ఫలితాలను సేవ్ చేయడానికి కొత్త, చిన్న రైట్ స్కోప్‌ను (write scope) ఓపెన్ చేయండి.

గమనిక: మీరు pgvector ఉపయోగిస్తుంటే, సెర్చ్ డేటాబేస్ లోపలే జరుగుతుంది, కాబట్టి ఆ ఆపరేషన్ సమయంలో మీరు సెషన్‌ను ఓపెన్ చేసి ఉంచాలి.

సెషన్ సమయాన్ని తగ్గించడం వల్ల స్కేలింగ్ (scaling) మెరుగుపడుతుంది, కానీ మీ ORMలో detached-object ఎర్రర్స్ పట్ల జాగ్రత్తగా ఉండండి మరియు ట్రాన్సాక్షన్ స్నాప్‌షాట్‌ల (transaction snapshots) అంతటా డేటా కన్సిస్టెంట్‌గా ఉండేలా చూసుకోండి.

Source: https://dev.to/junhyun-dev/neurin-llm-hocul-jung-db-connectioneul-jabji-anhneun-iyu-3abg

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