El dataset sintético
Cómo construí los datos de entrenamiento del Sistema B con plantillas deterministas ancladas al grafo, por qué no usé un modelo generativo y cómo medí —y acoté— la regularidad que introduce ese método.
Para afinar el modelo con QLoRA hacía falta un corpus de retroalimentación en español, etiquetado y reproducible. Lo generé con plantillas deterministas ancladas a los conceptos del EKG, no con una IA generativa. Es una decisión deliberada —indicada por el director— que prioriza el control y la trazabilidad sobre la variedad, con una limitación conocida que mido más abajo y que mitigo con una partición held-out por esqueleto.
1Generación con plantillas deterministas
Cada registro del dataset nace de una plantilla determinista anclada a un concepto del EKG. La plantilla parte de un esqueleto de código con un error característico (por ejemplo, un desfase por uno o un caso base ausente en una recursión) y produce, de forma reproducible, la retroalimentación esperada: el tipo de error, el concepto implicado y la explicación. No interviene ningún modelo de lenguaje en la creación de las etiquetas, de modo que la verdad de referencia queda fijada por construcción.
Las cuatro categorías de error reparten el corpus de la versión v2 según muestra la tabla. La distribución refleja el peso real de cada familia de error en la docencia de Python, con los sintácticos sobre código que, por diseño, no es analizable.
| Categoría | v1 (550 reg.) | v2 (2625 reg.) |
|---|---|---|
| Conceptual | 45 % | 40 % |
| Semántico | 31 % | 29 % |
| Sintáctico | 14 % | 20 % |
| Correctas | 10 % | 11 % |
2Por qué plantillas y no IA generativa
Generar el corpus con plantillas deterministas ancladas al EKG —y no con un modelo generativo— fue una indicación expresa del director. La razón es metodológica: lo que se afina necesita una verdad de referencia sin ambigüedad.
Control. Yo fijo qué concepto, qué categoría y qué explicación lleva cada registro, sin la deriva ni las alucinaciones de un modelo generador. Trazabilidad. Cada etiqueta se remite a un concepto concreto del EKG, así que las métricas objetivas del benchmark pueden anclarse a esa verdad de referencia con independencia del juez. Reproducibilidad. El mismo procedimiento vuelve a producir el mismo corpus, sin depender de un servicio externo ni de una semilla de muestreo de un LLM.
El precio de estas ventajas es una variedad menor que la de un generador libre. Es un compromiso asumido y, sobre todo, medido: en la sección siguiente cuantifico la regularidad que introduce el templating y describo cómo la acoto.
3Diversificación del corpus (v1 → v2)
La primera versión del dataset derivaba de solo 11 plantillas, lo que provocaba que la pérdida bajísima del entrenamiento reflejara memorización del formato más que generalización. Para atajarlo diversifiqué el corpus hasta la versión v2.
| Métrica | v1 | v2 |
|---|---|---|
| Registros | 550 | 2625 |
| Esqueletos / plantillas estructurales | 11 | 35 |
| Conceptos cubiertos | ~9 | 19 |
| Targets únicos | ~bajo (casi idénticos) | 1396 (53 %) |
| Partición de validación | aleatoria (con fuga) | held-out por esqueleto |
La cifra de "1396 targets únicos" (53 %) sobreestima la variedad real. Al medir la diversidad de forma semántica (coseno entre embeddings) en lugar de contar cadenas distintas, el coseno medio intra-esqueleto es 0,962 frente al global 0,604: dentro de cada plantilla, las respuestas difieren casi solo en nombres de variable. Esa medición es la que cuantifica la limitación del método.
4La limitación medida y su mitigación
El método determinista introduce regularidades superficiales: como las plantillas comparten estructura, el modelo puede aprender la forma de la respuesta en lugar del razonamiento. Reconocer esta limitación es parte del rigor del trabajo, y por eso la mido en vez de ocultarla.
La validación no se reparte al azar, sino reservando esqueletos completos no vistos en el entrenamiento (solapamiento nulo con el conjunto de entrenamiento). Así, evaluar sobre un esqueleto held-out mide si el modelo generaliza a una estructura nueva y no si memoriza una que ya vio. El reparto de entrenamiento es de 2100 registros frente a 525 de validación, con 7 esqueletos reservados.
Sobre esa base, el benchmark del proyecto se evalúa con n=50 casos held-out (esqueletos no vistos), con métricas objetivas ancladas a la verdad de referencia que fija la plantilla. Es la condición que permite leer los resultados sin la fuga que contaminaba las primeras evaluaciones.
La partición por esqueleto acota la fuga dentro del propio corpus sintético, pero no convierte los datos en código real de estudiantes. La variación auténtica del dataset está entre plantillas, no dentro de cada una, así que cerrar del todo el hueco exige diversificar la redacción de las respuestas o destilar de un modelo maestro. La prueba sobre código real lo confirma y se documenta en la página de resultados.
5Ver también
Sistema RAG y fine-tuning
La arquitectura de los cuatro sistemas, el afinado QLoRA sobre este dataset y la curva de entrenamiento que invierte el sobreajuste.
Resultados
El benchmark de los 50 casos held-out y la prueba sobre código real, donde se mide si lo afinado transfiere fuera de las plantillas.
El grafo de conocimiento
El EKG al que se anclan las plantillas: sus 157 conceptos, las consultas SPARQL y la validación SHACL.
Si este trabajo te resulta útil y quieres referenciarlo, esta es la cita recomendada.
Bueno Junquero, A. (2026). Integración de un grafo de conocimiento educativo con un LLM mediante RAG. Trabajo Fin de Máster, Máster Universitario en Investigación en Inteligencia Artificial, UNED. Director, José Luis Fernández Vindel.