LLM कॉल्स के दौरान DB कनेक्शन क्यों नहीं रखना चाहिए

AI लेटेंसी का मतलब सिर्फ वह समय नहीं है जो मॉडल सोचने में बिताता है। इसमें यह भी शामिल है कि आप डेटाबेस कनेक्शन को कैसे मैनेज करते हैं।

LLM या एम्बेडिंग API का इंतज़ार करते समय DB कनेक्शन को थामे रखने से आपका कनेक्शन पूल खाली हो सकता है। धीमी बाहरी कॉल सेशन को ज़रूरत से कहीं ज़्यादा समय तक खुला रखती हैं।

मैंने उनके समाधान को देखने के लिए Honcho रेपो की जांच की। उन्होंने एक लंबे समय तक चलने वाले सिंगल सेशन को छोटे, कार्य-विशिष्ट (task-specific) सेशन्स से बदल दिया।

पुराना पैटर्न

  • DB सेशन खोलें
  • यूजर सेटिंग्स पढ़ें
  • LLM को कॉल करें (धीमा)
  • एम्बेडिंग API को कॉल करें (धीमा)
  • परिणाम सहेजें
  • DB सेशन बंद करें

नया पैटर्न

  • प्री-फ्लाइट चेक (pre-flight checks) के लिए DB सेशन खोलें
  • आवश्यक वैल्यूज़ को वेरिएबल्स में पढ़ें
  • DB सेशन बंद करें
  • LLM और एम्बेडिंग API को कॉल करें (कोई DB कनेक्शन नहीं थामे रखा गया)
  • परिणाम सहेजने के लिए एक नया, छोटा DB सेशन खोलें
  • DB सेशन बंद करें

इसका उद्देश्य डेटाबेस को छोड़ना नहीं है; बल्कि ट्रांजेक्शन कंसिस्टेंसी को नेटवर्क वेटिंग से अलग रखना है।

अपने कनेक्शन मैनेज करने के पांच चरण

  1. अपनी कंसिस्टेंसी बाउंड्रीज़ (consistency boundaries) को परिभाषित करें।
  2. किसी भी बाहरी API कॉल से पहले सभी आवश्यक वैल्यूज़ को वेरिएबल्स में ले लें।
  3. डेटाबेस स्कोप को बंद करें।
  4. धीमी बाहरी टास्क पूरे करें।
  5. अंतिम परिणामों को सुरक्षित करने के लिए एक नया, छोटा राइट स्कोप (write scope) खोलें।

नोट: यदि आप pgvector का उपयोग करते हैं, तो सर्च डेटाबेस के अंदर चलती है, इसलिए आपको उस ऑपरेशन के दौरान सेशन को खुला रखना होगा।

सेशन के जीवनकाल को छोटा करने से स्केलिंग में सुधार होता है, लेकिन अपने 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