MAC-SQL: Text-to-SQL colaborativo multi-agente
MAC-SQL llegó en diciembre de 2023 como la respuesta más explícitamente centrada en agentes para el problema de text-to-SQL: en lugar de un solo prompt generando una única consulta, tres agentes especializados colaboran para seleccionar un subesquema relevante, descomponer la pregunta y reparar el SQL después de la ejecución. Lo analizo porque las dos entradas anteriores cubrieron BIRD (el benchmark que MAC-SQL lideró al momento de su presentación) y DIN-SQL (la base de descomposición que MAC-SQL extiende), y la pregunta natural es si una capa multi-agente aporta algo concreto sobre esos fundamentos.
El artículo
"MAC-SQL: A Multi-Agent Collaborative Framework for Text-to-SQL" (Wang et al., COLING 2025) se enfoca en un modo de falla que BIRD expuso en métodos anteriores de un solo prompt: las bases de datos grandes con esquemas ruidosos y preguntas complejas de varios pasos abruman a los modelos que intentan razonar sobre todo de una sola vez.
La arquitectura tiene tres agentes. Un Selector reduce una base de datos grande a un subesquema relevante mediante el filtrado de tablas y columnas irrelevantes antes de que comience cualquier generación de SQL. Un Decomposer es el motor central: divide preguntas complejas en lenguaje natural en subproblemas y genera SQL de forma incremental con razonamiento de cadena de pensamiento (chain-of-thought) de pocos ejemplos (few-shot). Un Refiner ejecuta el SQL candidato contra la base de datos real, lee cualquier mensaje de error textualmente y corrige iterativamente la consulta hasta un límite máximo de reintentos. No los tres agentes se activan en cada consulta; las tareas más simples omiten el Selector o el Refiner basándose en señales de complejidad.
Los autores también ajustan SQL-Llama (Code Llama 7B) con los resultados producidos por el framework, proporcionando una variante de código abierto más pequeña.
Ideas clave
- Reducción de esquema antes de la generación: El Selector filtra la base de datos a un subesquema relevante antes de que el Decomposer escriba el SQL. La ablación confirma +2,11 puntos porcentuales en BIRD dev — real, pero modesto.
- Refinamiento guiado por la ejecución: El Refiner lee los mensajes de error reales de la base de datos y corrige el SQL. Este es el mayor contribuyente individual en la ablación: eliminarlo reduce la precisión de BIRD dev en 4,63 puntos, más que eliminar el Selector (−2,11) o incluso el Decomposer (−3,85).
- Envío condicional de agentes: Enrutar consultas más simples sin pasar por el Selector y el Refiner ahorra tokens sin perjudicar la precisión en casos fáciles.
- Brecha de destilación de código abierto: SQL-Llama (7B) alcanza el 43,94% en BIRD dev frente a la base del 46,35% de GPT-4. La brecha no es dramática dada la diferencia en el recuento de parámetros, pero el modelo 7B ajustado todavía está a más de 15 puntos del puntaje de prueba completo de 59,59% de GPT-4+MAC-SQL.
- Resultado de la prueba BIRD: 59,59% de precisión de ejecución, encabezando la tabla de clasificación en el momento de la presentación y superando a DAIL-SQL+GPT-4 (57,41%) por 2,18 puntos.
Qué se mantiene — y qué no
El Refiner es la mejor idea aquí, y la ablación lo demuestra. Un agente que lee un mensaje de error real de una base de datos y corrige su propio SQL está haciendo algo genuinamente más fundamentado que un LLM cuestionándose a sí mismo en el vacío — este es el principio de "crítica interactiva con herramientas" (CRITIC) aplicado directa y concretamente a la retroalimentación de la ejecución de SQL.
La contribución del Selector es positiva pero escasa. Para bases de datos con cientos de tablas probablemente importe más; para el esquema típico de BIRD es marginal, y el artículo no informa con qué frecuencia se activa el Selector o su precisión al mantener las columnas relevantes — es una caja negra con un solo número agregado.
El Decomposer es incremental respecto a DIN-SQL. DIN-SQL ya descomponía las consultas en subproblemas con autocorrección; MAC-SQL lo reempaqueta como una conversación multi-agente. La división arquitectónica en tres agentes con nombre es más una elección de diseño de software que un nuevo algoritmo de inferencia. Nunca se probó si la estructura de prompt de tres agentes supera a un solo agente con un prompt más largo, controlando el total de tokens. Las limitaciones reconocidas — prompts "no extensamente diseñados" y un ajuste fino limitado a 7B — son reales, pero la omisión más sustancial es que la ablación sobre la longitud del prompt frente a la arquitectura está totalmente ausente.
El contexto temporal es importante para la calibración. El 59,59% de MAC-SQL en la prueba BIRD era el estado del arte en diciembre de 2023. A mediados de 2025, la tabla de clasificación de BIRD muestra sistemas superando el 81%. Las ideas específicas — filtrado de subesquemas, descomposición de preguntas, reintento de ejecución — han sido absorbidas y extendidas por trabajos posteriores que utilizan entrenamiento centrado en el razonamiento, RLVR y un CoT más rico. MAC-SQL como artefacto parece anticuado; MAC-SQL como patrón arquitectónico sigue vigente.
Por qué esto importa para la IA financiera
Beancount utiliza beanquery — un lenguaje de consulta similar a SQL — como su interfaz programática principal sobre los datos del libro mayor. Un archivo de beancount real de varios años tiene un esquema que incluye docenas de cuentas organizadas en una jerarquía, múltiples divisas, etiquetas de metadatos y columnas de saldo calculadas. Ese es precisamente el problema de esquema grande y ruidoso al que se dirige el Selector.
El Decomposer se aplica directamente al tipo de consultas que los usuarios realmente hacen: "¿Cuál fue mi gasto total en cenas en EUR en el tercer trimestre de 2024, excluyendo las transacciones reembolsadas, desglosado por mes?" es un problema de descomposición — filtrar por prefijo de cuenta, filtrar por rango de fechas, excluir transacciones marcadas, agregar por mes. El Refiner también se traduce naturalmente: antes de confirmar una entrada generada en beancount, un agente podría realizar una ejecución de prueba a través del parser de beancount, recibir errores de sintaxis o de saldo y revisarla. El bucle de retroalimentación de ejecución que demuestra MAC-SQL es el mismo bucle que necesita una capa de seguridad de escritura.
El resultado de la destilación de código abierto es una advertencia: ajustar un modelo de 7B para aproximarse a un pipeline basado en GPT-4 produce un modelo que todavía está muy por detrás. Si Bean Labs construye un modelo local para la generación de consultas del libro mayor, la brecha de MAC-SQL sugiere que los modelos pequeños necesitan datos de entrenamiento específicos del dominio que van mucho más allá de lo que proporciona un ajuste fino de propósito general.
Qué leer a continuación
- DAIL-SQL (Gao et al., 2023, arXiv:2308.15363) — la evaluación sistemática del benchmark de ingeniería de prompts que MAC-SQL mejora directamente en BIRD, vale la pena leerlo por la ablación controlada de la representación del esquema y la selección de ejemplos de pocos pasos.
- SQLFixAgent (arXiv:2406.13408) — extiende la corrección de SQL guiada por la ejecución a un sistema multi-agente con verificación de consistencia, un descendiente directo de la idea del Refiner de MAC-SQL.
- BIRD-Critic / SWE-SQL (2025) — la nueva pista de razonamiento de BIRD que requiere la comprensión de errores de ejecución, la evolución natural de lo que el Refiner estaba haciendo en MAC-SQL.
