Por qué no deberías mantener conexiones a la DB durante las llamadas a LLM
La latencia de la IA no es solo el tiempo que el modelo pasa pensando. También incluye cómo gestionas las conexiones a la base de datos.
Mantener una conexión a la DB mientras esperas a un LLM o a una API de embeddings puede agotar tu pool de conexiones. Las llamadas externas lentas mantienen las sesiones abiertas mucho más tiempo del necesario.
Investigué el repositorio de Honcho para ver su solución. Cambiaron una única sesión de larga duración por sesiones cortas y específicas para cada tarea.
Patrón antiguo
- Abrir sesión de DB
- Leer la configuración del usuario
- Llamar al LLM (lento)
- Llamar a la API de embeddings (lento)
- Guardar resultados
- Cerrar sesión de DB
Nuevo patrón
- Abrir sesión de DB para comprobaciones previas
- Cargar los valores necesarios en variables
- Cerrar sesión de DB
- Llamar a los LLM y a las APIs de embeddings (sin mantener la conexión a la DB)
- Abrir una nueva sesión de DB corta para guardar los resultados
- Cerrar sesión de DB
El objetivo no es abandonar la base de datos; es mantener la consistencia de la transacción separada de la espera de red.
Cinco pasos para gestionar tus conexiones
- Define tus límites de consistencia.
- Carga todos los valores requeridos en variables antes de cualquier llamada a una API externa.
- Cierra el alcance (scope) de la base de datos.
- Realiza las tareas externas lentas.
- Abre un nuevo alcance de escritura corto para persistir los resultados finales.
Nota: Si usas pgvector, la búsqueda se ejecuta dentro de la base de datos, por lo que debes mantener la sesión abierta durante esa operación.
Reducir la duración de la sesión mejora la escalabilidad, pero ten cuidado con los errores de objetos desvinculados (detached-object errors) en tu ORM y verifica que los datos se mantengan consistentes a través de las instantáneas (snapshots) de las transacciones.
Source: https://dev.to/junhyun-dev/neurin-llm-hocul-jung-db-connectioneul-jabji-anhneun-iyu-3abg
Comunidad de aprendizaje opcional: https://t.me/GyaanSetuAi
