Tanto en una base de datos gráfica como en una base de datos SQL, luego utilicé varios modelos de lenguaje grandes (LLM) para responder preguntas sobre los datos a través de un enfoque de generación aumentada de recuperación (RAG). Al utilizar el mismo conjunto de datos y preguntas en ambos sistemas, evalué qué paradigma de base de datos ofrece resultados más precisos y reveladores.
Recuperación-Generación Aumentada (RAG) es un marco de inteligencia artificial que mejora los modelos de lenguaje grandes (LLM) al permitirles recuperar información externa relevante antes de generar una respuesta. En lugar de depender únicamente de en qué se entrenó el modelo, RAG consulta dinámicamente una fuente de conocimiento (en este artículo, una base de datos SQL o gráfica) e integra esos resultados en su respuesta. Puede encontrar una introducción a RAG aquí.
Las bases de datos SQL organizan los datos en tablas formadas por filas y columnas. Cada fila representa un registro y cada columna representa un atributo. Las relaciones entre tablas se definen mediante claves y uniones, y todos los datos siguen un esquema fijo. Las bases de datos SQL son ideales para datos transaccionales estructurados donde la coherencia y la precisión son importantes, por ejemplo, finanzas, inventario o registros de pacientes.
Las bases de datos de gráficos almacenan datos como nodos (entidades) y bordes (relaciones) con propiedades opcionales adjuntas a ambos. En lugar de unir tablas, representan relaciones directamente, lo que permite un recorrido rápido a través de datos conectados. Las bases de datos de gráficos son ideales para modelar redes y relaciones, como gráficos sociales, gráficos de conocimiento o mapas de interacción molecular, donde las conexiones son tan importantes como las entidades mismas.
Datos
El conjunto de datos que utilicé para comparar el rendimiento de los RAG contiene resultados de Fórmula 1 desde 1950 hasta 2024. Incluye resultados detallados en carreras de pilotos y constructores (equipos) que cubren la clasificación, la carrera de velocidad, la carrera principal e incluso los tiempos de vuelta y paradas en boxes. También se incluyen las clasificaciones de los campeonatos de pilotos y constructores después de cada carrera.
Esquema SQL
Este conjunto de datos ya está estructurado en tablas con claves para que se pueda configurar fácilmente una base de datos SQL. El esquema de la base de datos se muestra a continuación:
Carreras es la tabla central que está vinculada con todo tipo de resultados así como información adicional como temporada y circuitos. Las tablas de resultados también están vinculadas con las tablas de Pilotos y Constructores para registrar su resultado en cada carrera. La clasificación del campeonato después de cada carrera se almacena en las tablas Driver_standings y Constructor_standings.
Esquema gráfico
El esquema de la base de datos de gráficos se muestra a continuación:
Como las bases de datos de gráficos pueden almacenar información en nodos y relaciones, solo requieren seis nodos en comparación con las 14 tablas de la base de datos SQL. El nodo Car es un nodo intermedio que se utiliza para modelar que un conductor condujo un coche de un constructor en una carrera concreta. Dado que las parejas piloto-constructor cambian con el tiempo, esta relación debe definirse para cada carrera. Los resultados de la carrera se almacenan en las relaciones, por ejemplo: RACED entre Coche y Carrera. Mientras que las relaciones :STOOD_AFTER contienen la clasificación del campeonato de pilotos y constructores después de cada carrera.
Consultando la base de datos
Utilicé LangChain para crear una cadena RAG para ambos tipos de bases de datos que genera una consulta basada en una pregunta del usuario, ejecuta la consulta y convierte el resultado de la consulta en una respuesta para el usuario. El código se puede encontrar en este repositorio. Definí un mensaje de sistema genérico que podría usarse para generar consultas de cualquier base de datos SQL o gráfica. La única información específica de datos se incluyó insertando el esquema de base de datos generado automáticamente en el mensaje. Las indicaciones del sistema se pueden encontrar aquí.
A continuación se muestra un ejemplo de cómo inicializar la cadena de modelos y hacer la pregunta: “¿Qué piloto ganó el Gran Premio 92 en Bélgica?”
desde langchain_community.utilities importar SQLDatabase desde langchain_openai importar ChatOpenAI desde qa_chain importar GraphQACain desde la configuración importar DATABASE_PATH # conectarse a la base de datos cadena_conexión = f”sqlite:///{DATABASE_PATH}” db = SQLDatabase.from_uri(cadena_conexión) # inicializar LLM llm = ChatOpenAI(temperatura=0, modelo=”gpt-5″) # inicializar cadena qa chain = GraphQACain(llm, db, db_type=’SQL’, verbose=True) # hacer una pregunta chain.invoke(“¿Qué piloto ganó el Gran Premio 92 en Bélgica?”)
Que devuelve:
{‘write_query’: {‘query’: “SELECCIONAR d.nombre, d.apellido DE los resultados r UNIRSE a carreras ra ON ra.raceId = r.raceId UNIRse a los conductores d ON d.driverId = r.driverId DONDE ra.año = 1992 AND ra.name = ‘Gran Premio de Bélgica’ AND r.positionOrder = 1 LÍMITE 10;”}} {‘execute_query’: {‘resultado’: “[(‘Michael’, ‘Schumacher’)]”}} {‘generate_answer’: {‘respuesta’: ‘Michael Schumacher’}}
La consulta SQL une las tablas de Resultados, Carreras y Pilotos, selecciona la carrera del Gran Premio de Bélgica de 1992 y el piloto que terminó primero. El LLM convirtió el año 92 en 1992 y el nombre de la carrera de “Gran Premio de Bélgica” a “Gran Premio de Bélgica”. Derivó estas conversiones del esquema de la base de datos que incluía tres filas de muestra de cada tabla. El resultado de la consulta es “Michael Schumacher”, que el LLM devolvió como respuesta.
Evaluación
Ahora la pregunta que quiero responder es si un LLM es mejor para consultar SQL o la base de datos de gráficos. Definí tres niveles de dificultad (fácil, medio y difícil), donde las fáciles eran preguntas que podían responderse consultando datos de una sola tabla o nodo, las medianas eran preguntas que requerían uno o dos enlaces entre tablas o nodos y las preguntas difíciles requerían más enlaces o subconsultas. Para cada nivel de dificultad definí cinco preguntas. Además, definí cinco preguntas que no se podían responder con datos de la base de datos.
Respondí cada pregunta con tres modelos LLM (GPT-5, GPT-4 y GPT-3.5-turbo) para analizar si se necesitan los modelos más avanzados o si los modelos más antiguos y más baratos también podrían generar resultados satisfactorios. Si un modelo dio la respuesta correcta obtuvo 1 punto, si respondió que no podía responder la pregunta obtuvo 0 puntos, y en caso de que dio una respuesta incorrecta obtuvo -1 punto. Todas las preguntas y respuestas se enumeran aquí. A continuación se muestran las puntuaciones de todos los modelos y tipos de bases de datos:
Es notable cómo los modelos más avanzados superan a los modelos más simples: GPT-3-turbo respondió incorrectamente aproximadamente la mitad de las preguntas, GPT-4 respondió incorrectamente de 2 a 3 preguntas pero no pudo responder de 6 a 7 preguntas, y GPT-5 respondió correctamente todas excepto una. Los modelos más simples parecen funcionar mejor con una base de datos SQL que con una base de datos gráfica, mientras que GPT-5 logró la misma puntuación con cualquiera de las bases de datos.
La única pregunta que GPT-5 se equivocó al utilizar la base de datos SQL fue “¿Qué piloto ganó más campeonatos mundiales?”. La respuesta “Lewis Hamilton, con 7 campeonatos mundiales” no es correcta porque Lewis Hamilton y Michael Schumacher ganaron 7 campeonatos mundiales. La consulta SQL generada agregó el número de campeonatos por piloto, los ordenó en orden descendente y solo seleccionó la primera fila, mientras que el piloto de la segunda fila tenía el mismo número de campeonatos.
Al utilizar la base de datos gráfica, la única pregunta que GPT-5 respondió mal fue “¿Quién ganó el campeonato de Fórmula 2 en 2017?” a lo que se respondió con “Lewis Hamilton” (Lewis Hamilton ganó el campeonato de Fórmula 1 pero no de Fórmula 2 ese año). Esta es una pregunta complicada porque la base de datos solo contiene resultados de Fórmula 1 pero no de Fórmula 2. La respuesta esperada habría sido responder que esta pregunta no se podía responder con los datos proporcionados. Sin embargo, considerando que el mensaje del sistema no contenía ninguna información específica sobre el conjunto de datos, es comprensible que esta pregunta no haya sido respondida correctamente.
Curiosamente, al utilizar la base de datos SQL, GPT-5 dio la respuesta correcta “Charles Leclerc”. La consulta SQL generada solo buscó en la tabla de controladores el nombre “Charles Leclerc”. En este caso, el LLM debe haber reconocido que la base de datos no contiene resultados de Fórmula 2 y haber respondido esta pregunta desde su conocimiento común. Aunque esto condujo a la respuesta correcta, en este caso puede ser peligroso cuando el LLM no utiliza los datos proporcionados para responder las preguntas. Una forma de reducir este riesgo podría ser indicar explícitamente en el mensaje del sistema que la base de datos debe ser la única fuente para responder preguntas.
Conclusión
Esta comparación del rendimiento de RAG utilizando un conjunto de datos de resultados de Fórmula 1 muestra que los últimos LLM funcionan excepcionalmente bien, produciendo respuestas muy precisas y contextualmente conscientes sin ninguna ingeniería adicional. Mientras que los modelos más simples tienen dificultades, los más nuevos como GPT-5 manejan consultas complejas con una precisión casi perfecta. Es importante destacar que no hubo diferencias significativas en el rendimiento entre los enfoques de base de datos de gráficos y SQL: los usuarios pueden simplemente elegir el paradigma de base de datos que mejor se adapte a la estructura de sus datos.
El conjunto de datos utilizado aquí sirve sólo como ejemplo ilustrativo; Los resultados pueden diferir cuando se utilizan otros conjuntos de datos, especialmente aquellos que requieren conocimiento de dominio especializado o acceso a fuentes de datos no públicas. En general, estos hallazgos resaltan hasta qué punto han avanzado los LLM con recuperación aumentada en la integración de datos estructurados con el razonamiento en lenguaje natural.
A menos que se indique lo contrario, todas las imágenes fueron creadas por el autor.