SQL + LLMs: TAG
TAG (Table-Augmented Generation) es una forma de ampliar el contexto y capacidades de los modelos de lenguaje (LLMs), para permitir que proporcionen respuestas más útiles.
¿Qué es?
A pesar de la similitud del nombre con RAG (Retrieval-Augmented Generation), TAG se basa en un concepto distinto: La interacción entre el LLM y una base de datos relacional, para dotar al modelo de lenguaje de la capacidad de obtener datos estructurados en tiempo real, lo que le permite proporcionar respuestas fundamentadas y actualizadas al momento.
La implementación práctica de esto consiste en la ejecución de consultas SQL generadas por el modelo en la base de datos. Después, el modelo decide si debe realizar más consultas, usando incrementalmente los datos obtenidos, y finalmente generando una respuesta al usuario.
Funcionamiento
Existen 2 requisitos básicos para implementar un sistema TAG:
-
Contexto del modelo de datos: Para que la interacción entre la base de datos y el LLM tenga sentido, este último debe conocer la estructura de los datos que va a consultar. La forma de proporcionar este contexto inicial depende del propio formato del prompt, y lo revisaremos más adelante.
-
Herramienta de consulta: Aunque se podría implementar un sistema carente de un LLM capaz de realizar tool calls, simplifica enormemente la implementación, si el modelo es capaz de enviar consultas directamente mediante esta tool.
El proceso en sí de interacción es simple:
- Generación de consulta: El LLM genera una consulta SQL basada en el modelo de datos dado.
- Consulta y obtención de datos: La base de datos procesa la consulta y devuelve los datos. Lógica intermedia en la tool de consulta puede dar un formato específico a los resultados.
- Bucle Consulta-Tabla: El LLM puede realizar múltiples consultas, usando datos obtenidos en cada ciclo, para la siguiente consulta.
- Generación de respuesta: Una vez obtenidos los datos necesarios, el modelo genera una respuesta al usuario. Dependiendo de la precisión del modelo, pueden haber divergencias con los datos reales en la generación.
Desafíos
Como todo sistema basado en IA generativa, existen riesgos potenciales en la propia generación de respuestas e interacción del modelo.
-
Jailbreak: Sin una verificación adecuada de las consultas SQL generadas por el modelo, un atacante podría conseguir engañar al LLM para que generara SQL dañino, como un
DROP DATABASE ..., o el infameDELETE FROM ...sin ninguna cláusulaWHERE. -
Bucles infinitos: Es posible con un LLM, si carece de la "inteligencia" necesaria para procesar la petición del usuario, quedar atrapado en un bucle continuo en el que realiza consultas SQL mal formadas, resultando en un error, y así indefinidamente o hasta que la probabilidad interna del modelo decida dar una respuesta y no volver a realizar una tool call.
-
Falta de contexto: Un modelo de datos muy complejo requiere de una gran cantidad de contexto, y por ende modelos compactos pueden tener complicaciones para generar consultas adecuadas, si no se complementan con ejemplos y otros métodos avanzados para mejorar las estadísticas.
Conclusión
Aunque pueda parecer menos destacable que RAG o la navegación por internet, TAG es un elemento clave en la integración de IA generativa con software tradicional, ya que la mayor parte de aplicaciones y servicios funcionan sobre una base de datos relacional, como PostgreSQL, SQL Server, SQLite o Oracle Database. Desde ERPs a plataformas como Instagram, el uso de TAG permite rápidamente obtener y transformar los datos sin necesidad de conocer el lenguaje SQL y desarrollar queries complejas.