آپ کو LLM کالز کے دوران DB کنکشنز کیوں نہیں روک کر رکھنے چاہئیں

AI لیٹنسی (latency) کا مطلب صرف وہ وقت نہیں ہے جو ماڈل سوچنے میں صرف کرتا ہے۔ اس میں یہ بھی شامل ہے کہ آپ ڈیٹا بیس کنکشنز کو کیسے مینیج کرتے ہیں۔

LLM یا ایمبیڈنگ (embedding) API کا انتظار کرتے وقت DB کنکشن کو برقرار رکھنا آپ کے کنکشن پول (connection pool) کو ختم کر سکتا ہے۔ سست بیرونی کالز سیشنز کو ضرورت سے کہیں زیادہ دیر تک کھلا رکھتی ہیں۔

میں نے ان کے حل کو دیکھنے کے لیے Honcho ریپوزٹری کا جائزہ لیا۔ انہوں نے ایک طویل مدتی سیشن کے بجائے مختصر اور کام کے لحاظ سے مخصوص سیشنز کا استعمال شروع کر دیا۔

پرانا طریقہ

  • DB سیشن کھولیں
  • صارف کی سیٹنگز پڑھیں
  • LLM کو کال کریں (سست)
  • ایمبیڈنگ API کو کال کریں (سست)
  • نتائج محفوظ کریں
  • DB سیشن بند کریں

نیا طریقہ

  • پری فلائٹ چیکس کے لیے DB سیشن کھولیں
  • مطلوبہ ویلیوز کو ویری ایبلز میں محفوظ کریں
  • DB سیشن بند کریں
  • LLM اور ایمبیڈنگ APIs کو کال کریں (کوئی DB کنکشن برقرار نہیں رکھا گیا)
  • نتائج محفوظ کرنے کے لیے ایک نیا، مختصر DB سیشن کھولیں
  • DB سیشن بند کریں

مقصد ڈیٹا بیس کو چھوڑنا نہیں ہے؛ بلکہ ٹرانزیکشن کنسسٹنسی (transaction consistency) کو نیٹ ورک کے انتظار سے الگ رکھنا ہے۔

اپنے کنکشنز کو مینیج کرنے کے پانچ اقدامات

  1. اپنی کنسسٹنسی کی حدود (consistency boundaries) متعین کریں۔
  2. کسی بھی بیرونی API کال سے پہلے تمام مطلوبہ ویلیوز کو ویری ایبلز میں لے آئیں۔
  3. ڈیٹا بیس اسکوپ (database scope) کو بند کریں۔
  4. سست بیرونی کام انجام دیں۔
  5. حتمی نتائج کو مستقل طور پر محفوظ کرنے کے لیے ایک نیا، مختصر رائٹ اسکوپ (write scope) کھولیں۔

نوٹ: اگر آپ pgvector استعمال کرتے ہیں، تو سرچ ڈیٹا بیس کے اندر چلتی ہے، اس لیے آپ کو اس آپریشن کے دوران سیشن کو کھلا رکھنا ہوگا۔

سیشن کی مدت کو کم کرنے سے اسکیلنگ (scaling) میں بہتری آتی ہے، لیکن اپنے ORM میں detached-object کی غلطیوں پر نظر رکھیں اور اس بات کی تصدیق کریں کہ ڈیٹا ٹرانزیکشن اسنیپ شاٹس (transaction snapshots) کے دوران مستقل رہے۔

ماخذ: https://dev.to/junhyun-dev/neurin-llm-hocul-jung-db-connectioneul-jabji-anhneun-iyu-3abg

اختیاری لرننگ کمیونٹی: https://t.me/GyaanSetuAi