چرا نباید در طول فراخوانی‌های LLM، اتصالات پایگاه داده را باز نگه دارید

تأخیر هوش مصنوعی (AI latency) فقط زمانی نیست که مدل صرف فکر کردن می‌کند؛ بلکه شامل نحوه مدیریت اتصالات پایگاه داده نیز می‌شود.

باز نگه داشتن یک اتصال پایگاه داده در حین انتظار برای یک LLM یا یک API جاسازی (embedding)، می‌تواند مخزن اتصال (connection pool) شما را تخلیه کند. فراخوانی‌های خارجیِ کند، نشست‌ها (sessions) را بسیار طولانی‌تر از آنچه نیاز است، باز نگه می‌دارند.

من مخزن Honcho را بررسی کردم تا راه حل آن‌ها را ببینم. آن‌ها یک نشست واحد و طولانی‌مدت را با نشست‌های کوتاه و مختص به هر وظیفه جایگزین کردند.

الگوی قدیمی

  • باز کردن نشست پایگاه داده
  • خواندن تنظیمات کاربر
  • فراخوانی LLM (کند)
  • فراخوانی API جاسازی (کند)
  • ذخیره نتایج
  • بستن نشست پایگاه داده

الگوی جدید

  • باز کردن نشست پایگاه داده برای بررسی‌های اولیه (pre-flight checks)
  • خواندن مقادیر مورد نیاز در متغیرها
  • بستن نشست پایگاه داده
  • فراخوانی LLM و APIهای جاسازی (بدون نگه داشتن اتصال پایگاه داده)
  • باز کردن یک نشست پایگاه داده جدید و کوتاه برای ذخیره نتایج
  • بستن نشست پایگاه داده

هدف رها کردن پایگاه داده نیست؛ بلکه جدا نگه داشتن ثبات تراکنش (transaction consistency) از انتظار شبکه است.

پنج مرحله برای مدیریت اتصالات شما

  1. مرزهای ثبات خود را تعریف کنید.
  2. قبل از هرگونه فراخوانی API خارجی، تمام مقادیر مورد نیاز را در متغیرها قرار دهید.
  3. محدوده (scope) پایگاه داده را ببندید.
  4. وظایف خارجیِ کند را انجام دهید.
  5. یک محدوده نوشتنِ جدید و کوتاه برای ذخیره نتایج نهایی باز کنید.

نکته: اگر از pgvector استفاده می‌کنید، جستجو درون پایگاه داده اجرا می‌شود، بنابراین باید نشست را در طول آن عملیات باز نگه دارید.

کوتاه کردن طول عمر نشست، مقیاس‌پذیری را بهبود می‌بخشد، اما مراقب خطاهای شیء جدا شده (detached-object errors) در ORM خود باشید و تأیید کنید که داده‌ها در طول اسنپ‌شات‌های تراکنش، سازگار باقی می‌مانند.

منبع: https://dev.to/junhyun-dev/neurin-llm-hocul-jung-db-connectioneul-jabji-anhneun-iyu-3abg

انجمن یادگیری اختیاری: https://t.me/GyaanSetuAi