¿Qué necesita saber la IA de tu base de datos para acertar con el SQL?
· Toni Martir, arquitecto de software
Alguien pide al asistente de IA el informe de ventas de octubre por cliente. La IA escribe la sentencia SQL (la orden técnica que saca los datos de la base de datos), el informe sale sin un solo error y el total no cuadra con el de contabilidad: la sentencia ha sumado los importes con IVA y ha contado las facturas anuladas.
La IA no ha leído mal: ha leído lo único que tenía, el catálogo de la base de datos, que es la lista de sus tablas y columnas con el tipo de cada columna. Eso no dice qué significa cada dato. Para acertar necesita, sobre todo, tres cosas escritas en palabras: qué es cada columna, cómo se unen las tablas y qué quiere decir cada código.
El informe de ventas de octubre: lo que dice el catálogo y lo que le falta a la IA
Un ejemplo con tres columnas de una base de facturación. Si la factura 125 existe en la serie A y en la serie R, unir las líneas sólo por el número suma a cada factura las líneas de la otra. Las tres sentencias se ejecutan sin error: la cifra sale mal sin avisar.
Lo que la IA recibe
Para escribir la sentencia, la IA parte del esquema: la descripción de la base de datos que recibe con cada pregunta. Oracle detalla lo que su asistente, Select AI, manda a la IA: el nombre de cada tabla, sus columnas y los comentarios que tengan escritos. Sin comentarios quedan los nombres, y en las bases de datos con las que se montó BIRD, una prueba pública de estos asistentes, los nombres de tablas y columnas «van a menudo abreviados» y cuesta entenderlos.
Unas líneas de explicación, veinte aciertos más
BIRD midió también cuánto pesa lo que falta. Reúne 95 bases de datos grandes, de
37 ámbitos profesionales, y cada pregunta trae una pista escrita por expertos:
por ejemplo, que en su base de baloncesto un pívot se guarda como pos = C. En
las pruebas que publicaron sus autores en 2023, GPT-4 dio el resultado correcto en 34,88 de
cada 100 preguntas sin las pistas, y en 54,89 con ellas. Es el mismo modelo, con
veinte respuestas buenas más de cada cien.
Qué hay que escribirle
Databricks compara su asistente con un analista nuevo que llega a la empresa: para entender qué representan los datos, se apoya en las descripciones de las tablas y de las columnas. Oracle enumera lo que conviene describir, entre otras cosas: para qué es cada columna, qué significa en el negocio, en qué unidades va y qué valores admite, y por qué claves se unen unas tablas con otras.
Esas descripciones pueden guardarse en la propia base de datos, como comentarios de cada tabla y columna: Oracle los añade a lo que recibe la IA si se activa una opción. Se escriben una vez y llegan con cada pregunta. Basta con describir las tablas del área de la pregunta, porque la base entera no cabe en lo que la IA lee de una vez, como expliqué a propósito de RAG.
Describir el esquema reduce los errores, pero la cifra se sigue comprobando; cómo hacerlo sin ser informático lo conté en cómo saber si la cifra de la IA es cierta.
Entonces, ¿qué necesita saber?
Lo que los nombres no dicen: qué es cada columna, cómo se unen las tablas y qué significa cada código. Si se escribe en palabras, la IA lo recibe con el esquema y acierta más.
El diseñador de Report Manager tiene, desde la versión 4.0.22 (notas en inglés), esquemas locales para su copiloto de IA: un archivo en tu ordenador, leído del catálogo de cada conexión, donde se describen las tablas, las columnas, las relaciones y los valores permitidos. Si la base de datos es de Odoo, SAP Business One, SAP R/3, Business Central o Dynamics 365 Finance and Operations, el esquema se importa ya hecho de la biblioteca de esquemas, que reconoce el sistema por las tablas de la base de datos. En el editor SQL de cada conjunto de datos del informe se elige el esquema local o uno de la nube de Reportman AI.
Fuentes
- Oracle, DBMS_CLOUD_AI Package,
apartado «Profile Attributes», atributo
object_list: «For translation natural language to SQL, the object name, object owner, object columns and comments are sent to the AI provider using HTTPS requests.» - Jinyang Li y otros, Can LLM Already Serve as A Database Interface? A BIg Bench for Large-Scale Database Grounded Text-to-SQLs (BIRD, arXiv, versión 3 de noviembre de 2023): en el resumen, «95 databases with a total size of 33.4 GB, spanning 37 professional domains»; apartado 3.3, «database table and column names are frequently abbreviated, which are difficult to understand» y «"center" can be represented by "pos = C" in the database professional_basketball»; tabla 2, columna «Testing Data», GPT-4: 34.88 «w/o knowledge» y 54.89 «w/ knowledge» (+20.01).
- Databricks, Curate an effective Genie Agent: «Think of Genie as a new data analyst joining your company. Like any new team member, Genie needs clear context to be effective. It relies on quality table and column descriptions to understand what the data represents».
- Oracle, Select AI Concepts, apartado «Metadata Enrichment»: «Candidate information to include: Table and column descriptions: purpose, business definitions, units, and allowed value ranges Keys and relationships: primary/foreign keys, join paths», entre otras.
- Oracle, Examples of Using Select AI, apartado «Example: Improve SQL Query Generation»: «If you have table and column comments in your database tables, enable "comments":"true" parameter in DBMS_CLOUD_AI.CREATE_PROFILE function to retrieve table level and column level comments. The comments are added to the metadata of the LLM for a better SQL generation.»
- Report Manager, novedades de la versión 4.0.22: «Local schemas for the AI copilot — describe the tables, columns, relations and allowed values of a database in a file on your computer, read from the catalog of the connection», «choose them, with the cloud schemas, in the SQL editor of the datasets» e «Import from the schema library: ready-made schemas of ERP systems (Odoo, SAP Business One, SAP R/3, Business Central and Dynamics 365 Finance and Operations), with the system detected from the tables of your database».
Toni Martir, arquitecto de software · · fuentes comprobadas el