Por que você não deve manter conexões de banco de dados durante chamadas de LLM

A latência de IA não é apenas o tempo que o modelo passa pensando. Ela também inclui como você gerencia as conexões com o banco de dados.

Manter uma conexão de banco de dados enquanto espera por um LLM ou uma API de embedding pode esgotar seu pool de conexões. Chamadas externas lentas mantêm as sessões abertas por muito mais tempo do que o necessário.

Eu analisei o repositório do Honcho para ver a correção deles. Eles substituíram uma única sessão de longa duração por sessões curtas e específicas para cada tarefa.

Padrão Antigo

  • Abrir sessão de banco de dados
  • Ler configurações do usuário
  • Chamar LLM (lento)
  • Chamar API de Embedding (lento)
  • Salvar resultados
  • Fechar sessão de banco de dados

Novo Padrão

  • Abrir sessão de banco de dados para verificações prévias
  • Ler os valores necessários para variáveis
  • Fechar sessão de banco de dados
  • Chamar LLMs e APIs de Embedding (sem manter conexão de banco de dados)
  • Abrir uma nova sessão de banco de dados curta para salvar os resultados
  • Fechar sessão de banco de dados

O objetivo não é abandonar o banco de dados; é manter a consistência da transação separada da espera de rede.

Cinco passos para gerenciar suas conexões

  1. Defina seus limites de consistência.
  2. Extraia todos os valores necessários para variáveis antes de qualquer chamada de API externa.
  3. Feche o escopo do banco de dados.
  4. Execute as tarefas externas lentas.
  5. Abra um novo escopo de escrita curto para persistir os resultados finais.

Nota: Se você usa pgvector, a busca é executada dentro do banco de dados, portanto, você deve manter a sessão aberta durante essa operação.

Encurtar a vida útil da sessão melhora a escalabilidade, mas fique atento a erros de objetos desconectados (detached-object) em seu ORM e verifique se os dados permanecem consistentes entre os snapshots de transação.

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

Comunidade de aprendizado opcional: https://t.me/GyaanSetuAi