Perché non dovresti mantenere aperte le connessioni al DB durante le chiamate LLM

La latenza dell'IA non è solo il tempo che il modello impiega per pensare. Include anche il modo in cui gestisci le connessioni al database.

Mantenere una connessione al DB mentre si attende un LLM o un'API di embedding può esaurire il pool di connessioni. Le chiamate esterne lente mantengono le sessioni aperte molto più a lungo del necessario.

Ho analizzato il repository di Honcho per vedere la loro soluzione. Hanno sostituito un'unica sessione a lunga durata con sessioni brevi e specifiche per ogni task.

Vecchio Pattern

  • Apri sessione DB
  • Leggi le impostazioni dell'utente
  • Chiama LLM (lento)
  • Chiama API di embedding (lento)
  • Salva i risultati
  • Chiudi sessione DB

Nuovo Pattern

  • Apri sessione DB per i controlli preliminari
  • Leggi i valori necessari in variabili
  • Chiudi sessione DB
  • Chiama LLM e API di embedding (nessuna connessione DB mantenuta)
  • Apri una nuova sessione DB breve per salvare i risultati
  • Chiudi sessione DB

L'obiettivo non è abbandonare il database; è mantenere la coerenza delle transazioni separata dall'attesa di rete.

Cinque passaggi per gestire le tue connessioni

  1. Definisci i confini della coerenza.
  2. Carica tutti i valori richiesti in variabili prima di qualsiasi chiamata API esterna.
  3. Chiudi lo scope del database.
  4. Esegui i task esterni lenti.
  5. Apri un nuovo scope di scrittura breve per persistere i risultati finali.

Nota: Se utilizzi pgvector, la ricerca viene eseguita all'interno del database, quindi devi mantenere la sessione aperta durante quell'operazione.

Accorciare la durata della sessione migliora la scalabilità, ma presta attenzione agli errori di "detached-object" nel tuo ORM e verifica che i dati rimangano coerenti tra gli snapshot delle transazioni.

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

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