Dirigido a:
Este módulo no enseña IA. Te dice exactamente qué vas a poder hacer cuando termines el manual, qué capítulos te interesan según lo que ya sabes, y cómo usar este documento sin perderte.
Esto es lo que ocurrió en un sistema RAG real de una empresa de logística, dos semanas después de su despliegue:
El sistema recuperó el fragmento correcto pero el LLM generó una cifra diferente. El problema no estaba en el retrieval: estaba en que el corpus tenía dos documentos con plazos distintos (14 días en la política interna, 30 días en las condiciones generales para clientes premium), y el modelo produjo el baricentro estadístico entre ambas versiones.
Cuando termines este manual, sabrás diagnosticar exactamente por qué ocurrió esto, dónde falla el pipeline, y qué cambio de arquitectura lo previene. Esa es la diferencia entre usar IA y entender IA.
Tu ventaja real es esta: la IA en producción es, en un 70%, un problema de datos. Pipelines, calidad, trazabilidad, gobernanza, validación. Todo eso ya lo conoces. Lo que te falta es el 30% específico del mundo IA: cómo funciona un LLM, qué son los embeddings, cómo se valida un sistema probabilístico, qué cambia con los agentes.
El manual está organizado en módulos independientes. Puedes leerlos en orden o saltar directamente al que necesitas hoy. Cada uno cierra con un resultado concreto: algo que puedes hacer o evaluar que antes no podías.
Elige la que mejor describe tu situación actual. No son excluyentes.
Sesiones de 45–60 minutos, dos o tres veces por semana. En ruta completa: 2–4 meses. En ruta de perfil: 3–6 semanas. El error más frecuente es avanzar capítulos sin que ninguno haya aterrizado: es mejor releer una sección que saltar a la siguiente sin poder formular el resultado del capítulo anterior.
Bloques que encontrarás a lo largo del manual: 🧵 Para qué te sirve esto (contexto de cada capítulo, léelo siempre); 🧪 Experimento / Ejercicio (no lo saltes: la comprensión real viene de aquí); ⚠️ Error común (el malentendido habitual en este punto); 💡 Nota técnica (profundización opcional para perfiles técnicos); 📐 Concepto del autor — propuesta original del autor, no terminología estándar del sector, marcada siempre con la etiqueta amarilla desde la primera aparición; y 🔴 Laboratorio de errores — casos reales de sistemas que fallan, con diagnosis detallada (nuevo en esta edición).
Marca estos tres puntos. Si puedes hacerlo, estás listo para empezar:
Módulo 0 — Orientación
Base conceptual imprescindible. Antes de construir sobre IA, necesitas entender desde dentro cómo funciona, por qué alucina y qué significa que un sistema sea no-determinista.
Predicción estadística, arquitectura Transformer y el mecanismo de atención.
Cuando una persona conversa con un sistema de inteligencia artificial generativa por primera vez, la experiencia suele producir una mezcla de fascinación y desconcierto. Las respuestas son fluidas, coherentes y, en muchos casos, sorprendentemente pertinentes. El sistema parece comprender las preguntas, adaptar su tono y elaborar explicaciones complejas con una facilidad que recuerda a la interacción humana.
Esta impresión conduce fácilmente a una interpretación intuitiva: la máquina sabe cosas. Sin embargo, esta interpretación es profundamente engañosa. Un modelo de lenguajeModelo de lenguaje de gran escala entrenado sobre enormes corpus textuales. Fundamento de los sistemas generativos actuales. no funciona como una base de datos que almacena hechos organizados ni como un sistema experto que aplica reglas lógicas. Su funcionamiento se basa en un principio radicalmente diferente: la predicción estadística del lenguaje.
El conocimiento dentro del modelo no está representado como una colección de hechos explícitos. Aparece como una distribución estadística de patrones lingüísticos. Si en los datos de entrenamiento aparece con mucha frecuencia "París es la capital de Francia", el modelo aprenderá que, después de "La capital de Francia es", el tokenUnidad básica de texto para un modelo de lenguaje. Puede ser una palabra completa, una subpalabra, un carácter o un signo de puntuación. "París" tiene una probabilidad extremadamente alta.
La capacidad de generar un lenguaje fluido puede crear la ilusión de comprensión. Los modelos no poseen intenciones, creencias ni comprensión semántica en el sentido humano. Operan exclusivamente mediante transformaciones matemáticas aplicadas a vectoresLista ordenada de números (embeddings) que representa las características, el significado semántico o la información compleja de datos como texto, imágenes o audio. Permiten a los modelos de IA convertir datos no estructurados en coordenadas numéricas para medir similitudes, entender relaciones y procesar información eficientemente. numéricos en espacios de muy alta dimensión.
En 2017, Google publicó "Attention Is All You Need" e introdujo la arquitectura TransformerArquitectura de red neuronal basada en el mecanismo de atención (Vaswani et al., 2017). Fundamento de todos los LLM modernos.. Esta arquitectura se basa en el mecanismo de atenciónMecanismo del Transformer que permite a cada token «mirar» todos los demás tokens del contexto simultáneamente y ponderar su influencia., que permite al modelo procesar todas las palabras de un texto simultáneamente y ponderar la influencia de cada una sobre las demás. La arquitectura TransformerArquitectura de red neuronal basada en el mecanismo de atención (Vaswani et al., 2017). Fundamento de todos los LLM modernos., combinada con el entrenamiento a gran escala, es la base de todos los modelos de lenguaje modernos: GPT, Claude, Gemini, Llama y muchos otros.
Para cada tokenUnidad básica de texto para un modelo de lenguaje. Puede ser una palabra completa, una subpalabra, un carácter o un signo de puntuación., el mecanismo de atenciónMecanismo del Transformer que permite a cada token «mirar» todos los demás tokens del contexto simultáneamente y ponderar su influencia. genera tres vectores: query (qué busca), key (qué ofrece al ser buscado) y value (qué información aporta si es seleccionado). El query de cada tokenUnidad básica de texto para un modelo de lenguaje. Puede ser una palabra completa, una subpalabra, un carácter o un signo de puntuación. se compara con los keys de todos los demás para producir puntuaciones de atención. Este proceso se repite en múltiples "cabezas de atención" en paralelo, cada una especializada en detectar diferentes tipos de relaciones: sintácticas, semánticas, de referencia y de distancia.
Tokenización, distribuciones de probabilidad y la ilusión de inteligencia.
Para que una máquina procese el lenguaje humano, debe transformarlo en unidades numéricas manejables llamadas tokensUnidad básica de texto para un modelo de lenguaje. Puede ser una palabra completa, una subpalabra, un carácter o un signo de puntuación.. Un tokenUnidad básica de texto para un modelo de lenguaje. Puede ser una palabra completa, una subpalabra, un carácter o un signo de puntuación. puede ser una palabra entera, una subpalabra, un signo de puntuación o un fragmento corto de texto.
Los sistemas de tokenización más comunes son Byte-Pair Encoding (BPE), que fusiona pares de caracteres más frecuentes; WordPiece, optimizado para maximizar la probabilidad de los datos de entrenamiento; y SentencePiece, que trata el texto como secuencia de bytes. El vocabulario típico oscila entre 30.000 y 200.000 tokensUnidad básica de texto para un modelo de lenguaje. Puede ser una palabra completa, una subpalabra, un carácter o un signo de puntuación..
La tokenización por subpalabras tiene tres ventajas clave. Primera: manejo de palabras desconocidas, una palabra no vista se descompone en subpalabras conocidas. Segunda: eficiencia, vocabulario reducido sin perder capacidad expresiva. Tercera: morfología, se capturan regularidades como plurales, conjugaciones y prefijos.
Ejemplo: "inconstitucionalmente" nunca vista puede descomponerse en "in + constitucional + mente", que sí existen en el vocabulario y permiten al modelo procesarla correctamente.
El entrenamiento consiste en un ejercicio masivo de predicción: el modelo recibe millones de fragmentos de texto y debe predecir el siguiente tokenUnidad básica de texto para un modelo de lenguaje. Puede ser una palabra completa, una subpalabra, un carácter o un signo de puntuación. de cada secuencia. Inicialmente sus predicciones son erróneas; tras millones de iteraciones y ajustes de parámetros mediante optimización, desarrolla una representación estadística rica de las regularidades del lenguaje.
En cada paso de generación, el modelo calcula una distribución de probabilidad completa sobre los 30.000–200.000 tokensUnidad básica de texto para un modelo de lenguaje. Puede ser una palabra completa, una subpalabra, un carácter o un signo de puntuación. posibles del vocabulario. Contexto: "La capital de Francia es".
| Token | Probabilidad | Interpretación |
|---|---|---|
| París | 0.92 | Hecho muy frecuente en el corpus |
| Lyon | 0.03 | Segunda ciudad francesa |
| Marsella | 0.02 | Tercera ciudad, menos frecuente |
| Londres | 0.01 | Extrapolación errónea posible |
| [otros ~199.996] | 0.02 | Larga cola de alternativas improbables |
El proceso de generación es iterativo. El sistema comienza con el promptEl texto de entrada proporcionado al modelo. Prompt engineering es la disciplina de diseñar prompts que maximizan la calidad y fiabilidad de las respuestas. inicial y repite el ciclo: analiza todos los tokensUnidad básica de texto para un modelo de lenguaje. Puede ser una palabra completa, una subpalabra, un carácter o un signo de puntuación. del contexto disponible mediante el mecanismo de atenciónMecanismo del Transformer que permite a cada token «mirar» todos los demás tokens del contexto simultáneamente y ponderar su influencia.; calcula la distribución de probabilidad sobre el vocabulario completo; aplica los parámetros de muestreo (temperaturaParámetro que controla la aleatoriedad de la selección de tokens. T=0: casi determinista. T>1: alta creatividad/variabilidad., top-p, top-kMétodos de muestreo que limitan la selección de tokens al subconjunto de mayor probabilidad. Top-k limita a los k tokens más probables; top-p selecciona el conjunto cuya probabilidad acumulada alcanza el umbral p.) para seleccionar un tokenUnidad básica de texto para un modelo de lenguaje. Puede ser una palabra completa, una subpalabra, un carácter o un signo de puntuación.; añade ese tokenUnidad básica de texto para un modelo de lenguaje. Puede ser una palabra completa, una subpalabra, un carácter o un signo de puntuación. al texto generado; usa el nuevo contexto completo y repite hasta EOS o límite de tokensUnidad básica de texto para un modelo de lenguaje. Puede ser una palabra completa, una subpalabra, un carácter o un signo de puntuación..
Esta aparente inteligencia emerge de la escala del entrenamiento (billones de tokensUnidad básica de texto para un modelo de lenguaje. Puede ser una palabra completa, una subpalabra, un carácter o un signo de puntuación.) y de la complejidad de las representaciones internas (miles de millones de parámetros). En su núcleo, el sistema sigue realizando la misma operación fundamental: predecir el siguiente tokenUnidad básica de texto para un modelo de lenguaje. Puede ser una palabra completa, una subpalabra, un carácter o un signo de puntuación..
Temperatura, top-k/p, no-determinismo residual y variabilidad en sistemas complejos.
La informática tradicional se construyó sobre el determinismoPropiedad de un sistema de producir siempre exactamente la misma salida para la misma entrada. Los LLM son probabilísticos, no deterministas.: dadas las mismas condiciones de entrada, el sistema produce siempre exactamente el mismo resultado. La llegada de la IA moderna introduce un cambio profundo en esta tradición.
Los modelos de lenguajeModelo de lenguaje de gran escala entrenado sobre enormes corpus textuales. Fundamento de los sistemas generativos actuales. no operan como programas deterministasPropiedad de un sistema de producir siempre exactamente la misma salida para la misma entrada. Los LLM son probabilísticos, no deterministas. clásicos. Su funcionamiento está basado en distribuciones de probabilidad. El sistema no calcula una respuesta única, sino una distribución sobre posibles continuaciones.
La temperaturaParámetro que controla la aleatoriedad de la selección de tokens. T=0: casi determinista. T>1: alta creatividad/variabilidad. actúa como regulador de la distribución de probabilidad. Con temperaturaParámetro que controla la aleatoriedad de la selección de tokens. T=0: casi determinista. T>1: alta creatividad/variabilidad. baja (≤ 0.2), el tokenUnidad básica de texto para un modelo de lenguaje. Puede ser una palabra completa, una subpalabra, un carácter o un signo de puntuación. más probable domina y el comportamiento es casi deterministaPropiedad de un sistema de producir siempre exactamente la misma salida para la misma entrada. Los LLM son probabilísticos, no deterministas.. Con temperaturaParámetro que controla la aleatoriedad de la selección de tokens. T=0: casi determinista. T>1: alta creatividad/variabilidad. alta (> 1.0), la distribución se aplana y opciones menos probables tienen más oportunidades.
| Temperatura | Comportamiento | Uso recomendado | Riesgo |
|---|---|---|---|
| 0.0 – 0.2 | Casi determinista | Datos estructurados, código, hechos verificables | Respuestas repetitivas |
| 0.3 – 0.7 | Equilibrio fiabilidad-variedad | Asistentes, resúmenes, explicaciones | Variabilidad controlada |
| 0.8 – 1.2 | Alta creatividad | Generación creativa, brainstorming | Más alucinaciones |
| > 1.2 | Comportamiento errático | Experimentación únicamente | Incoherencias frecuentes |
Incluso con temperaturaParámetro que controla la aleatoriedad de la selección de tokens. T=0: casi determinista. T>1: alta creatividad/variabilidad. = 0, puede aparecer variabilidad residual (no-determinismo residualVariabilidad irreducible en sistemas LLM incluso con temperatura=0 y parámetros fijos, debida al hardware paralelo y a la no-asociatividad del punto flotante.) por tres causas técnicas: hardware paralelo (GPU/TPU), no-asociatividad del punto flotantePropiedad de la aritmética float16/float32 por la cual (a+b)+c ≠ a+(b+c) debido al redondeo. Produce variabilidad residual incluso con temperatura=0., y estado del caché y jerarquía de memoria.
En sistemas complejos que encadenan múltiples componentes (reformulación de query, búsqueda RAGArquitectura que combina recuperación de información con generación de texto. Reduce las alucinaciones al anclar las respuestas a fuentes verificables., selección de fragmentos, generación, validación), cada etapa introduce su propia variabilidad.
| Contexto | Tolerancia a variabilidad | Estrategia recomendada |
|---|---|---|
| Creativo (poemas, ideas) | Alta | T=0.8-1.2, top-p=0.95 |
| Informativo general | Media | T=0.4-0.7, top-p=0.9 |
| Técnico documentado | Baja | T=0.1-0.3, seeds fijas |
| Crítico (médico, legal, financiero) | Muy baja | T=0, validación determinista obligatoria |
El parámetro de temperaturaParámetro que controla la aleatoriedad de la selección de tokens. T=0: casi determinista. T>1: alta creatividad/variabilidad. y los métodos de muestreo (top-k, top-pMétodos de muestreo que limitan la selección de tokens al subconjunto de mayor probabilidad. Top-k limita a los k tokens más probables; top-p selecciona el conjunto cuya probabilidad acumulada alcanza el umbral p.) permiten ajustar este equilibrio según el contexto. No existe una configuración universalmente óptima: cada caso de uso requiere una calibración específica que equilibre la necesidad de variabilidad creativa con los requisitos de fiabilidad.
Por qué las alucinaciones son estructuralmente inevitables y cómo contenerlas.
En los modelos de lenguaje, una alucinaciónGeneración de texto gramaticalmente correcto y semánticamente fluido pero fácticamente falso. No implica intención engañosa: es consecuencia estructural del modelo probabilístico. describe la generación de texto gramaticalmente correcto y semánticamente fluido, pero fácticamente falso o carente de sentido lógico. Una IA no miente: cuando alucina, está siguiendo su lógica probabilística hasta una conclusión que no coincide con el mundo real.
| Tipo | Descripción | Ejemplo |
|---|---|---|
| Intrínseca | Contradice información del propio contexto. | "El informe indica ventas de 10M€" → "Las ventas fueron de 15M€" |
| Extrínseca | Introduce información falsa no presente en el contexto. | "Según Pérez (2022)..." (artículo inexistente) |
| Consistencia interna | El modelo se contradice dentro de la misma respuesta. | "Nació en 1980, publicó su primer libro en 1975" |
| Confabulación | Mezcla hechos reales e inventados de modo indistinguible. | Cita real + datos estadísticos inventados en la misma frase |
El peligro real de las alucinacionesGeneración de texto gramaticalmente correcto y semánticamente fluido pero fácticamente falso. No implica intención engañosa: es consecuencia estructural del modelo probabilístico. no es el error en sí mismo, sino la autoridad con la que se presenta. Esto genera lo que podemos denominar deuda cognitiva: el usuario, seducido por la fluidez del texto, relaja su vigilancia crítica. En sistemas críticos, esta "falsa fluidez" puede actuar como un caballo de Troya, introduciendo datos erróneos en procesos de decisión importantes.
Incluso con temperaturaParámetro que controla la aleatoriedad de la selección de tokens. T=0: casi determinista. T>1: alta creatividad/variabilidad. = 0, las alucinacionesGeneración de texto gramaticalmente correcto y semánticamente fluido pero fácticamente falso. No implica intención engañosa: es consecuencia estructural del modelo probabilístico. pueden persistir por el fenómeno de bifurcación crítica: el modelo llega a un punto donde dos tokensUnidad básica de texto para un modelo de lenguaje. Puede ser una palabra completa, una subpalabra, un carácter o un signo de puntuación. tienen probabilidades muy cercanas (ej: 0.481 vs 0.479). Una micro-variación numérica decide cuál se selecciona. A partir de ahí, el TransformerArquitectura de red neuronal basada en el mecanismo de atención (Vaswani et al., 2017). Fundamento de todos los LLM modernos. genera la respuesta manteniendo coherencia interna con esa elección inicial —aunque sea errónea. El error se autoperpetúa hasta el final de la respuesta.
Si eliminamos la capacidad del modelo de predecir más allá de los datos literalmente presentes en su corpus, obtenemos un sistema de recuperación de información, no un modelo generativo. La alucinaciónGeneración de texto gramaticalmente correcto y semánticamente fluido pero fácticamente falso. No implica intención engañosa: es consecuencia estructural del modelo probabilístico. y la creatividad son dos caras de la misma moneda estadística.
Fijar T=0Parámetro que controla la aleatoriedad de la selección de tokens. T=0: casi determinista. T>1: alta creatividad/variabilidad. no elimina las alucinacionesGeneración de texto gramaticalmente correcto y semánticamente fluido pero fácticamente falso. No implica intención engañosa: es consecuencia estructural del modelo probabilístico.. El no-determinismo residualVariabilidad irreducible en sistemas LLM incluso con temperatura=0 y parámetros fijos, debida al hardware paralelo y a la no-asociatividad del punto flotante. del hardware puede hacer que el modelo elija tokensUnidad básica de texto para un modelo de lenguaje. Puede ser una palabra completa, una subpalabra, un carácter o un signo de puntuación. ligeramente diferentes incluso con T=0. Además, la alucinaciónGeneración de texto gramaticalmente correcto y semánticamente fluido pero fácticamente falso. No implica intención engañosa: es consecuencia estructural del modelo probabilístico. más peligrosa es la determinista: un sistema con T=0 que alucina producirá siempre la misma respuesta errónea.
| Estrategia | Mecanismo | Reducción estimada | Coste |
|---|---|---|---|
| RAGArquitectura que combina recuperación de información con generación de texto. Reduce las alucinaciones al anclar las respuestas a fuentes verificables. con groundingAnclaje de las respuestas de la IA a fuentes verificables externas. Reduce las alucinaciones extrínsecas. | Anclar respuestas a fuentes verificables externas | Alta (60-80%) | Medio |
| Validación determinista | Capa de código que verifica afirmaciones contra BD | Muy alta (>80%) | Alto |
| Umbrales de confianza | Rechazar cuando la incertidumbre supera el umbral | Media (30-50%) | Bajo |
| Conjunto + consenso | N respuestas; inconsistencia semántica = señal de alarma | Media (40-60%) | Alto |
| Chain-of-thought | Forzar razonamiento explícito paso a paso | Media (30-50%) | Bajo |
| Human-in-the-loopParadigma de supervisión donde el humano revisa y aprueba cada decisión crítica antes de ejecutarse. | Revisión humana obligatoria en decisiones críticas | Máxima (contexto) | Muy alto |
Los sistemas que incorporan LLMModelo de lenguaje de gran escala entrenado sobre enormes corpus textuales. Fundamento de los sistemas generativos actuales. deben diseñarse asumiendo que habrá alucinacionesGeneración de texto gramaticalmente correcto y semánticamente fluido pero fácticamente falso. No implica intención engañosa: es consecuencia estructural del modelo probabilístico., no esperando que no las haya. Esto implica: arquitecturas que no dependen de la corrección del LLMModelo de lenguaje de gran escala entrenado sobre enormes corpus textuales. Fundamento de los sistemas generativos actuales. para garantizar la fiabilidad, interfaces que comunican la incertidumbre al usuario de forma clara, procesos de auditoríaEvaluación sistemática de un sistema IA para verificar su rendimiento, equidad, trazabilidad y cumplimiento normativo, realizada por un auditor cualificado. que detectan alucinaciones antes de que lleguen a decisiones críticas, y una cultura organizacional que no asume la corrección de los outputs de la IA sin verificación.
Geometría del pensamiento: cómo el espacio vectorial determina qué responde la IA.
Un embeddingRepresentación vectorial de un texto en un espacio de alta dimensión donde la distancia entre vectores refleja similitud semántica. es un vectorLista ordenada de números (embeddings) que representa las características, el significado semántico o la información compleja de datos como texto, imágenes o audio. Permiten a los modelos de IA convertir datos no estructurados en coordenadas numéricas para medir similitudes, entender relaciones y procesar información eficientemente. —una lista de números— que representa un fragmento de texto en un espacio de dimensiones muy altas (habitualmente 768, 1024 o 1536 dimensiones). En este espacio, la distancia entre dos vectoresLista ordenada de números (embeddings) que representa las características, el significado semántico o la información compleja de datos como texto, imágenes o audio. Permiten a los modelos de IA convertir datos no estructurados en coordenadas numéricas para medir similitudes, entender relaciones y procesar información eficientemente. refleja su similitud conceptual. La búsqueda semántica, el RAGArquitectura que combina recuperación de información con generación de texto. Reduce las alucinaciones al anclar las respuestas a fuentes verificables. y gran parte de los sistemas modernos de IA se basan en este principio geométrico.
El modelo no produce la mejor respuesta disponible en su corpus. Produce el centro de masa estadístico del corpus sobre ese tema —lo que denominamos Baricentro EstadísticoEl «centro de masa» estadístico del corpus de entrenamiento sobre un tema dado. El modelo produce el baricentro, no la mejor respuesta posible.. Los discursos más "normales" son más visibles, los discursos atípicos quedan en la periferia geométrica, y las ideas que se desvían de la media son marginadas no por ser incorrectas, sino por ser estadísticamente infrecuentes.
| Relación | Operación vectorial | Resultado aproximado |
|---|---|---|
| Capital → País | V(París) - V(Francia) + V(Italia) | V(Roma) |
| Género | V(Rey) - V(Hombre) + V(Mujer) | V(Reina) |
| Especialización | V(Médico) - V(General) + V(Cardiología) | V(Cardiólogo) |
| Tiempo verbal | V(Correr) + V[dirección pasado] | V(Corrió) |
| Modelo | Año | Innovación | Limitación |
|---|---|---|---|
| Word2Vec | 2013 | Embeddings entrenables por predicción de contexto | Una representación por palabra, ignora el contexto |
| BERT | 2018 | Un embedding diferente según el contexto de la frase | Alto coste computacional en inferencia |
| Sentence-BERT | 2019 | Embeddings de frases completas comparables | Ventana de contexto limitada |
| Ada-002 / E5 / BGE | 2022+ | Alta precisión en recuperación semántica | Coste de API o GPU significativo |
| Modelo | Dimensiones | Uso típico |
|---|---|---|
| Word2Vec | 300 | Tareas léxicas básicas |
| BERT base | 768 | Clasificación, NER, question answering |
| BERT large / RoBERTa | 1024 | Tareas más exigentes |
| OpenAI ada-002 | 1536 | Búsqueda semántica, RAG en producción |
| Modelos internos LLM | Hasta 8192 | Representación interna del Transformer |
La búsqueda semántica opera en cuatro pasos: indexación (documentos convertidos a embeddingsRepresentación vectorial de un texto en un espacio de alta dimensión donde la distancia entre vectores refleja similitud semántica. y almacenados en BD vectorial); conversión de la consulta al mismo espacio vectorial; búsqueda de los k vectores más cercanos mediante ANNAlgoritmos de búsqueda que encuentran los vectores más similares a una consulta en tiempo sublineal, sacrificando exactitud por velocidad (HNSW, LSH, PQ).; y devolución de los documentos correspondientes. Esta capacidad permite que "crisis financiera" encuentre documentos sobre "colapso económico" porque sus embeddingsRepresentación vectorial de un texto en un espacio de alta dimensión donde la distancia entre vectores refleja similitud semántica. habitan regiones cercanas del espacio.
| La Tumba Geométrica | El Lecho de Procusto |
|---|---|
| El embeddingRepresentación vectorial de un texto en un espacio de alta dimensión donde la distancia entre vectores refleja similitud semántica. vectorial preserva una representación del texto, pero en un espacio donde el movimiento dialéctico y la progresión argumentativa no son representables. La forma sobrevive; la estructura lógica queda inmóvil —como en un sepulcro. | El Lecho de ProcustoMetáfora del efecto de amputación activa que produce el embedding: lo que desborda las dimensiones disponibles se elimina activamente.: el espacio vectorial ajusta las ideas a sus dimensiones disponibles. Lo que desborda es amputado. Las ideas que no caben en el espacio vectorial no se conservan —se pierden activamente. |
Por qué los sistemas de IA nunca son 100% repetibles, y cómo garantizar la auditabilidad.
En la informática tradicional, si el código es correcto, el resultado es previsible. En la IA generativa, hemos introducido una "fuga" estructural. La no-asociatividad del punto flotantePropiedad de la aritmética float16/float32 por la cual (a+b)+c ≠ a+(b+c) debido al redondeo. Produce variabilidad residual incluso con temperatura=0. y la temperatura de fondo en las GPUs significan que, a nivel microscópico, el sistema nunca es el mismo dos veces. Esta fuga no es un bug menor: es una característica fundamental de cómo se ejecutan estos modelos en hardware moderno.
En aritmética de punto flotante float32, (a+b)+c ≠ a+(b+c) debido a la precisión limitada. En una GPU, miles de operaciones se ejecutan en paralelo. El orden exacto en que se combinan los resultados parciales puede variar entre ejecuciones debido a la planificación dinámica de hilos y diferencias en tiempos de acceso a memoria. Este fenómeno —denominado temperatura de fondo del hardware— es el amplificador de la variabilidad probabilística.
El fenómeno de amplificación no es lineal. En pipelinesSecuencia de procesamiento con múltiples etapas que transforma una consulta del usuario en una respuesta final. donde la salida de un modelo alimenta la entrada del siguiente, pequeñas diferencias iniciales pueden amplificarse de forma exponencial. En un pipeline de tres agentes, una similitud coseno de 0.94 en el agente 1 puede convertirse en 0.43 en el agente 3.
La cascada de incertidumbre describe cómo los errores se amplifican de forma no lineal a través de los nodos del pipelineSecuencia de procesamiento con múltiples etapas que transforma una consulta del usuario en una respuesta final.. El error no se suma: se multiplica.
| Arquitectura | Nodos | Dependencias | Entropía relativa estimada |
|---|---|---|---|
| Modelo único aislado | 1 | Ninguna | 1× |
| RAGArquitectura que combina recuperación de información con generación de texto. Reduce las alucinaciones al anclar las respuestas a fuentes verificables. simple (3 componentes) | 3 | Baja | 2-3× |
| Pipeline lineal 5 agentes | 5 | Media | 5-10× |
| Multi-agente con bucles | 8 | Alta | 10-20× |
| Sistema distribuido multi-nodo | 20+ | Muy alta | 20-50× |
Tres outputs reales de sistemas en producción. Identifica el fallo antes de leer el diagnóstico.
"La fecha actual es [fecha]. Tu knowledge cutoff es [fecha]. Para eventos posteriores, indica explícitamente que no tienes información verificada.") y usar RAG para conocimiento reciente. Lección: la fluidez del output no es señal de corrección — es exactamente la trampa de los LLMs.
A diferencia de un árbol de decisión donde podemos ver cada IF/THEN, en un LLMModelo de lenguaje de gran escala entrenado sobre enormes corpus textuales. Fundamento de los sistemas generativos actuales. el "razonamiento" ocurre en un espacio vectorial de miles de millones de parámetros. Esta opacidad es el mayor obstáculo para la auditoría legal y la rendición de cuentas.
| Elemento | Contenido mínimo requerido | Propósito de auditoría |
|---|---|---|
| Prompt completo | Pregunta usuario + instrucciones sistema + contexto inyectado | Reproducibilidad del input |
| Fragmentos RAG | Textos recuperados + puntuaciones de similitud + fuentes | Verificar grounding |
| Parámetros de generación | Temperatura, top-p, top-k, modelo y versión, seed si aplica | Reproducibilidad del proceso |
| Output completo | Respuesta generada + log-probabilidades + tiempo de generación | Análisis de confianza |
| Traza de agentes | Decisiones de cada agente + herramientas usadas + razonamientos | Atribución de causas |
| Metadata de auditoría | Timestamp, usuario anonimizado, versión del sistema, session_id | Trazabilidad legal |
| Nivel | Descripción | Factibilidad |
|---|---|---|
| Bit exacta | Misma secuencia de tokens exacta | Difícil: depende de hardware específico |
| Semántica | Mismo significado aunque palabras difieran | Posible con control cuidadoso |
| Funcional | Misma utilidad para el usuario | Generalmente alcanzable |
| Estadística | Misma distribución de resultados en N ejecuciones | Siempre posible |
| Herramienta | Enfoque | Trazas LLM | Coste |
|---|---|---|---|
| LangSmith (LangChain) | Específico LLM apps | Muy detalladas | Comercial |
| MLflow | General ML + LLM | Sí | Open source |
| Weights & Biases | Investigación + prod | Sí | Freemium |
| Prompt flow (Microsoft) | Flujos LLM | Sí | Open source |
| Helicone | Observabilidad LLM | Sí | Freemium |
Módulo F — Fundamentos Conceptuales
Cuatro capítulos que traducen lo que ya sabes al mundo de la IA. No empiezas desde cero: expandes lo que conoces.
De los pipelines de datos al pipeline RAG: la misma lógica, nuevas piezas.
Imagina que tu empresa acaba de desplegar un modelo de lenguaje para responder preguntas internas. Los empleados preguntan sobre políticas de RRHH, procedimientos de compras, normativas de seguridad. El modelo responde con confianza. El problema: sus respuestas son de hace dos años, porque así fue como se entrenó.
Este es el problema fundamental de los LLM en producción: el conocimiento está congelado en el momento del entrenamiento. No sabe que la política de teletrabajo cambió en marzo. No sabe que el proveedor B ya no está aprobado. No sabe que el formulario F-17 fue reemplazado por el G-03.
La solución clásica —reentrenar el modelo con datos actualizados— es cara, lenta y no escala para la mayoría de empresas. RAG (Retrieval Augmented GenerationSistema que combina recuperación de información con generación de texto. El modelo busca documentos relevantes en tiempo real antes de generar su respuesta.) resuelve esto de otra manera: en lugar de meter el conocimiento dentro del modelo, se lo damos en el momento en que lo necesita.
La buena noticia es que ya conoces esta arquitectura. La has construido antes. Solo cambian algunos nombres y una pieza nueva en el centro.
La diferencia clave está en el tipo de búsqueda. Tu pipeline ETL busca por coincidencia exacta o por reglas. El pipeline RAG busca por similitud semántica: encuentra los documentos que significan lo mismo que la pregunta, aunque no usen las mismas palabras. "Crisis financiera" encuentra documentos sobre "colapso económico" y "recesión".
Un pipeline RAG tiene dos fases bien separadas, exactamente igual que tu distinción entre el proceso de carga (batch, offline) y el proceso de consulta (online, en tiempo real).
En ETL tienes el concepto de particionado: cómo divides los datos para que sean manejables y buscables. En RAG, el equivalente se llama chunking: cómo divides los documentos en fragmentos antes de convertirlos en embeddings.
Esta decisión es más crítica de lo que parece. Un chunk demasiado pequeño pierde el contexto. Un chunk demasiado grande incluye información irrelevante que "contamina" la búsqueda. Y a diferencia de tu particionado, aquí no hay una clave de partición obvia: el texto no tiene filas.
| Estrategia | Cómo funciona | Mejor para | Riesgo |
|---|---|---|---|
| Tamaño fijo | Fragmentos de N tokens, con solapamiento | Primeros prototipos, corpus homogéneo | Corta frases o conceptos a mitad |
| Por estructura | Respeta párrafos, secciones, encabezados | Documentos bien estructurados (manuales, informes) | Secciones muy largas no se dividen bien |
| Semántico | Detecta cambios de tema para cortar | Textos narrativos sin estructura clara | Más complejo, requiere un modelo adicional |
| Jerárquico | Chunks pequeños con referencia al chunk padre grande | Cuando necesitas precisión Y contexto | Mayor complejidad de indexación y retrieval |
En tu ecosistema de datos ya distingues entre distintos tipos de almacén según el patrón de acceso: OLTP para transacciones, OLAP para análisis, object storage para ficheros, cache para acceso rápido. La base de datos vectorial es un nuevo tipo de almacén, especializado en un único tipo de operación: encontrar los N vectores más parecidos a un vector de consulta.
| Solución | Tipo | Mejor para | Analogía en datos |
|---|---|---|---|
| FAISS | Librería en memoria | Prototipado, volúmenes pequeños | SQLite: potente para lo que es, no para producción |
| Chroma | BD local / embebida | Desarrollo, demos, equipos pequeños | DuckDB: excelente developer experience |
| Pinecone | SaaS gestionado | Producción sin querer gestionar infra | Snowflake: pagas por uso, no gestionas nada |
| Weaviate / Qdrant | Open source auto-alojado | Producción con control total, datos sensibles | PostgreSQL: más trabajo, más control |
| pgvector | Extensión PostgreSQL | Ya tienes PostgreSQL y quieres añadir búsqueda vectorial | TimescaleDB: extensión sobre lo que ya conoces |
Hasta aquí todo te resulta familiar. Hay una pieza genuinamente nueva que no tiene equivalente en tu pipeline ETL: el modelo de embedding. Es el componente que convierte texto en vectores numéricos. Sin él, la búsqueda semántica no existe.
Lo entenderás en profundidad en el Capítulo 2. Por ahora, trátalo como tratas a un servicio externo en tu pipeline: tiene una API, tiene latencia, tiene coste, y su calidad determina la calidad de todo lo que viene después. Si el modelo de embedding es malo, el pipeline RAG es malo, independientemente de lo bueno que sea el LLM al final.
Una pregunta que te harán frecuentemente. La respuesta corta: no son mutuamente excluyentes, pero cada una tiene un perfil de uso distinto. En la práctica, RAG es el punto de partida correcto en la mayoría de los casos. El contexto largo y RAFT son alternativas válidas en circunstancias específicas.
| Criterio | RAG | Fine-tuning | Contexto largo | RAFT |
|---|---|---|---|---|
| Datos cambian con frecuencia | ✅ Actualización inmediata | ❌ Reentrenamiento costoso | ❌ Re-inyección costosa | ❌ Re-entrena con nuevos datos |
| Trazabilidad de fuente | ✅ Citas verificables | ❌ Conocimiento "fundido" | ❌ No hay trazabilidad por fragmento | ❌ Conocimiento "fundido" |
| Auditabilidad del output | Alta | Baja | Muy baja (opaca) | Baja |
| Corpus pequeño y estático | ⚠️ Funciona pero puede ser excesivo | ✅ Ideal | ✅ Si cabe en la ventana | ✅ Ideal |
| Coste por consulta | Bajo | Bajo | Alto (todos los tokens siempre) | Bajo |
| Tiempo al mercado | ✅ Días o semanas | ❌ Semanas o meses | ✅ Días | ❌ Semanas (entrenamiento) |
| Resistencia al ruido del retrieval | ⚠️ El LLM puede desorientarse con chunks irrelevantes | Sin retrieval | ⚠️ Degradación si la info está en el centro | ✅ Entrenado específicamente para ignorar ruido |
| Necesitas tono o estilo específico | ⚠️ Limitado por instrucción | ✅ Modela el comportamiento | ⚠️ Limitado | ✅ Modela también el comportamiento |
Puedes describir la arquitectura de un sistema RAG a un equipo de negocio o a un equipo técnico. Sabes en qué se diferencia de tu pipeline ETL, qué hace cada componente y cuándo elegirías RAG frente a fine-tuning. En tu próxima reunión sobre un proyecto de IA, reconocerás de qué están hablando y podrás hacer las preguntas correctas sobre chunking, modelo de embedding y base de datos vectorial.
Cómo funciona la representación semántica: embeddings desde la perspectiva de alguien que trabaja con datos.
Tu trabajo con datos siempre comienza por el esquema. Defines tipos, relaciones, restricciones. El esquema es la razón por la que dos registros son comparables: ambos tienen una columna precio de tipo float, y puedes comparar 3.50 con 12.99 directamente.
Ahora considera esta pregunta: ¿cómo comparas "el sistema falla cuando hay mucho tráfico" con "la plataforma se cae bajo carga alta"? Son la misma idea. Ningún esquema las conecta. No hay columna común. No hay foreign key. No hay JOIN posible.
Este es el problema que los embeddings resuelven: crear un esquema implícito para el significado. Un esquema que no defines tú, sino que el modelo aprende del lenguaje.
Un embeddingRepresentación numérica de un texto en un espacio vectorial de alta dimensión. Textos con significados similares tienen embeddings cercanos en ese espacio. es, literalmente, una lista de números. Por ejemplo, para un modelo de 4 dimensiones (simplificado):
| Texto | Dim. 1 | Dim. 2 | Dim. 3 | Dim. 4 |
|---|---|---|---|---|
| "gato" | 0.82 | 0.91 | 0.12 | 0.44 |
| "perro" | 0.79 | 0.88 | 0.15 | 0.41 |
| "avión" | 0.03 | 0.11 | 0.95 | 0.88 |
"Gato" y "perro" tienen valores similares en todas las dimensiones: están cerca. "Avión" tiene valores muy diferentes: está lejos. En la práctica, los modelos usan 768, 1024 o 1536 dimensiones, no 4. Pero la lógica es la misma.
En SQL, comparas registros con =, <, >. En el espacio vectorial, la comparación principal es la similitud coseno: mide el ángulo entre dos vectores. Un ángulo de 0° significa que apuntan en la misma dirección (máxima similitud, valor 1.0). Un ángulo de 90° significa que no tienen relación (valor 0.0).
| Par de textos | Similitud coseno típica | Interpretación |
|---|---|---|
| "el sistema falla bajo carga" / "la plataforma cae con mucho tráfico" | 0.88 – 0.94 | Mismo concepto, distinto vocabulario |
| "factura de proveedor" / "invoice from supplier" | 0.85 – 0.92 | Mismo concepto, distinto idioma |
| "análisis de rentabilidad" / "margen de contribución" | 0.70 – 0.82 | Conceptos relacionados |
| "política de devoluciones" / "protocolo de seguridad" | 0.20 – 0.40 | Conceptos no relacionados |
Un modelo de embedding es una red neuronal entrenada con un objetivo específico: colocar textos similares cerca en el espacio vectorial. El entrenamiento típico usa pares de textos (pregunta + respuesta correcta, frase original + paráfrasis, título + abstract) y ajusta los pesos de la red para que los pares estén cerca y los no-pares estén lejos.
Lo que necesitas saber operativamente: el modelo de embedding es un servicio que recibe texto y devuelve un vector. Puedes llamarlo vía API (OpenAI, Cohere, Google) o ejecutarlo localmente (sentence-transformers, BGE, nomic-embed). La elección depende de tus restricciones de coste, latencia y privacidad de datos.
Esta es probablemente la decisión de arquitectura con mayor impacto en la calidad de un sistema RAG, y la que los equipos toman con menos rigor. La referencia objetiva es el benchmark MTEB (Massive Text Embedding Benchmark), disponible en huggingface.co/spaces/mteb/leaderboard. Consúltalo siempre antes de elegir.
| Situación | Modelo recomendado | Por qué |
|---|---|---|
| Prototipo rápido, datos en inglés | text-embedding-3-small (OpenAI) | API lista, buena calidad, bajo coste |
| Producción, datos en español / multilingüe | BGE-M3 o multilingual-e5-large | Top MTEB multilingüe, open source |
| Datos sensibles, on-premise obligatorio | nomic-embed-text o BGE-M3 local | Sin envío de datos a APIs externas |
| Ya en ecosistema Google / Vertex | Gemini Embedding | Integración nativa, 3072 dimensiones |
| ⚠️ Esta tabla tiene fecha de caducidad. El ecosistema de modelos de embedding evoluciona rápido. Antes de elegir, consulta siempre el leaderboard MTEB actualizado y filtra por tu tarea (retrieval) e idioma. Los modelos aquí listados son referencia válida a fecha de esta edición (2026), no necesariamente los mejores en el momento en que leas esto. | ||
El espacio vectorial es extraordinariamente potente para la similitud semántica. Pero tiene límites que importa conocer antes de diseñar sistemas sobre él.
No captura la estructura lógica. "A implica B" y "B implica A" tienen embeddings parecidos, pero son afirmaciones con causalidades opuestas. El espacio vectorial no entiende la dirección del argumento.
Margina lo poco frecuente. El modelo aprende de lo que ha visto mucho. Terminología muy específica de tu sector, jerga interna de tu empresa, acrónimos propios: todo esto puede estar mal representado o directamente ausente. Si tus documentos usan vocabulario muy especializado, necesitarás evaluar si el modelo de embedding lo maneja correctamente.
La negación es difícil. "El sistema funciona" y "el sistema no funciona" tienen embeddings más parecidos de lo que querrías. La negación no ocupa una dirección opuesta en el espacio: es más bien un modificador de poca fuerza vectorial. Esto es una fuente conocida de errores en RAG que no se puede resolver solo con el modelo.
Los embeddings no son solo para texto. Esto es relevante si tu corpus incluye documentos no textuales.
Entiendes qué es un embedding geométricamente, sabes qué mide la similitud coseno y qué no mide, y puedes elegir un modelo de embedding para tu caso de uso con criterios técnicos reales. Cuando alguien proponga un modelo de embedding en una reunión de arquitectura, sabrás qué preguntas hacer: ¿cuál es su recall en vuestro corpus? ¿Soporta vuestro idioma? ¿Hay restricciones de privacidad que impidan usar una API externa?
Lo que sabes sobre calidad del dato se transforma, no desaparece. Pero las reglas cambian.
Tu trabajo en calidad de datos opera sobre certezas. Una fecha es válida o no lo es. Un importe tiene el tipo correcto o no. Una clave foránea existe o no existe. Las reglas de calidad son deterministas: precio > 0 o bien se cumple o bien no.
En sistemas de IA, esta certeza desaparece estructuralmente. El output no es un valor que se puede validar contra un esquema. Es texto generado que puede ser:
Ninguna de estas situaciones tiene una regla determinista que la detecte. La calidad en IA es una distribución, no un valor.
fecha_nacimiento no puede ser posterior a hoy". Ahora intenta formular la regla equivalente para un sistema RAG que responde preguntas de RRHH sobre políticas de empresa. ¿Qué regla escribirías? Probablemente no puedas. Esa dificultad es la señal de que estás en un dominio diferente que requiere un marco diferente.
El marco más operativo para pensar en la calidad de sistemas IA organiza la evaluación en cuatro dimensiones. Son el equivalente a tus dimensiones clásicas de calidad del dato (completitud, consistencia, unicidad, validez), pero adaptadas al output generado.
| Dimensión | Pregunta que responde | Equivalente en datos | Cómo medirla |
|---|---|---|---|
| Fidelidad | ¿La respuesta se basa en los documentos fuente o inventa? | Integridad referencial | Comprueba si cada afirmación tiene soporte en el contexto recuperado |
| Completitud | ¿La respuesta cubre todos los aspectos relevantes de la pregunta? | Completitud de registros | Compara con respuestas de referencia (golden dataset) |
| Robustez | ¿El sistema funciona igual para preguntas formuladas de forma diferente? | Consistencia | Parafrasea las mismas preguntas y compara respuestas |
| Equidad | ¿El sistema funciona igual para todos los grupos de usuarios? | No tiene equivalente directo | Compara calidad por segmentos: idioma, perfil, tipo de pregunta |
En calidad de datos tienes tablas de referencia: catálogos de países, listas de productos válidos, rangos aceptables. En evaluación de IA, el equivalente es el golden dataset: una colección de pares (pregunta, respuesta de referencia) construida y validada manualmente por expertos del dominio.
Es tu tabla de verdad. Sin él, no puedes medir nada con rigor. Todo lo demás —métricas automáticas, herramientas de evaluación— necesita este punto de referencia para ser significativo.
Estas son las métricas más usadas en evaluación de sistemas RAG. Las incluyes porque las verás en cualquier conversación técnica sobre calidad en IA.
| Métrica | Qué mide | Rango | Cuándo usarla |
|---|---|---|---|
| Faithfulness (RAGAS) | ¿Las afirmaciones de la respuesta están soportadas por el contexto recuperado? | 0–1 Umbral orientativo: >0.75 para producción, pero varía por dominio, tipo de pregunta y modelo evaluador. No lo trates como universal. |
Siempre. Es tu primera línea de defensa contra alucinaciones. |
| Answer Relevance (RAGAS) | ¿La respuesta realmente contesta la pregunta? | 0–1 | Cuando el sistema tiende a responder "de lado" sin responder directamente. |
| Context Recall | ¿El retrieval recuperó los documentos relevantes? | 0–1 | Para diagnosticar si el problema está en el retrieval o en la generación. |
| BLEU / ROUGE | Solapamiento léxico entre respuesta generada y referencia | 0–1 | Útil como proxy rápido, pero no captura calidad semántica. Úsalas con precaución. |
| LLM-as-judge | Un LLM evalúa la calidad de la respuesta según criterios explícitos | Escala definida | Cuando necesitas escalar la evaluación más allá de lo que el golden dataset cubre. |
En tu pipeline de datos tienes monitorización de calidad continua: alertas cuando un porcentaje de nulos sube, cuando la distribución de un campo cambia, cuando aparecen valores fuera de rango. El equivalente en sistemas IA es un pipeline de evaluación continua sobre muestras de producción.
Aquí tu experiencia en calidad del dato es directamente transferible y es donde más valor aportarás en un equipo de IA. El corpus de documentos que alimenta el sistema RAG tiene exactamente los mismos problemas que tus fuentes de datos:
En tus sistemas de calidad tienes umbrales y acciones: si el null rate supera el 5%, bloqueas la carga. Si la distribución cambia más de 2 desviaciones estándar, lanzas una alerta. En sistemas IA, el mismo principio aplica pero sobre dimensiones de calidad probabilísticas.
| Situación | Umbral orientativo | Acción recomendada |
|---|---|---|
| Faithfulness score < 0.7 | Alto riesgo de alucinación | No mostrar la respuesta. Escalar a humano o pedir reformulación. |
| Context recall < 0.5 | El retrieval no encuentra los documentos relevantes | Revisar chunking y modelo de embedding. El problema está arriba del pipeline. |
| Calidad muy inferior en un segmento de usuarios | Brecha > 15% vs. media | Investigar si el corpus cubre bien ese segmento. Posible sesgo. |
| Preguntas sin respuesta por falta de cobertura | > 20% del total | Ampliar el corpus. No es un problema del LLM, es un problema de datos. |
Puedes liderar la conversación de calidad en un proyecto de IA. Sabes qué medir (las cuatro dimensiones), con qué (golden dataset + métricas como RAGAS), cuándo actuar (umbrales sobre faithfulness, recall, equidad) y dónde el problema suele estar (el corpus, antes que el LLM). Tu experiencia en calidad del dato no es bagaje del pasado: es tu ventaja competitiva en este dominio.
Linaje, auditoría y gobernanza: el trabajo que ya haces, en un territorio más complejo.
En tu trabajo, el linaje del dato responde a: ¿de dónde viene este valor, qué transformaciones ha sufrido y quién lo tocó? Es la cadena de custodia del dato. En sistemas IA, la misma pregunta existe pero la respuesta tiene más capas.
Cuando un sistema RAG produce una respuesta, la cadena completa es:
Esa es la cadena de linaje completa. Si cambias cualquier eslabón —el modelo de embedding, la versión del corpus, el prompt del sistema— la respuesta puede cambiar aunque la pregunta sea idéntica. La reproducibilidad en IA requiere fijar explícitamente cada eslabón de la cadena.
En producción, necesitas un nivel de logging que permita reconstruir cualquier respuesta posterior a su generación. Esto es el equivalente al audit trail de tus sistemas de datos.
| Qué loggear | Por qué | Formato recomendado |
|---|---|---|
| Query original del usuario | Sin ella, no puedes reproducir el contexto | Texto completo + timestamp + user_id anonimizado |
| Documentos recuperados | Para saber qué vio el modelo antes de responder | IDs de chunks + similitud coseno + versión del índice |
| Versión del modelo de embedding | El mismo texto produce vectores distintos con distintas versiones | model_id + versión |
| Versión del corpus / índice vectorial | Los documentos cambian; necesitas saber cuál estaba activo | corpus_version + fecha de última actualización |
| Versión del LLM y prompt | Las actualizaciones de modelo cambian el comportamiento | model_id + versión + hash del prompt de sistema |
| Respuesta generada completa | Para auditoría posterior y análisis de calidad | Texto + latencia + tokens de input/output |
interaction_id único para cada consulta y propágalo a todos los logs. Es la clave foránea que une query → retrieval → generación → feedback del usuario. Sin él, la auditoría posterior es imposible. Es exactamente lo mismo que el trace_id que usas en sistemas distribuidos.
En datos, reproducibilidad significa que si ejecutas la misma query sobre los mismos datos, obtienes el mismo resultado. En sistemas IA, la reproducibilidad es estructuralmente más difícil por tres razones:
Esto tiene implicaciones directas para el cumplimiento normativo. Si el AI Act o tu regulador sectorial requieren que puedas explicar una decisión tomada hace seis meses, necesitas haber preservado en ese momento todo el contexto: qué modelo, qué corpus, qué respuesta. Retroactivamente, no puedes reproducirlo.
En datos tienes un catálogo de datos: qué datasets existen, quién es el propietario, cuál es la sensibilidad, dónde está almacenado. En sistemas IA necesitas el equivalente para modelos: un catálogo de modelos.
El AI Act europeo (en vigor desde agosto 2024, mayoría de obligaciones desde agosto 2026) clasifica los sistemas de IA por nivel de riesgo. Como profesional de datos en una organización europea, hay tres cosas que te afectan directamente:
Si tu sistema es de alto riesgo (recursos humanos, crédito, educación, infraestructura crítica), necesitarás: documentación técnica, gestión de riesgos documentada, monitorización continua de calidad, y capacidad de auditoría. Es el GDPR del dato, pero para los modelos.
Si tu sistema usa un modelo de propósito general (GPT-4, Claude, Gemini) en una aplicación propia, eres el "deployer" según el AI Act. Heredas obligaciones aunque no hayas entrenado el modelo.
La trazabilidad que acabamos de discutir no es opcional en sistemas de alto riesgo: el AI Act la requiere explícitamente. Tu arquitectura de logging es una obligación de cumplimiento, no solo buena práctica.
Para cualquier aplicación de IA en tu organización, dos preguntas determinan el nivel de riesgo real y las medidas de control necesarias:
¿Es verificable el output? ¿Puede un humano comprobar si la respuesta del sistema es correcta en un tiempo razonable? Un resumen de un documento es verificable: puedes leer el original. Una predicción de demanda a 18 meses no lo es en el momento de tomarla.
¿Es reversible la decisión? Si el sistema se equivoca y alguien actúa basándose en esa respuesta, ¿puede corregirse el daño? Mostrar un producto incorrecto en una recomendación es reversible. Rechazar una solicitud de crédito puede no serlo para el afectado.
| Verificabilidad | Reversibilidad | Nivel de riesgo | Control mínimo necesario |
|---|---|---|---|
| Alta (inmediata) | Total | Bajo | Monitorización básica, logs estándar |
| Media (experto) | Parcial | Medio | Golden dataset, evaluación periódica, revisión de casos límite |
| Baja o imposible | Irreversible | Alto | No automatizar la decisión. IA como apoyo; decisión final humana siempre. |
Puedes diseñar la arquitectura de trazabilidad de un sistema de IA: qué loggear, cómo, y por qué. Sabes por qué la reproducibilidad es más difícil que en datos y qué implicaciones tiene para el cumplimiento normativo. Puedes aplicar la matriz de verificabilidad/reversibilidad para determinar el nivel de control apropiado para cualquier caso de uso de IA en tu organización. Y sabes qué obligaciones del AI Act te afectan como deployer de sistemas que usan modelos de terceros.
Fallos que ocurren en la fase ETL→RAG: el territorio que mejor conoces, pero con patrones de error genuinamente distintos.
Contexto: Sistema RAG sobre manuales técnicos de instalación. Chunking por párrafo, tamaño ~150 tokens. Corpus: 200 PDFs.
Contexto: Sistema RAG de política interna de RRHH. Funciona bien durante 4 meses. En el mes 5, el equipo actualiza el documento de política de vacaciones.
Contexto: Sistema RAG para búsqueda en corpus de patentes farmacéuticas en español. Modelo de embedding: text-embedding-ada-002 (inglés, propósito general).
Antes de pasar al Módulo 2, verifica que puedes responder estas tres preguntas. No hay respuestas aquí: son para ti. Si no puedes responderlas, vuelve al capítulo correspondiente.
Tu empresa tiene un repositorio de 5.000 documentos técnicos internos (manuales, procedimientos, normativas) y quiere que los empleados puedan hacerles preguntas en lenguaje natural. ¿Qué arquitectura propones? Describe las fases, los componentes principales y la decisión más crítica que tomarías primero.
El sistema lleva dos semanas en producción y el equipo de negocio se queja de que "las respuestas a veces son incorrectas". ¿Cómo diagnosticas el problema? ¿Qué métricas mides primero? ¿Qué diferencia hay entre un problema de embedding, un problema de retrieval y un problema del LLM?
El sistema de documentos técnicos va a empezar a usarse para orientar decisiones de mantenimiento en instalaciones industriales. ¿Cambia esto algo en tu arquitectura? ¿Qué obligaciones de trazabilidad y auditoría activarías? ¿Qué posición ocupa este sistema en la matriz verificabilidad/reversibilidad?
Antes de pasar al Módulo 2, produce este documento. No es opcional si tu objetivo es demostrar competencia real. La comprensión sin producción no genera evidencia de lo que sabes.
Contexto: Tu organización tiene un corpus de 8.000 documentos (contratos, normativas, procedimientos internos, correos archivados). El equipo de dirección quiere que los empleados puedan hacer preguntas en lenguaje natural y obtener respuestas con cita de fuente.
Tu documento debe contener exactamente esto:
Tu sistema RAG recupera un fragmento del corpus interno que dice que el plazo de garantía es de 2 años. Pero el LLM, basándose en su entrenamiento sobre normativa europea estándar, genera una respuesta que menciona 3 años (que es el plazo legal general bajo la Directiva 2019/771). El fragmento recuperado es la política interna de tu empresa, que es más restrictiva que la ley.
Tu tarea: Elige una opción. Escribe 5 líneas justificando por qué y qué condición haría que cambiaras de opción. No hay respuesta universalmente correcta: la decisión depende de factores que tú debes nombrar explícitamente.
Módulo 1 — El puente
Seis capítulos sobre los conceptos que son genuinamente nuevos: cómo funciona un LLM por dentro, búsqueda vectorial avanzada, diagnóstico RAG, prompt engineering, modelos de razonamiento y agentes.
Sin matemáticas innecesarias. Con la precisión suficiente para tomar decisiones de arquitectura correctas.
La confusión más frecuente sobre los LLM nace de una metáfora equivocada: pensar que el modelo tiene una base de conocimiento que consulta, como una base de datos. No es así —pero tampoco es un simple predictor de tokens vacío de contenido.
Un LLM es una función matemática de miles de millones de parámetros que, dado un texto de entrada, calcula la distribución de probabilidad sobre los posibles tokens que podrían seguir. Todo el "conocimiento" está codificado como pesos numéricos en esa función, aprendidos durante el entrenamiento. No hay filas, ni tablas, ni índices. Solo números.
La pieza central de la arquitectura Transformer es el mecanismo de atenciónMecanismo que permite al modelo ponderar la importancia de cada token del contexto al generar el siguiente. "Prestar atención" a las partes relevantes del input.. Para entenderlo sin matemáticas, usa esta imagen:
Imagina que estás leyendo la frase: "El banco estaba lleno de gente porque había cola". Para entender "banco" (¿financiero o asiento de parque?), tu cerebro mira al resto de la frase y pondera la importancia de cada palabra. "Gente", "cola" y "lleno" tienen mucho peso. "había" y "de" tienen poco. Eso es la atención.
El modelo hace lo mismo para cada token, mirando a todos los demás tokens del contexto y calculando cuánto "peso" darle a cada uno. Esto ocurre en múltiples capas paralelas llamadas "cabezas de atención", cada una especializada en detectar distintos tipos de relación: sintáctica, semántica, de referencia, temporal.
El modelo no genera toda la respuesta a la vez. La construye un token cada vez, de izquierda a derecha, en un proceso iterativo:
La consecuencia más importante de este proceso: el modelo se compromete con cada token que genera. Una vez que ha escrito "La respuesta es correcta", los siguientes tokens están condicionados por esa elección. Si el primer token era incorrecto, el modelo construirá un argumento coherente en torno a ese error, no lo corregirá.
Cuando el modelo calcula la distribución de probabilidad sobre los posibles próximos tokens, no elige siempre el más probable. La temperatura controla cuánta aleatoriedad se introduce en esa elección:
| Temperatura | Comportamiento | Úsala para | Riesgo |
|---|---|---|---|
| 0.0 – 0.2 | Casi determinista. El token más probable domina. | Extracción de datos, código, hechos verificables | Respuestas repetitivas y poco creativas |
| 0.3 – 0.7 | Equilibrio: fiable con algo de variedad | Asistentes, resúmenes, explicaciones | Variabilidad controlada pero presente |
| 0.8 – 1.2 | Alta creatividad, más sorpresas | Brainstorming, generación creativa | Más alucinaciones posibles |
| > 1.2 | Comportamiento errático | Solo experimentación | Incoherencias frecuentes |
La ventana de contexto es la cantidad máxima de texto que el modelo puede procesar en una sola llamada. Modelos actuales tienen ventanas de 128K tokens (GPT-4o), 200K (Claude 3.7 Sonnet) o 1M tokens (Gemini 1.5 Pro). Un token equivale aproximadamente a 0.75 palabras en inglés o 0.6 palabras en español.
| Longitud | Equivalente aproximado | Cabe en 128K tokens |
|---|---|---|
| 1.000 tokens | ~750 palabras / 1 artículo | ✅ Holgado |
| 10.000 tokens | ~7.500 palabras / informe largo | ✅ |
| 50.000 tokens | ~37.500 palabras / libro fino | ✅ |
| 100.000 tokens | ~75.000 palabras / novela corta | ⚠️ Cerca del límite |
| 500.000 tokens | ~375.000 palabras / enciclopedia | ❌ Necesita RAG |
El fenómeno "lost in the middle" no es un problema de memoria ni de atención dispersa. Es un sesgo posicional inherente a la arquitectura Transformer, documentado empíricamente por Liu et al. (2024) en un estudio sobre recuperación de información en contextos largos.
Durante el entrenamiento, los LLM procesan documentos donde la información relevante aparece con mayor frecuencia al principio (resúmenes, introducciones) o al final (conclusiones, referencias). El modelo aprende este sesgo estadístico del corpus de entrenamiento y lo reproduce en inferencia: asigna más peso a los tokens de las posiciones extremas del contexto.
El resultado es una curva de rendimiento en forma de U: precisión alta cuando la información crítica está en las primeras o últimas posiciones, degradación significativa cuando está en el centro. El sesgo no depende de si el modelo "recuerda" el contenido —lo ha procesado— sino de cuánto peso asigna a esa posición al generar la respuesta.
La evidencia empírica disponible (Liu et al. 2024 y benchmarks posteriores como NIAH evolucionado) sugiere los siguientes umbrales orientativos — no son valores exactos universales, sino rangos donde el degradamiento empieza a ser significativo en tareas que requieren razonamiento multi-paso:
| Rango de contexto | Modelos pre-2025 Liu et al. 2024 |
Modelos 2025-2026 Gemini 2.0, Claude 3.7, GPT-4o |
Implicación práctica |
|---|---|---|---|
| Hasta ~32K tokens | ✅ Estable. Sesgo posicional existe pero es manejable. | ✅ Estable con mejoras adicionales en precisión multi-paso. | Contexto largo viable para tareas de recuperación simple en ambas generaciones. |
| ~32K–80K tokens | ⚠️ Degradación notable en tareas multi-paso. Pérdida de hilo en razonamientos que cruzan secciones distantes. | ⚠️ Mejora significativa, pero la degradación en tareas multi-hop complejas persiste. No apto para razonamiento de alta precisión. | Zona de riesgo que se ha reducido, pero no eliminado. Evalúa empíricamente sobre tu tarea antes de asumir estabilidad. |
| Más de ~80K tokens | 🔴 Degradación severa. Alta variabilidad incluso a temperatura 0. | 🔴 Degradación reducida, pero aún relevante en tareas que exigen recuperación precisa de múltiples hechos dispersos. | Solo para análisis globales o temáticos donde la exactitud factual puntual no es crítica. Validar empíricamente es obligatorio antes de producción. |
La metáfora más útil para entender el rol de cada arquitectura es esta: RAG es el disco duro del sistema (recupera fragmentos específicos de un corpus grande), y el contexto largo es la memoria de trabajo (mantiene activo un conjunto de documentos para análisis conjunto). Son complementarios, no alternativos. La confusión viene de usarlos para el mismo propósito.
| Tipo de tarea | Arquitectura adecuada | Por qué |
|---|---|---|
| Recuperar un dato específico de un corpus grande | RAG | El retrieval localiza el fragmento correcto. El contexto largo lo haría competir con miles de fragmentos irrelevantes. |
| Analizar globalmente un documento único y largo | Contexto largo (si cabe) | La tarea requiere visión de conjunto, no recuperación de un hecho puntual. |
| Conectar información de múltiples documentos | RAG o GraphRAG | El contexto largo degrada en tareas multi-hop con información dispersa. |
| Corpus estático pequeño (<50K tokens), uso intensivo | Contexto largo + caching | El caching reduce el coste a una fracción; la arquitectura se simplifica sin retrieval. |
| Preguntas factuales exactas con trazabilidad requerida | RAG siempre | El contexto largo no ofrece trazabilidad: no sabes qué fragmento influyó la respuesta. |
El entrenamiento de un LLM tiene una fecha de corte: todo lo ocurrido después de esa fecha no existe para el modelo. Pero la implicación práctica es más sutil que un simple "no sabe lo reciente":
Solución: RAG para conocimiento que cambia; instrucción explícita de la fecha actual en el prompt de sistema para tareas que dependen del tiempo.
Tienes un modelo mental correcto de cómo funciona un LLM: no es una base de datos, es una función estadística que genera token a token. Entiendes por qué la temperatura importa, por qué la ventana de contexto tiene límites reales, y por qué temperatura 0 no garantiza corrección. Cuando un colega diga "el modelo no sabe esto", podrás distinguir si es un problema de knowledge cutoff, de ventana de contexto o de distribución estadística del entrenamiento.
Por qué la búsqueda semántica sola no es suficiente, y cómo combinarla con lo mejor de la búsqueda clásica.
Supón que tienes un corpus de contratos y el usuario busca el número de contrato C-2024-0891. La búsqueda semántica probablemente falle: ese código no tiene "significado" semántico, solo identidad exacta. Lo mismo ocurre con nombres de personas, códigos de producto, IDs de sistema o referencias legales.
La búsqueda semántica brilla con conceptos y sinónimos. La búsqueda léxica clásica brilla con términos exactos. Los sistemas reales necesitan ambas.
La solución estándar en producción combina ambas vías y fusiona los resultados. El algoritmo de fusión más extendido es Reciprocal Rank Fusion (RRF)Algoritmo que combina listas de resultados de distintos sistemas de búsqueda. Para cada resultado, calcula 1/(rango + k) y suma las puntuaciones de cada lista. Favorece documentos que aparecen en el top de múltiples listas.:
El retrieval inicial (BM25 + vectorial) es eficiente pero impreciso: recupera 20-50 candidatos rápidamente. El re-ranking evalúa esos candidatos con más profundidad para ordenarlos mejor antes de pasarlos al LLM.
| Enfoque | Cómo funciona | Coste | Ganancia típica |
|---|---|---|---|
| Sin re-ranking | Los top-K del retrieval van directamente al LLM | Ninguno | Línea base |
| Cross-encoder | Un modelo evalúa cada par (query, documento) conjuntamente | Alto (O(n) llamadas) | +10-20% en calidad |
| Cohere Rerank | API de re-ranking gestionada con modelos propios de Cohere | Medio (por llamada API) | +8-15% |
| LLM-as-reranker | El LLM puntúa la relevancia de cada fragmento | Alto (tokens por fragmento) | +5-12%, variable |
Con millones de vectores, comparar la query contra todos ellos uno a uno es computacionalmente inviable. Los algoritmos de búsqueda aproximada de vecinos (ANN) resuelven esto sacrificando una pequeña cantidad de precisión a cambio de velocidad:
| Algoritmo | Velocidad | Precisión | Memoria | Mejor para |
|---|---|---|---|---|
| HNSW | Muy alta | Muy alta | Alta | Estándar de facto en producción |
| IVF + PQ | Muy alta | Media | Muy baja | Corpus masivos (>100M vectores) con RAM limitada |
| Flat (fuerza bruta) | Baja | Perfecta | Alta | Corpus pequeño (<100K) o evaluación de calidad |
| LSH | Alta | Media | Media | Prototipos, cuando HNSW es excesivo |
Antes de evaluar la calidad de la respuesta del LLM, evalúa la calidad del retrieval. Son problemas independientes con soluciones independientes. Si el retrieval falla, el LLM no puede compensarlo.
| Métrica | Qué mide | Umbral orientativo en producción |
|---|---|---|
| Hit Rate@5 | ¿El documento correcto aparece en los 5 primeros resultados? | > 0.85 |
| MRR (Mean Reciprocal Rank) | Posición media del primer resultado relevante | > 0.70 |
| Recall@10 | ¿Cuántos de los documentos relevantes aparecen en los 10 primeros? | > 0.90 |
| NDCG | Calidad del ranking ponderada por posición y relevancia | Depende del dominio |
La búsqueda vectorial estándar trata cada fragmento de forma independiente. Pero algunos tipos de conocimiento son inherentemente relacionales: "¿qué departamentos dependen del sistema X?" o "¿qué proveedores trabajan con el cliente Y?" requieren navegar relaciones, no encontrar fragmentos similares.
GraphRAGArquitectura que combina un grafo de conocimiento con búsqueda vectorial. Permite recuperar información respetando la estructura relacional del conocimiento (jerarquías, dependencias, causalidades). complementa la búsqueda vectorial con un grafo de conocimiento que preserva esas relaciones. No es un reemplazo: es un complemento para casos donde la estructura relacional es esencial para la respuesta correcta.
| Tipo de pregunta | Mejor enfoque |
|---|---|
| "¿Qué dice el manual sobre mantenimiento preventivo?" | Búsqueda vectorial |
| "¿Cuándo fue el último mantenimiento del equipo A-23?" | Text-to-SQL sobre BD operacional |
| "¿Qué equipos dependen del componente C-7 que está en reparación?" | GraphRAG (relaciones de dependencia) |
| "Encuentra todas las facturas del proveedor X del Q3" | BM25 + filtros de metadatos |
Puedes diseñar la estrategia de recuperación adecuada para cada tipo de consulta. Sabes cuándo usar búsqueda vectorial sola, cuándo añadir BM25, cuándo incorporar re-ranking y cuándo el problema requiere GraphRAG. Y tienes las métricas concretas para saber si tu retrieval está funcionando antes de culpar al LLM.
Cómo encontrar exactamente dónde falla un sistema RAG y qué hacer en cada caso.
Cuando un sistema RAG produce una respuesta incorrecta, el error está en uno de cinco lugares. Diagnosticarlos en orden —de upstream a downstream— te ahorra horas de búsqueda equivocada.
| # | Punto de fallo | Síntoma | Diagnóstico rápido |
|---|---|---|---|
| 1 | Corpus de entrada | Respuestas correctas pero desactualizadas, o ausencia de respuesta para preguntas que deberían estar cubiertas | ¿Existe el documento correcto en el corpus? ¿Cuándo fue indexado? |
| 2 | Chunking | Los fragmentos recuperados tienen el tema correcto pero les falta contexto para responder completamente | Inspecciona manualmente los chunks recuperados. ¿Están completos? ¿Cortan ideas a mitad? |
| 3 | Embedding / Retrieval | Los fragmentos recuperados no son los relevantes para la pregunta | Mide Hit Rate@5 con tu golden dataset. Si < 0.80, el problema está aquí. |
| 4 | Prompt de sistema | El LLM ignora el contexto recuperado o responde de memoria a pesar del grounding | Incluye en el prompt: "Responde ÚNICAMENTE basándote en los fragmentos siguientes. Si la información no está, dilo." |
| 5 | LLM (generación) | El contexto es correcto pero la respuesta es incorrecta, incompleta o mal formulada | Prueba el mismo prompt con el contexto recuperado en el playground del modelo. ¿El modelo solo también falla? |
valid_from y valid_until a cada documento indexado. Filtra por metadatos en el retrieval antes de buscar por similitud.Uno de los fallos más insidiosos en RAG es el "grounding falso": el modelo recibe el contexto correcto pero lo ignora y responde desde su memoria de entrenamiento, citando incorrectamente como si se basara en los fragmentos. El usuario ve las citas y asume que la respuesta está verificada. No lo está.
La evaluación no acaba cuando el sistema se despliega. El corpus cambia, las preguntas evolucionan, y los modelos de embedding y LLM se actualizan. Sin monitorización continua, la degradación es silenciosa.
| Qué monitorizar | Frecuencia | Señal de alerta |
|---|---|---|
| Hit Rate@5 sobre golden dataset | Diario (automatizable) | Caída > 5 puntos porcentuales respecto al baseline |
| Faithfulness score sobre muestra de producción | Semanal | < 0.75 en promedio semanal |
| Tasa de "no sé / no tengo información" | Diario | Subida brusca = corpus desactualizado o pregunta nueva no cubierta |
| Feedback negativo de usuarios | Tiempo real | Cualquier clúster de feedback negativo sobre el mismo tipo de pregunta |
| Latencia del pipeline completo | Tiempo real | P95 > 2× del baseline |
Un error frecuente es confundir "evaluar el sistema" con ejecutar métricas sobre un dataset de prueba. Eso es evaluación offline, y es solo la mitad del trabajo.
El peor fallo de un sistema RAG no es el que lanza un error —ese lo detectas. Es el que devuelve una respuesta plausible, bien escrita y completamente incorrecta, sin ninguna señal de alarma. Estos son los cuatro modos de fallo silencioso más frecuentes en producción:
La regla práctica: si tu sistema RAG nunca devuelve una respuesta de baja confianza o un "no encontré información suficiente", no es porque funcione bien —es porque no tienes umbral de rechazo configurado.
Cuando un sistema RAG falla, sabes exactamente dónde mirar primero y qué herramientas usar para diagnosticarlo en menos de 15 minutos. Tienes un menú de técnicas de optimización para cada capa del pipeline. Y sabes qué monitorizar en producción para detectar la degradación antes de que llegue al usuario.
No es magia ni intuición: es ingeniería sistemática con principios claros y resultados medibles.
Piensa en un prompt como en una especificación funcional: cuanto más ambigua, más impredecible el resultado. El LLM intentará rellenar cada ambigüedad con lo estadísticamente más probable, que puede no ser lo que necesitas.
Un buen prompt responde explícitamente a estas cinco preguntas:
Proporcionar 2-5 ejemplos del par (input, output esperado) dentro del prompt es la técnica con mayor retorno por inversión. El modelo aprende el patrón de tus ejemplos mucho mejor que de cualquier descripción abstracta.
Tarea: Clasifica el sentimiento de estas reseñas como POSITIVO, NEGATIVO o NEUTRO.
Ejemplos:
Reseña: "El producto llegó en perfectas condiciones, muy satisfecho."
Sentimiento: POSITIVO
Reseña: "Tardó 3 semanas en llegar, pero la calidad es aceptable."
Sentimiento: NEUTRO
Reseña: "Completamente diferente a la foto. No lo recomiendo."
Sentimiento: NEGATIVO
Ahora clasifica:
Reseña: "{{reseña_a_clasificar}}"
Sentimiento:
Para problemas que requieren razonamiento en múltiples pasos, pedir al modelo que "piense paso a paso" antes de dar la respuesta mejora significativamente la calidad. El razonamiento visible también facilita detectar cuándo el modelo comete un error intermedio.
Analiza si este contrato cumple las tres condiciones siguientes.
Razona cada condición por separado antes de dar tu conclusión final.
Condición 1: El plazo de entrega no puede superar 30 días.
Condición 2: La garantía debe ser de mínimo 2 años.
Condición 3: El precio no puede variar más de un 5% sin preaviso escrito.
Contrato: {{texto_del_contrato}}
Análisis por condición:
1.
Cuando necesitas que el output sea parseable por código, no confíes en que el modelo produzca JSON correctamente por instrucción. Usa el modo de salida estructurada de la API (disponible en OpenAI, Anthropic, Google) que garantiza el formato a nivel de modelo, no de prompt:
// OpenAI — structured output garantizado por API
const response = await openai.chat.completions.create({
model: "gpt-4o",
response_format: { type: "json_object" }, // garantiza JSON válido
messages: [{
role: "system",
content: "Extrae los campos: nombre, fecha, importe. Devuelve SOLO JSON."
}, {
role: "user",
content: texto_factura
}]
});
El prompt de sistema (system prompt) se ejecuta antes que cualquier mensaje del usuario y define el comportamiento base del modelo para toda la conversación. Es donde configuras: el rol, las restricciones globales, el tono, el formato por defecto, y las reglas de grounding si usas RAG.
| Error | Qué ocurre | Corrección |
|---|---|---|
| Instrucción negativa sola | "No uses lenguaje técnico" → el modelo sabe qué evitar pero no qué hacer | Añade la alternativa: "Usa lenguaje accesible para alguien sin formación técnica" |
| Prompt ambiguo | "Resume esto" → ¿en cuántas palabras? ¿para qué audiencia? ¿con qué foco? | Especifica: "Resume en máximo 3 párrafos para un director de negocio sin contexto técnico, enfocando en el impacto económico" |
| Más instrucciones ≠ mejor | 20 instrucciones contradictorias o de baja prioridad diluyen las importantes | Máximo 5-7 instrucciones claras. Prioriza explícitamente si hay conflicto posible. |
| No incluir ejemplos | La descripción abstracta de "el tono que quiero" no se transfiere bien | Un ejemplo del output deseado vale más que un párrafo de descripción |
| Prompt no versionado | El equipo modifica el prompt sin registro; los cambios de calidad son inexplicables | Trata el prompt como código: versiona, documenta cambios, mide impacto antes de cambiar en producción |
Un cambio de prompt es un cambio de comportamiento del sistema. Debe evaluarse con el mismo rigor que cualquier cambio de código en producción:
| Métrica | Qué mide | Cómo calcularla |
|---|---|---|
| Robustez | El mismo significado produce respuestas equivalentes | Parafrasear la misma pregunta 5–10 veces, medir similitud semántica de las respuestas (coseno > 0.85 como umbral) |
| Sensibilidad | Pequeños cambios en el prompt producen grandes cambios en la salida | Añadir palabras irrelevantes ("por favor" / "urgente") y ver si la respuesta cambia semánticamente |
| Especificidad | El prompt fuerza al modelo a ceñirse a lo pedido | % de respuestas que siguen el formato esperado; % que evitan información no solicitada |
| Estabilidad | El mismo prompt con temperatura baja produce respuestas consistentes | Ejecutar N veces (N≥20) la misma consulta a temperatura 0.2–0.3 y medir varianza de la respuesta |
El ajuste manual de prompts —probar, observar, modificar, repetir— es el método más común, pero también el menos eficiente. Existen frameworks que tratan el prompt como un programa optimizable, no como una instrucción de lenguaje natural.
DSPy (Stanford, 2023–2025) abstrae el prompt engineering como un problema de optimización. En lugar de escribir el prompt manualmente, defines la firma de entrada/salida, los módulos que combinan las llamadas al LLM, unos pocos ejemplos de entrenamiento y una métrica de calidad. DSPy busca automáticamente la mejor instrucción, el mejor formato de few-shot y la mejor estructura de razonamiento.
# pip install dspy-ai ragas sentence-transformers
import dspy
from dspy.teleprompt import BootstrapFewShot
from dspy.evaluate import Evaluate
# 1. Configurar el LM
lm = dspy.OpenAI(model='gpt-4o-mini', max_tokens=300)
dspy.settings.configure(lm=lm)
# 2. Definir la firma: declara qué entra y qué sale
class ResponderConContexto(dspy.Signature):
"""Responde a la pregunta basándote ÚNICAMENTE en el contexto proporcionado."""
contexto = dspy.InputField(desc="Fragmentos de documentos relevantes")
pregunta = dspy.InputField()
respuesta = dspy.OutputField(desc="Respuesta concisa, citando la fuente cuando sea posible")
# 3. Definir el módulo (cómo se llama al LLM)
class RAGModule(dspy.Module):
def __init__(self):
self.responder = dspy.ChainOfThought(ResponderConContexto)
def forward(self, contexto, pregunta):
return self.responder(contexto=contexto, pregunta=pregunta)
# 4. Golden dataset (20-200 ejemplos son suficientes)
ejemplos = [
dspy.Example(
contexto="El RGPD establece un plazo de un mes para responder a solicitudes de acceso.",
pregunta="¿Cuál es el plazo del RGPD?",
respuesta="Un mes."
),
dspy.Example(
contexto="La garantía legal mínima en la UE es de dos años desde la entrega.",
pregunta="¿Cuánto dura la garantía legal?",
respuesta="Dos años desde la entrega."
),
# Añade 15-20 ejemplos más de tu dominio específico
]
train_set = [ex.with_inputs("contexto", "pregunta") for ex in ejemplos]
# 5. Definir la métrica de calidad
def metric_exactitud(example, prediction, trace=None):
return example.respuesta.strip().lower() == prediction.respuesta.strip().lower()
# Para respuestas abiertas, usa similitud semántica:
from sentence_transformers import SentenceTransformer, util
_st = SentenceTransformer('all-MiniLM-L6-v2')
def metric_semantica(example, prediction, trace=None):
e1 = _st.encode(example.respuesta)
e2 = _st.encode(prediction.respuesta)
return 1.0 if util.cos_sim(e1, e2).item() > 0.85 else 0.0
# 6. Optimizar (puede requerir decenas de llamadas a la API)
optimizador = BootstrapFewShot(metric=metric_exactitud, max_bootstrapped_demos=4)
modelo_optimizado = optimizador.compile(RAGModule(), trainset=train_set)
# 7. Evaluar sobre un conjunto de test independiente
evaluador = Evaluate(devset=train_set, metric=metric_exactitud, num_threads=4)
score = evaluador(modelo_optimizado)
print(f"Exactitud tras optimización: {score:.1%}")
# 8. Guardar el prompt optimizado como artefacto de producción
modelo_optimizado.save("prompts/rag_v2.json") # JSON con instrucciones + ejemplos óptimos
from ragas.metrics import faithfulness, answer_relevancy
from ragas import evaluate
from datasets import Dataset
# Métrica de faithfulness para usar dentro de DSPy
def metric_faithfulness_dspy(example, prediction, trace=None):
"""Mide si la respuesta está soportada por el contexto recuperado."""
dataset = Dataset.from_dict({
"question": [example.pregunta],
"answer": [prediction.respuesta],
"contexts": [[example.contexto]],
})
result = evaluate(dataset, metrics=[faithfulness])
score = result["faithfulness"]
return 1.0 if score > 0.8 else 0.0
# Usar esta métrica en lugar de metric_exactitud para sistemas RAG
optimizador = BootstrapFewShot(metric=metric_faithfulness_dspy, max_bootstrapped_demos=4)
modelo_optimizado = optimizador.compile(RAGModule(), trainset=train_set)
| Situación | ¿Usar DSPy? |
|---|---|
| Tienes un golden dataset de calidad (≥20 ejemplos) y la métrica está definida | ✅ Sí |
| El prompt manual es largo y frágil (cambia con pequeñas modificaciones) | ✅ Sí |
| El prompt se usará en producción con miles de consultas | ✅ La inversión se amortiza |
| Estás en fase de prototipo, sin golden dataset | ❌ No merece la pena aún |
| Usas un modelo de razonamiento nativo (o1, o3, Gemini Thinking) | ❌ Contraproducente |
| El LLM base no puede realizar la tarea (necesita fine-tuning) | ❌ DSPy no lo solucionará |
Self-ask: el modelo se pregunta subpreguntas a sí mismo antes de responder. Útil para tareas multi-paso donde el orden no es obvio.
Reflexión: el modelo genera una respuesta, luego la evalúa con un evaluador separado (o consigo mismo) y corrige si es necesario. Implementa un bucle interno de calidad.
Generated Knowledge Prompting: el modelo genera primero hechos relevantes sobre la pregunta, luego responde basándose en ellos. Mejora la precisión factual en dominios especializados.
Estas técnicas pueden combinarse con DSPy: DSPy proporciona módulos (dspy.ReAct, dspy.ProgramOfThought) para implementarlas sin escribir el prompt a mano.
Los prompts son código. Un cambio de prompt sin pruebas automáticas es un cambio sin revisión. Integra la evaluación de prompts en tu pipeline de CI/CD:
# evaluate_prompt.py — script de evaluación para CI/CD
import json, sys, argparse
import dspy
from dspy.evaluate import Evaluate
def cargar_golden_dataset(path):
with open(path) as f:
data = json.load(f)
return [dspy.Example(**ex).with_inputs("contexto", "pregunta") for ex in data]
def metric_exactitud(example, prediction, trace=None):
return example.respuesta.strip().lower() == prediction.respuesta.strip().lower()
def main():
parser = argparse.ArgumentParser()
parser.add_argument("--golden-dataset", required=True)
parser.add_argument("--prompt-path", required=True)
parser.add_argument("--min-exactitud", type=float, default=0.85)
args = parser.parse_args()
lm = dspy.OpenAI(model='gpt-4o-mini', max_tokens=200)
dspy.settings.configure(lm=lm)
dataset = cargar_golden_dataset(args.golden_dataset)
modelo = RAGModule()
modelo.load(args.prompt_path)
evaluador = Evaluate(devset=dataset, metric=metric_exactitud, num_threads=4)
score = evaluador(modelo)
print(f"Exactitud: {score:.1%} (mínimo requerido: {args.min_exactitud:.1%})")
if score < args.min_exactitud:
print("❌ El prompt no supera el umbral mínimo. PR rechazado.")
sys.exit(1)
print("✅ Prompt validado. Listo para producción.")
if __name__ == "__main__":
main()
# .github/workflows/prompt_tests.yml
name: Prompt Validation
on: [pull_request]
jobs:
evaluate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Instalar dependencias
run: pip install dspy-ai ragas sentence-transformers datasets
- name: Evaluar prompt contra golden dataset
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
run: |
python evaluate_prompt.py --golden-dataset tests/golden_prompts.json --prompt-path prompts/rag_v2.json --min-exactitud 0.85
| Herramienta | Función principal | Modelo de precios |
|---|---|---|
| LangSmith | Trazabilidad + evaluación + versionado de prompts | Comercial (freemium) |
| PromptLayer | Versionado de prompts, comparativas A/B, logs | Comercial |
| HumanLoop | Gestión de prompts + human-in-the-loop | Comercial |
| MLflow (plugin) | Versionado básico de prompts como artefactos | Open source |
Herramientas como LLMLingua (Microsoft) comprimen el prompt eliminando palabras redundantes sin perder calidad. Pueden reducir el tamaño del prompt hasta un 80% con una pérdida de calidad del 1–5%. Útil para prompts largos con instrucciones + ejemplos + contexto.
# pip install llmlingua
from llmlingua import PromptCompressor
compresor = PromptCompressor()
prompt_largo = """
[Instrucciones largas de sistema + fragmentos RAG extensos + ejemplos few-shot]
"""
resultado = compresor.compress_prompt(
prompt_largo,
ratio=0.4, # Conserva el 40% de los tokens (comprime un 60%)
target_token=200 # O define el número de tokens objetivo
)
print(f"Tokens originales: {resultado['origin_tokens']}")
print(f"Tokens comprimidos: {resultado['compressed_tokens']}")
print(f"Ratio real: {resultado['ratio']:.1%}")
prompt_comprimido = resultado['compressed_prompt']
Cuando el prefijo del prompt (instrucciones de sistema + contexto estático) se repite en muchas consultas, los proveedores ofrecen caching que reduce el coste de esos tokens entre un 50% y un 90%. Ver Capítulo 15 (MLOps) para la implementación en producción.
El repositorio del manual incluye el notebook 08_prompt_engineering.ipynb con los siguientes ejercicios ejecutables:
pip install dspy-ai ragas sentence-transformers datasets llmlingua + API key de OpenAI o compatible.# ── EJERCICIO 1: Optimización manual vs DSPy ──────────────────────
# Dado un golden dataset de 20 preguntas sobre tu dominio,
# optimiza un prompt manualmente y compáralo con DSPy.
# Mide: exactitud, faithfulness y coste de tokens.
import dspy, json
from dspy.teleprompt import BootstrapFewShot
from dspy.evaluate import Evaluate
lm = dspy.OpenAI(model='gpt-4o-mini', max_tokens=200)
dspy.settings.configure(lm=lm)
# Carga tu golden dataset (mínimo 20 ejemplos)
with open("tests/golden_prompts.json") as f:
raw = json.load(f)
dataset = [dspy.Example(**ex).with_inputs("contexto", "pregunta") for ex in raw]
train, test = dataset[:15], dataset[15:]
class RAGModule(dspy.Module):
def __init__(self):
self.responder = dspy.ChainOfThought("contexto, pregunta -> respuesta")
def forward(self, contexto, pregunta):
return self.responder(contexto=contexto, pregunta=pregunta)
def metric_exactitud(example, prediction, trace=None):
return example.respuesta.strip().lower() == prediction.respuesta.strip().lower()
# Baseline: módulo sin optimizar
baseline = RAGModule()
ev = Evaluate(devset=test, metric=metric_exactitud, num_threads=2)
score_baseline = ev(baseline)
print(f"Baseline (sin DSPy): {score_baseline:.1%}")
# Optimizado con DSPy
opt = BootstrapFewShot(metric=metric_exactitud, max_bootstrapped_demos=3)
modelo_opt = opt.compile(RAGModule(), trainset=train)
score_opt = ev(modelo_opt)
print(f"Optimizado con DSPy: {score_opt:.1%}")
print(f"Mejora: {score_opt - score_baseline:+.1%}")
# ── EJERCICIO 2: Evaluación de robustez ───────────────────────────
from sentence_transformers import SentenceTransformer, util
import numpy as np
st = SentenceTransformer('all-MiniLM-L6-v2')
pregunta_base = "¿Cuál es el plazo de garantía legal?"
parafrasis = [
"Dime el plazo de garantía por ley.",
"¿Durante cuánto tiempo cubre la garantía legal?",
"Garantía legal: ¿cuántos años son?",
"¿Qué dice la ley sobre el plazo de garantía?",
"¿Cuánto tiempo tengo de garantía según la normativa?"
]
# Obtener respuestas para la pregunta base y sus paráfrasis
# (sustituye por tu función real de llamada al LLM)
respuestas = ["Dos años desde la entrega."] * (len(parafrasis) + 1) # simulación
embeddings = st.encode(respuestas)
sims = [util.cos_sim(embeddings[0], embeddings[i]).item() for i in range(1, len(embeddings))]
robustez = np.mean(sims)
print(f"Robustez media del prompt: {robustez:.3f}")
print("✅ Aceptable" if robustez >= 0.85 else "⚠️ Frágil — rediseña el prompt")
# ── EJERCICIO 3: Prueba de estabilidad ────────────────────────────
from collections import Counter
import statistics
def test_estabilidad(respuestas_multiples):
"""Mide qué porcentaje de veces el modelo da la respuesta más frecuente."""
normalizadas = [r.strip().lower() for r in respuestas_multiples]
contador = Counter(normalizadas)
mas_frecuente = max(contador.values())
return mas_frecuente / len(normalizadas), contador
# En producción: ejecuta la misma consulta 20-30 veces con temp=0.3
respuestas_simuladas = ["Dos años."] * 17 + ["24 meses."] * 2 + ["Dos años desde la entrega."] * 1
estabilidad, dist = test_estabilidad(respuestas_simuladas)
print(f"Estabilidad: {estabilidad:.0%} ({dict(dist)})")
print("✅ Estable" if estabilidad >= 0.80 else "⚠️ Inestable — normaliza el formato de salida")
# ── EJERCICIO 4: CI/CD — rechazo automático de prompt degradado ───
def evaluar_cambio_prompt(score_actual, score_nuevo, umbral_degradacion=0.05):
degradacion = score_actual - score_nuevo
if degradacion > umbral_degradacion:
print(f"❌ PR rechazado: el nuevo prompt degrada la exactitud en {degradacion:.1%}")
return False
print(f"✅ PR aceptado: cambio de {score_nuevo - score_actual:+.1%} en exactitud")
return True
# Simula la comparación entre el prompt actual y el nuevo
score_actual = 0.87
score_nuevo = 0.81 # cambio degradante
evaluar_cambio_prompt(score_actual, score_nuevo)
Puedes escribir prompts sistemáticos y medibles. Conoces las técnicas de mayor impacto (few-shot, CoT, structured output), los errores más frecuentes y cómo evaluarlos con A/B testing riguroso. Y sabes que CoT puede ser contraproducente en modelos de razonamiento nativo, tema que se desarrolla en el siguiente capítulo.
o1, o3, Gemini 2.0 Flash Thinking: un paradigma diferente que cambia las reglas del prompt engineering.
Los modelos de razonamiento nativo son una familia de LLMs que realizan una fase de "pensamiento interno" antes de generar la respuesta visible. Este pensamiento —invisible para el usuario por defecto— funciona como un borrador donde el modelo explora múltiples caminos, detecta inconsistencias, corrige errores intermedios y sintetiza una respuesta más robusta.
No es Chain-of-Thought externo. Es un proceso interno del modelo, entrenado específicamente para razonar antes de responder, no para razonar mientras responde.
| Modelo | Proveedor | Razonamiento | Disponibilidad |
|---|---|---|---|
| o1 | OpenAI | Cadena de pensamiento interna, no visible | API + ChatGPT Pro |
| o3 / o3-mini | OpenAI | Razonamiento más potente que o1, ajustable | API (2025) |
| Gemini 2.0 Flash Thinking | Pensamiento visible en la respuesta | API + AI Studio | |
| Claude 3.7 Sonnet (extended thinking) | Anthropic | Budget de "thinking tokens" configurable | API |
| DeepSeek R1 | DeepSeek | Cadena de pensamiento visible, open weights | Open source + API |
Los modelos de razonamiento no son mejores en todo. Son significativamente superiores en un perfil específico de tareas y no aportan ventaja (o son más lentos y caros) en el resto.
Esta es la parte más importante del capítulo. Las técnicas del Capítulo 8 se aplican de forma diferente —o directamente no aplican— en modelos de razonamiento.
| Técnica | Modelo estándar | Modelo de razonamiento |
|---|---|---|
| "Piensa paso a paso" | ✅ Muy efectivo | ⚠️ Contraproducente. El modelo ya razona internamente. Pedírselo externamente duplica el trabajo y puede empeorar el resultado. |
| Chain-of-Thought detallado | ✅ Mejora calidad | ⚠️ Innecesario o perjudicial. El razonamiento es interno. |
| Prompts breves y directos | ⚠️ Puede ser ambiguo | ✅ Preferible. El modelo infiere lo que necesita. |
| Few-shot con ejemplos | ✅ Muy efectivo | ⚠️ Menos necesario. Puede incluso anclar el razonamiento a los ejemplos en lugar de explorar el espacio de soluciones. |
| Restricciones de formato explícitas | ✅ Necesarias | ✅ Siguen siendo necesarias y efectivas. |
| Temperatura alta | ✅ Para creatividad | ⚠️ o1/o3 no exponen el parámetro de temperatura. El razonamiento interno ya gestiona la exploración. |
Algunos modelos (Gemini 2.0 Flash Thinking, DeepSeek R1, Claude con extended thinking activado) muestran el proceso de pensamiento antes de la respuesta final. Esto tiene valor específico en ciertos contextos:
| Tarea | Modelo recomendado | Por qué |
|---|---|---|
| Extracción de entidades de documentos | GPT-4o / Claude 3.5 Sonnet | Tarea simple, latencia importante, coste bajo |
| Análisis de contrato con 50 cláusulas complejas | o3 / Claude 3.7 + extended thinking | Razonamiento multi-paso, precisión crítica |
| Generación de resúmenes ejecutivos | GPT-4o-mini / Claude 3.5 Haiku | Alta frecuencia, coste muy bajo |
| Detección de anomalías en logs de sistema | o1 / Gemini 2.0 Flash Thinking | Patrones complejos, razonamiento causal |
| Chatbot de atención al cliente | GPT-4o-mini / Claude 3.5 Haiku | Latencia crítica, volumen alto, tarea conversacional |
| Optimización de consultas SQL complejas | o3-mini | Razonamiento lógico, coste razonable vs. o3 completo |
Sabes qué son los modelos de razonamiento nativo, en qué tareas son superiores y cuándo no merece la pena el coste adicional. Más importante: sabes qué técnicas de prompting del Capítulo 8 no aplican o son contraproducentes con estos modelos. Puedes seleccionar el modelo correcto para cada tarea con criterios técnicos y económicos explícitos.
Qué son los agentes, cuándo usarlos y por qué más agentes no significa mejor sistema.
Un agente de IA no es simplemente un LLM que responde preguntas. Es un sistema con capacidad de:
La diferencia crítica con un pipeline RAG estándar: el agente actúa. No solo responde. Y las acciones pueden ser irreversibles.
La tentación al descubrir los agentes es añadir complejidad. La disciplina de arquitectura correcta es la opuesta: empieza con el sistema más simple que resuelva el problema, y añade agentes solo cuando ese sistema más simple haya demostrado ser insuficiente.
| Antes de añadir un agente, pregunta | Si la respuesta es… | Entonces |
|---|---|---|
| ¿Puede resolverse con un único LLM call bien diseñado? | Sí | No añadas un agente. Diseña el prompt. |
| ¿Puede resolverse con un pipeline RAG estándar? | Sí | No añadas un agente. Construye el pipeline. |
| ¿La tarea requiere múltiples pasos con decisiones intermedias? | Sí | Considera un agente simple (1 LLM + herramientas). |
| ¿Requiere coordinación entre especialistas con roles distintos? | Sí | Considera arquitectura multi-agente. Con mucha precaución. |
Cada agente en un pipeline introduce variabilidad. La variabilidad no se suma: se multiplica. Un error del 3% en el agente 1 que alimenta al agente 2 que alimenta al agente 3 puede producir un error del 15-20% en el output final, incluso si cada agente individual es razonablemente fiable.
La entropía acumulada tiene una manifestación especialmente difícil de detectar: la alucinación coherente en cadena. Ocurre cuando una alucinación del paso 2 es usada como premisa verificada por el paso 3, que construye sobre ella un argumento internamente consistente pero basado en una falsedad.
La razón por la que es más peligrosa que una alucinación aislada: no rompe la coherencia interna del razonamiento. El output final parece sólido, bien fundamentado, sin contradicciones aparentes. El error solo se detecta trazando la cadena completa hasta el paso donde se introdujo la premisa falsa — lo cual requiere logging completo de cada paso y un sistema de auditoría que muy pocos equipos implementan desde el inicio.
Un único LLM con acceso a un conjunto de herramientas (funciones, APIs). El LLM decide qué herramienta usar, con qué parámetros, e interpreta el resultado para decidir el siguiente paso. Es la arquitectura más robusta y más fácil de depurar.
Múltiples LLMs con roles distintos (orquestador, investigador, validador, redactor). Útil cuando las subtareas son suficientemente diferentes como para beneficiarse de especialización, pero introduce complejidad y los errores se propagan entre agentes.
El patrón más robusto para agentes en producción asigna roles distintos al LLM y al código determinista:
La trazabilidad en agentes no es opcional: es lo que te permite depurar, auditar y mejorar el sistema cuando algo falla. Diseñarla desde el primer día es diez veces más fácil que añadirla a posteriori.
La decisión de framework no es estética: afecta directamente a la trazabilidad, el debugging y la viabilidad en producción. Esta tabla compara las opciones principales según criterios operativos, no según popularidad.
| Criterio | LangChain / LangGraph | AutoGen (Microsoft) | CrewAI | Implementación custom |
|---|---|---|---|---|
| Trazabilidad nativa | Media — LangSmith añade observabilidad, pero requiere configuración explícita y cuenta externa | Baja — los logs multi-agente son verbosos pero no estructurados para auditoría | Baja — abstracciones de alto nivel ocultan el flujo real de decisiones | Alta — tú defines exactamente qué se registra y cómo |
| Debugging en producción | Medio — LangGraph es más debuggeable que LangChain clásico gracias a su modelo de grafo explícito | Difícil — el flujo conversacional entre agentes es difícil de reproducir | Difícil — las abstracciones de "roles" ocultan el prompt real enviado | Fácil — control total sobre cada llamada y su resultado |
| Madurez (2026) | Alta — ecosistema amplio, pero historial de breaking changes frecuentes entre versiones | Media — activo, respaldado por Microsoft Research, API menos estable | Media — popular para demos, menos casos documentados en producción real | N/A — depende de tu equipo |
| Velocidad de prototipado | Alta | Media | Alta | Baja — semanas vs días |
| Recomendado para… | Prototipos, sistemas de riesgo bajo-medio con equipo familiar con el ecosistema | Investigación, multi-agente experimental, equipos con acceso a soporte MS | Demos, PoC rápidos, sistemas donde la velocidad de construcción supera al control | Sistemas de Nivel 3–4, producción crítica, auditorías regulatorias, equipos con tiempo de desarrollo |
La pregunta "¿usamos LangChain o construimos custom?" no tiene respuesta universal. Tiene una respuesta que depende de tres variables: el horizonte temporal del proyecto, el nivel de criticidad del sistema (Cap. 11), y las capacidades de trazabilidad que exigirá el cliente o la regulación. Lo que sigue es el marco para tomar esa decisión de forma deliberada, no por costumbre ni por velocidad de prototipado.
Un framework de agentes (LangChain, LangGraph, CrewAI u otros) es la elección técnicamente justificada cuando se cumplen todas estas condiciones:
Si alguna de estas condiciones no se cumple, el framework no es la elección más barata a largo plazo — es la más cara diferida en el tiempo.
| Horizonte | Recomendación | Condición de salida hacia custom |
|---|---|---|
| PoC / Demo (1–4 semanas) Validar si la IA resuelve el problema |
✅ Framework. Velocidad de iteración es lo único que importa. La deuda técnica es aceptable porque el código puede desecharse. | Cuando el PoC se convierte en proyecto real y aparece el primer requisito de trazabilidad de producción. |
| MVP / Piloto (1–3 meses) Despliegue controlado con usuarios reales |
⚠️ Framework con condiciones. Implementar LangSmith u observabilidad equivalente desde el día 1. Auditar los logs del framework contra los requisitos de trazabilidad del cliente antes de desplegar. | Cuando el cliente exige trazabilidad que el framework no provee nativamente, o cuando el sistema alcanza Nivel 3 de criticidad. |
| Producción regulada (ongoing) Sistema en uso real con obligaciones normativas |
🔴 Evalúa custom o custom sobre framework mínimo. Las abstracciones de alto nivel ocultan exactamente lo que los auditores necesitan ver. Si el framework no permite exponer los prompts completos, los parámetros exactos y los outputs con timestamps verificables por transacción, no es apto. | N/A — es el destino final, no hay salida hacia otro estado. |
El argumento de las 3 semanas es legítimo. Pero tiene un supuesto oculto: que el sistema entregado en 3 semanas funcionará igual de bien en la semana 12. En IA aplicada, eso es frecuentemente falso. Tres patrones de fallo documentados en proyectos de consultora con frameworks:
Ninguno de estos fallos es del framework en sí: son consecuencias de usar el framework sin las condiciones de salida y los controles adicionales que el horizonte de producción requiere. La velocidad de las 3 semanas tiene un precio real — y ese precio lo paga el cliente, no el equipo de entrega.
No todo puede automatizarse, ni debe. El diseño de la supervisión humana debe ser explícito, no una trampa de vigilancia decorativa.
| Nivel de autonomía | Cuándo usarlo | Riesgo principal |
|---|---|---|
| Human-in-the-loop (HITL): el humano aprueba cada acción relevante | Sistemas críticos, decisiones irreversibles, primeras semanas de despliegue | Cuello de botella. Fatiga del operador si hay muchas aprobaciones. |
| Human-on-the-loop (HOTL): el sistema actúa, el humano supervisa | Sistemas maduros con métricas de calidad demostradas y establecidas | Ilusión de control. El humano solo actúa si ve una alerta. |
| Fully automated: sin intervención humana en el loop | Tareas de bajo riesgo y alta reversibilidad únicamente | Sin red de seguridad para el error no anticipado. |
Tienes un framework para decidir cuándo un agente aporta valor real frente a una solución más simple. Entiendes la matemática de la entropía acumulada y por qué más agentes no es mejor por defecto. Conoces el patrón sándwich para producción segura, el mínimo irrenunciable de trazabilidad, y cómo diseñar la supervisión humana para que sea real y no decorativa. Tienes además el marco de decisión completo para elegir entre framework y custom según horizonte temporal y nivel de criticidad — con las condiciones de salida concretas que activan la migración.
Fallos en el núcleo de los sistemas IA: retrieval avanzado, agentes y prompting. Aquí la intuición de datos ya no basta — necesitas el modelo mental específico de IA.
Contexto: Sistema RAG con búsqueda híbrida (BM25 + vectorial, fusión RRF). El equipo subió el peso de BM25 a 0.8 para mejorar la recuperación de números de contrato.
Contexto: Agente de investigación diseñado para responder preguntas complejas buscando en múltiples fuentes. Sin límite de iteraciones explícito.
Contexto: Sistema RAG sobre documentos de clientes subidos por los propios usuarios. Sin sanitización del contenido indexado.
Tres preguntas integradoras. Si puedes responderlas sin mirar el manual, estás listo para el Módulo 3.
Un sistema RAG para búsqueda de normativas legales funciona bien con preguntas conceptuales ("¿qué dice la ley sobre X?") pero falla completamente cuando los usuarios buscan por número de artículo ("artículo 47.3 del Real Decreto 902/2020"). ¿Cuál es el diagnóstico? ¿Qué cambio de arquitectura propones?
Tu equipo tiene dos tareas: (A) clasificar 50.000 tickets de soporte al día en 8 categorías, y (B) analizar contratos de fusión y adquisición para detectar cláusulas problemáticas. Para cada una, ¿qué tipo de modelo elegirías (estándar vs. razonamiento), qué temperatura usarías y qué técnicas de prompting aplicarías?
Tu empresa quiere un agente que, dado el email de un cliente con una queja, (1) clasifique la urgencia, (2) consulte el historial del cliente en el CRM, (3) genere una respuesta personalizada y (4) la envíe automáticamente si la urgencia es baja, o la escale a un agente humano si es alta. Diseña la arquitectura aplicando el patrón sándwich. ¿Qué hace el LLM? ¿Qué hace el código determinista? ¿Dónde está el punto de control humano?
Contexto: Un sistema RAG para consultas sobre legislación laboral lleva tres semanas en producción. Los abogados del equipo reportan dos problemas: (A) cuando buscan por número de artículo ("art. 52.c ET"), el sistema a veces devuelve fragmentos relacionados pero no el artículo exacto; (B) cuando preguntan sobre casos límite o jurisprudencia reciente, las respuestas son fluidas pero a veces contradicen la doctrina establecida.
Tu documento debe contener:
Tu sistema de agentes para gestión de incidencias técnicas funciona bien en el 91% de los casos. El 9% restante son casos ambiguos donde el agente solicita revisión humana. El equipo de operaciones se queja de que ese 9% genera demasiado trabajo. El director técnico propone bajar el umbral de confianza para que el agente gestione más casos automáticamente, estimando que pasaría del 91% al 97% de resolución autónoma. El sistema opera en infraestructura crítica (centros de datos).
Tu tarea: Elige y defiende en 5 líneas. ¿Qué información adicional necesitarías para tomar esta decisión con más confianza? Nombra al menos dos datos concretos que pedirías antes de decidir.
Módulo 2 — Fundamentos propios de la IA
Sistemas críticos, arquitecturas responsables, validación continua, MLOps y gobernanza. El módulo donde tu experiencia en datos es tu mayor ventaja.
La decisión de arquitectura más importante no es qué modelo usar: es saber qué nivel de riesgo tiene tu sistema.
Antes de cualquier framework, esta pregunta:
Chatbots de FAQ, asistentes internos, resumidores de documentos. El error cuesta tiempo, no más.
Scoring de riesgo, optimización de precios, recomendaciones de inversión. El error cuesta dinero y puede generar litigación.
Selección de personal, asignación de recursos públicos, moderación de contenidos a escala. El error afecta derechos fundamentales.
Diagnóstico médico asistido, conducción autónoma, control de infraestructuras. El error puede causar daño físico irreversible.
| Nivel | Precisión mínima | Trazabilidad | Supervisión humana | Auditoría |
|---|---|---|---|---|
| Nivel 1 | > 90% | Básica (logs de error) | Opcional | No requerida |
| Nivel 2 | > 95% validada | Obligatoria (todos los inputs/outputs) | En casos límite | Interna periódica |
| Nivel 3 | > 98% | Obligatoria + explicabilidad | Derecho a revisión humana | Externa independiente |
| Nivel 4 | >> 99.9% | Completa + inmutable | Siempre (HITL) | Certificación previa al despliegue |
El error de clasificación más frecuente ocurre cuando no se tiene en cuenta la escala. Un sistema de CV-screening que procesa 100 candidatos al mes con un sesgo del 3% discrimina a 3 personas. El mismo sistema procesando 50.000 candidatos al mes discrimina a 1.500 personas. La arquitectura debe responder al riesgo real, no al nominal.
| Caso | Nivel real | Error de clasificación | Consecuencia |
|---|---|---|---|
| COMPAS (EEUU, 2016): algoritmo de predicción de reincidencia en justicia penal | Nivel 3 | Tratado como herramienta técnica neutral | Doble tasa de falsos positivos para acusados negros. Debate constitucional sobre igualdad ante la ley. |
| Flash Crash (2010): cascada de trading algorítmico | Nivel 3-4 | Cada algoritmo clasificado de forma individual, no el sistema conjunto | Dow Jones perdió ~1.000 puntos en 36 minutos. SEC anuló miles de operaciones. |
| Air Canada chatbot (2024): política de reembolso inexistente ofrecida a un cliente | Nivel 2 | Desplegado sin validación legal de outputs | Tribunal ordenó a Air Canada cumplir lo prometido por su bot. Precedente de responsabilidad por outputs IA. |
| Sistemas ADAS / conducción asistida (2016-2024) | Nivel 4 | Umbrales de confianza calibrados para reducir falsos positivos, no para maximizar seguridad | Múltiples muertes documentadas. Investigación de la NHTSA sobre más de 900 incidentes. |
Puedes clasificar cualquier sistema de IA en su nivel de criticidad real, incluyendo el ajuste por escala. Conoces los requisitos mínimos de cada nivel y los casos reales que ilustran lo que ocurre cuando la clasificación falla. En tu próximo proyecto de IA, la primera conversación que liderarás no será sobre qué modelo usar: será sobre qué nivel de riesgo tiene el sistema y qué implica eso en la arquitectura.
Cómo combinar IA probabilística con código determinista para construir sistemas auditables, seguros y certificables.
Cuando un LLM recibe una petición y actúa directamente sobre sistemas externos —sin ninguna capa de validación entre medias— cualquier alucinación o malinterpretación se convierte inmediatamente en acción. Y las acciones pueden ser irreversibles.
Ejemplos reales de este anti-patrón: el chatbot de Air Canada que prometió políticas de reembolso inexistentes; sistemas de IA que generan código y lo despliegan directamente en producción; algoritmos de selección que rechazan CVs sin ninguna validación intermedia de los criterios aplicados.
La solución no es eliminar la IA. Es encuadrarla. El patrón sándwich asigna a cada componente lo que hace mejor: el LLM entiende el lenguaje y la intención; el código determinista toma las decisiones.
La regla de oro: el LLM propone, el código determinista decide. El LLM nunca ejecuta acciones directamente sobre sistemas externos. Solo extrae parámetros y comunica decisiones que ya fueron tomadas por código auditable.
Este código ilustra el patrón completo para un caso de evaluación de solicitud de crédito:
ValidationResult y Decision,
el objeto logger y la función alertar_equipo() están referenciados pero no definidos aquí:
son dependencias que cada implementación concreta debe proveer según su stack.
El propósito del código es mostrar la estructura de capas, no proporcionar una implementación lista para copiar.
Si buscas una implementación funcional de referencia, el patrón completo con todas las dependencias está documentado
en el Apéndice de código (disponible en el repositorio de este manual).
# ── Pseudocódigo conceptual ─────────────────────────────────────────────────
# Las siguientes clases/objetos son dependencias de tu implementación:
# ValidationResult → dataclass con campos: valid (bool), errores (list[str])
# Decision → dataclass con campos: aprobado (bool), razon (str), score (float)
# logger → logging.Logger estándar de Python o equivalente
# alertar_equipo() → función de notificación (Slack, email, PagerDuty…)
# llm.call() → wrapper sobre la API del LLM de tu elección
# ─────────────────────────────────────────────────────────────────────────────
# CAPA 1: El LLM extrae parámetros estructurados — no decide nada
def extraer_parametros(solicitud_texto: str) -> dict:
response = llm.call(
system="Extrae SOLO los parámetros financieros. Devuelve JSON con los campos: "
"ingresos_anuales (float), deudas_actuales (float), "
"importe_solicitado (float), plazo_meses (int). "
"Si algún campo no aparece en el texto, usa null.",
user=solicitud_texto,
response_format="json"
)
return json.loads(response)
# CAPA 2: Validación determinista — detecta problemas de extracción
def validar_parametros(params: dict) -> ValidationResult:
errores = []
if params.get("ingresos_anuales") is None:
errores.append("ingresos no encontrados en el texto")
elif params.get("ingresos_anuales", 0) <= 0:
errores.append("ingresos anuales deben ser positivos")
if params.get("importe_solicitado", 0) <= 0:
errores.append("importe solicitado inválido")
if params.get("plazo_meses", 0) not in range(12, 361):
errores.append("plazo fuera de rango permitido (12-360 meses)")
return ValidationResult(valid=len(errores)==0, errores=errores)
# CAPA 3: Decisión de negocio — 100% determinista, 100% auditable
def decidir_credito(params: dict) -> Decision:
ingresos = params["ingresos_anuales"]
deudas = params["deudas_actuales"]
importe = params["importe_solicitado"]
plazo = params["plazo_meses"]
ratio_endeudamiento = (deudas + importe) / ingresos
cuota_mensual = importe / plazo
ratio_cuota_ingreso = (cuota_mensual * 12) / ingresos
if ratio_endeudamiento > 0.45:
return Decision("RECHAZADO", regla="ratio_endeudamiento",
valor=ratio_endeudamiento, umbral=0.45)
if ratio_cuota_ingreso > 0.35:
return Decision("RECHAZADO", regla="ratio_cuota_ingreso",
valor=ratio_cuota_ingreso, umbral=0.35)
return Decision("APROBADO", importe_aprobado=importe)
# CAPA 4: El LLM comunica la decisión tomada — no la inventa
def comunicar_decision(decision: Decision, params: dict) -> str:
return llm.call(
system="Eres un asesor financiero empático. Explica la decisión del sistema "
"en 3 frases claras. NO cambies ni interpretes la decisión: comunícala.",
user=f"Decisión: {decision.to_dict()}. Parámetros del cliente: {params}"
)
# PIPELINE COMPLETO con logging de trazabilidad
def evaluar_solicitud(texto: str, request_id: str) -> dict:
logger.info(f"[{request_id}] Input recibido")
params = extraer_parametros(texto)
logger.info(f"[{request_id}] Parámetros extraídos: {params}")
validez = validar_parametros(params)
if not validez.valid:
return {"error": validez.errores, "request_id": request_id}
decision = decidir_credito(params)
logger.info(f"[{request_id}] Decisión: {decision.to_dict()}")
explicacion = comunicar_decision(decision, params)
return {"decision": decision.to_dict(),
"explicacion": explicacion,
"request_id": request_id,
"params_extraidos": params} # Trazabilidad completa
Inspirado en el patrón de resiliencia de microservicios, el circuit breaker para IA suspende automáticamente el servicio del LLM cuando la tasa de errores supera un umbral, cayendo a una respuesta conservadora predefinida:
class CircuitBreakerIA:
def __init__(self, umbral_error=0.05, ventana_seg=300):
self.errores_recientes = []
self.umbral_error = umbral_error # 5% de errores abre el circuito
self.ventana_seg = ventana_seg # ventana de 5 minutos
self.abierto = False
def registrar_resultado(self, es_error: bool):
ahora = time.time()
self.errores_recientes.append((ahora, es_error))
# Limpiar entradas fuera de la ventana
self.errores_recientes = [
(t, e) for t, e in self.errores_recientes
if ahora - t < self.ventana_seg
]
tasa_error = sum(e for _, e in self.errores_recientes) / len(self.errores_recientes)
if tasa_error > self.umbral_error:
self.abierto = True
alertar_equipo("Circuit breaker IA abierto. Tasa error: {:.1%}".format(tasa_error))
def llamar_con_fallback(self, fn_ia, fn_fallback, *args, **kwargs):
if self.abierto:
return fn_fallback(*args, **kwargs) # Respuesta conservadora sin IA
try:
resultado = fn_ia(*args, **kwargs)
self.registrar_resultado(False)
return resultado
except Exception:
self.registrar_resultado(True)
return fn_fallback(*args, **kwargs)
| Antipatrón | Síntoma | Corrección |
|---|---|---|
| LLM ejecuta directamente | La respuesta del LLM se envía a un sistema externo sin validación | Insertar siempre validación determinista + aprobación (humana o código) antes de cualquier acción externa |
| JSON del LLM sin validar | Se usa directamente el JSON generado por el LLM como input al motor de reglas | Validar siempre con Pydantic o JSON Schema antes de usar. El LLM puede omitir campos, cambiar tipos, o usar None. |
| Motor de reglas que llama de vuelta al LLM | La capa determinista delega casos edge al LLM | Los casos edge van a revisión humana o a reglas explícitas. Nunca re-delegar al LLM desde la capa determinista. |
| Logging solo del output final | Cuando hay un error, no se sabe si falló la extracción o la decisión | Loggear las tres capas: input raw, JSON extraído, decisión + regla activada, output final. |
Puedes diseñar e implementar el patrón sándwich para sistemas de Nivel 2 y superior. Sabes qué hace cada capa, por qué la separación es importante para la auditoría, cómo implementar un circuit breaker y cuáles son los antipatrones que invalidan el patrón. Tienes código de referencia adaptable a tu contexto.
Cómo construir un sistema de calidad continua para IA que va más allá del golden dataset inicial.
Del Módulo 1 recordarás estas cuatro dimensiones. Aquí las desarrollamos con las métricas y herramientas concretas para medirlas en producción.
| Dimensión | Pregunta clave | Métrica principal | Herramienta |
|---|---|---|---|
| Fidelidad | ¿La respuesta se basa en los documentos fuente o inventa? | Faithfulness (RAGAS) | RAGAS, DeepEval |
| Completitud | ¿La respuesta cubre todos los aspectos relevantes? | Answer Recall (RAGAS) | RAGAS, golden dataset manual |
| Robustez | ¿El sistema da respuestas equivalentes ante formulaciones diferentes? | Varianza semántica entre paráfrasis | Sentence transformers + similitud coseno |
| Equidad | ¿La calidad es consistente entre segmentos de usuarios? | Brecha de calidad entre grupos | Análisis segmentado sobre golden dataset estratificado |
Sin golden dataset no puedes medir nada con rigor. Pero construirlo bien requiere disciplina:
# Evaluación automática con RAGAS sobre muestra de producción
from ragas import evaluate
from ragas.metrics import faithfulness, answer_relevancy, context_recall
from datasets import Dataset
def evaluar_muestra_produccion(logs_del_dia: list) -> dict:
"""
logs_del_dia: lista de dicts con keys:
question, answer, contexts (lista de fragmentos RAG), ground_truth
"""
dataset = Dataset.from_list(logs_del_dia)
resultado = evaluate(
dataset,
metrics=[faithfulness, answer_relevancy, context_recall]
)
# Alertas automáticas
if resultado["faithfulness"] < 0.75:
alertar("🚨 Faithfulness bajo: {:.2f}".format(resultado["faithfulness"]))
if resultado["context_recall"] < 0.80:
alertar("⚠️ Context recall bajo: {:.2f}".format(resultado["context_recall"]))
return resultado
Clasificar los errores es el primer paso para corregirlos sistemáticamente. Los sistemas de IA producen tipos de errores distintos a los sistemas deterministas:
| Tipo de error | Descripción | Causa raíz típica | Solución |
|---|---|---|---|
| Alucinación intrínseca | La respuesta contradice información del contexto recuperado | El LLM ignoró el grounding | Reforzar instrucciones de grounding. Añadir validación de faithfulness post-generación. |
| Alucinación extrínseca | La respuesta introduce información no presente en el contexto | El modelo responde desde memoria de entrenamiento | RAG más estricto + instrucción explícita de no extrapolar. |
| Fallo de retrieval | La respuesta es incorrecta porque el contexto recuperado era irrelevante | Embedding o chunking inadecuado | Revisar Hit Rate@5. Mejorar chunking o modelo de embedding. |
| Respuesta incompleta | La respuesta cubre parcialmente la pregunta | K demasiado bajo, o fragmentos recuperados incompletos | Aumentar K o mejorar la estrategia de chunking. |
| Inconsistencia semántica | La misma pregunta formulada de dos formas produce respuestas contradictorias | Alta sensibilidad del sistema al vocabulario de la query | Búsqueda híbrida + query expansion. |
| Sesgo de segmento | La calidad varía significativamente entre grupos de usuarios | Corpus desigual o embedding con sesgos | Auditoría de equidad. Enriquecimiento del corpus para segmentos infrarrepresentados. |
Las pruebas estándar (golden dataset + métricas RAGAS) miden el rendimiento nominal. Las pruebas de robustez y adversariales miden si el sistema puede ser manipulado o si falla en condiciones de estrés:
| Métrica | Frecuencia | Umbral de alerta | Acción |
|---|---|---|---|
| Faithfulness sobre muestra de producción | Diaria (automática) | Caída > 5 puntos vs. baseline | Revisar si el corpus fue actualizado incorrectamente. Revisar el prompt. |
| Hit Rate@5 sobre golden dataset | Semanal (automática) | < 0.80 | El retrieval se ha degradado. Revisar si el modelo de embedding cambió de versión. |
| Tasa de "no tengo información" | Diaria | Subida > 20% vs. baseline | Posible desactualización del corpus o nueva área de preguntas no cubierta. |
| Feedback negativo de usuarios | Tiempo real | Clúster de > 5 negativas sobre el mismo tipo de pregunta | Investigar ese tipo de pregunta. Añadir al golden dataset. Priorizar corrección. |
| Latencia P95 del pipeline completo | Tiempo real | > 2× latencia baseline | Posible degradación de infra o cambio en tamaño de contexto. Revisar logs. |
Tienes el framework completo de QA para un sistema RAG en producción: cómo construir un golden dataset robusto, qué métricas medir (con herramientas concretas), cómo clasificar los errores para corregirlos sistemáticamente, qué pruebas adversariales ejecutar y qué monitorizar en producción con qué umbrales. Puedes liderar el diseño de calidad de cualquier sistema de IA de tu organización.
Cuándo el humano debe estar en el loop, cómo diseñarlo para que sea real y no decorativo, y qué significa gobernanza en la práctica.
| Paradigma | Descripción | Cuándo aplicar | Riesgo principal |
|---|---|---|---|
| Human-in-the-loop (HITL) | El humano revisa y aprueba cada decisión crítica antes de que tenga efecto | Sistemas Nivel 3-4, decisiones irreversibles, primeras semanas de despliegue | Cuello de botella. Fatiga del operador si el volumen es alto. |
| Human-on-the-loop (HOTL) | El sistema opera autónomamente; el humano supervisa y puede intervenir | Sistemas Nivel 1-2 con métricas robustas y demostradas | Ilusión de control. El humano solo actúa si llega una alerta que nota. |
| Human-in-command | El humano puede pausar o detener el sistema en cualquier momento, aunque no lo monitorice activamente | Principio mínimo para cualquier nivel | Requiere formación real y autoridad organizativa para ejercer ese control. |
Una supervisión humana existe en el papel pero es ineficaz en la práctica cuando:
Una interfaz de supervisión efectiva muestra, para cada decisión que requiere revisión:
| Trigger de escalado | Cómo detectarlo | Acción |
|---|---|---|
| Confianza baja | Faithfulness o relevance score < umbral configurado por nivel de criticidad | Retener la respuesta y mostrar al revisor con contexto completo |
| Pregunta de alta criticidad | Detección de palabras clave o clasificador de intención que indica decisión de alto impacto | Siempre escalar independientemente del score de confianza |
| Respuesta estadísticamente inusual | La respuesta difiere significativamente de las respuestas a preguntas similares anteriores | Flagear para revisión. Puede ser correcto (caso nuevo) o un error. |
| Primeras N consultas de un usuario nuevo | Por política: las primeras 10 consultas de cualquier usuario nuevo van a revisión | Construye confianza antes de dar autonomía total al sistema |
| Muestreo aleatorio de auditoría | X% de todas las consultas van a revisión independientemente del score | Mantiene la supervisión activa y detecta degradación que los umbrales no capturan |
Puedes diseñar una supervisión humana que sea real y no decorativa, con los triggers de escalado correctos y las interfaces que facilitan la revisión efectiva. Tienes el marco de los cinco elementos de gobernanza para construir la infraestructura que el AI Act y tus stakeholders van a exigir. Sabes identificar la supervisión decorativa antes de que se convierta en un problema.
Cómo llevar un sistema RAG de prototipo a producción sostenible, con los pipelines de datos que ya conoces como base.
A diferencia de un microservicio estándar, un sistema RAG tiene tres ciclos de vida independientes que hay que gestionar por separado:
Este es tu pipeline ETL de siempre, con dos pasos adicionales al final: embedding y carga en la BD vectorial.
Los proveedores de API actualizan sus modelos sin que tú lo solicites. Una actualización del modelo de embedding invalida todo el índice vectorial: los vectores del corpus fueron generados con la versión antigua y ya no son comparables con los vectores de las queries generados con la versión nueva.
| Cambio | Impacto | Acción requerida |
|---|---|---|
| Actualización de versión menor del LLM (mismo proveedor) | Posible cambio de comportamiento sutil | Re-evaluar sobre golden dataset antes de aceptar el cambio en producción |
| Migración a nuevo LLM (otro modelo o proveedor) | Cambio significativo de comportamiento. Los prompts pueden necesitar ajuste. | A/B testing exhaustivo + revisión de todos los prompts de sistema |
| Actualización del modelo de embedding | Los vectores existentes en el índice son incompatibles con los nuevos | Re-indexación completa del corpus. Planificar downtime o índice dual. |
| Cambio de dimensionalidad del embedding | La BD vectorial necesita ser recreada desde cero | Migración completa. Plan de rollback obligatorio. |
El pipeline de integración y despliegue continuo para un sistema RAG evalúa la calidad antes de desplegar, no después:
# .github/workflows/rag_ci.yml (simplificado)
name: RAG Quality Gate
on: [pull_request]
jobs:
quality-evaluation:
steps:
- name: Evaluar retrieval sobre golden dataset
run: |
python evaluate_retrieval.py \
--golden-dataset tests/golden_dataset.json \
--min-hit-rate 0.85 \
--min-mrr 0.70
# Falla el PR si Hit Rate < 0.85 o MRR < 0.70
- name: Evaluar generación con RAGAS
run: |
python evaluate_generation.py \
--min-faithfulness 0.80 \
--min-relevancy 0.75
# Falla el PR si faithfulness < 0.80
- name: Pruebas de robustez semántica
run: |
python test_robustness.py \
--paraphrase-count 5 \
--min-semantic-similarity 0.85
# Falla si las paráfrasis producen respuestas muy divergentes
- name: Pruebas adversariales (prompt injection)
run: python test_adversarial.py
# Falla si el sistema sigue instrucciones maliciosas en el corpus
El prompt caching es una de las optimizaciones de coste más efectivas disponibles en 2025-2026 y una de las menos utilizadas. La mayoría de los principales proveedores (Anthropic, OpenAI, Google) ofrecen descuentos significativos cuando una parte del prompt se repite en múltiples consultas.
Cuando el prefijo de un prompt —el prompt de sistema, las instrucciones de grounding, o un conjunto de fragmentos de contexto fijo— es idéntico en múltiples llamadas, el proveedor puede reutilizar el procesamiento de ese prefijo en lugar de calcularlo de nuevo. El coste de los tokens cacheados se reduce drásticamente respecto a los tokens procesados por primera vez.
| Proveedor | Descuento en tokens cacheados | Condición |
|---|---|---|
| Anthropic (Claude) | ~90% de descuento | Prefijo de mínimo 1024 tokens; la caché se mantiene ~5 minutos de inactividad |
| OpenAI (GPT-4o, GPT-4o-mini) | ~50% de descuento | Prefijo de mínimo 1024 tokens; automático, sin configuración explícita |
| Google (Gemini) | ~75% de descuento | Requires explicit cache creation via API; mínimo de uso para amortizar |
La implementación más sencilla: coloca el prompt de sistema y las instrucciones de grounding al inicio del prompt, antes de los fragmentos recuperados. Los proveedores detectan automáticamente el prefijo repetido (OpenAI) o permiten marcarlo explícitamente (Anthropic con cache_control). La regla de diseño es simple: lo que no cambia entre consultas va primero; lo que cambia (fragmentos, pregunta del usuario) va al final.
| Función | Herramienta | Coste | Mejor para |
|---|---|---|---|
| Observabilidad de LLM (trazas, logs, métricas) | LangSmith, Helicone, Prompt flow | Freemium / Comercial | Equipos que ya usan LangChain o necesitan observabilidad rápida |
| Evaluación automática (RAGAS, faithfulness) | RAGAS, DeepEval, TruLens | Open source | Cualquier stack. Integrable con pytest o CI/CD. |
| Versionado de modelos y experimentos | MLflow, Weights & Biases | Open source / Freemium | Equipos con experiencia en ML tradicional |
| Gestión de prompts versionados | LangSmith Hub, Portkey, PromptLayer | Freemium | Equipos con múltiples prompts en producción |
| BD vectorial con observabilidad integrada | Weaviate, Qdrant | Open source / Cloud | Producción con control sobre la infra |
Puedes diseñar el ciclo de vida completo de un sistema RAG en producción: pipeline de actualización del corpus, gestión del versionado de modelos, CI/CD con quality gates automatizados y estrategias de actualización del índice sin downtime. Tu experiencia en pipelines de datos es aquí tu ventaja más directa: este capítulo es, en un 70%, data engineering con dos pasos nuevos al final.
Qué te obliga a hacer la regulación, cuándo, y cómo prepararte sin paralizarte.
El AI Act clasifica los sistemas de IA en cuatro categorías de riesgo, con obligaciones proporcionales al nivel de riesgo:
| Categoría | Qué incluye | Obligación | Desde cuándo |
|---|---|---|---|
| Prohibido | Scoring social, manipulación subliminal, vigilancia biométrica masiva en tiempo real | Prohibición total | Agosto 2024 |
| Alto riesgo | RRHH, crédito, educación, justicia, infraestructura crítica, sanidad | Evaluación de conformidad, trazabilidad, HITL, registro en BD UE | ⏰ Agosto 2026 (verificar vigencia) |
| Riesgo limitado | Chatbots, deepfakes, generadores de contenido que interactúan con humanos | Obligación de transparencia (informar que es IA) | ⏰ Agosto 2026 (verificar vigencia) |
| Riesgo mínimo | Filtros de spam, juegos con IA, recomendadores de contenido sin impacto significativo | Sin obligaciones específicas | — |
El AI Act distingue tres roles con responsabilidades diferentes:
Si tu sistema cae en la categoría de alto riesgo (Anexo III del AI Act), estas son las obligaciones que debes cumplir antes de agosto de 2026:
Los modelos base como GPT-4, Claude o Gemini son clasificados como GPAI (General Purpose AI). Sus obligaciones específicas como proveedores (documentación técnica, política de uso aceptable, resumen de datos de entrenamiento) entraron en vigor en agosto de 2025.
Para ti como deployer: no heredas las obligaciones del proveedor del modelo base, pero sí las del sistema que construyes sobre él. Si haces fine-tuning significativo, consulta con asesoría legal si pasas a ser co-proveedor.
| Horizonte | Acción | Responsable |
|---|---|---|
| Inmediato (si no está hecho) | Inventariar todos los sistemas IA en uso y clasificarlos por nivel de riesgo (el AI Risk Register del Cap. 14). Eliminar cualquier práctica prohibida. | CTO / CIO + Legal |
| Corto plazo (antes de agosto 2026) | Para sistemas de alto riesgo: documentación técnica, sistema de gestión de riesgos, arquitectura de logging, supervisión humana documentada, registro en BD UE. | Equipo técnico + Compliance |
| Continuo | Actualización del Risk Register cuando se despliegan nuevos sistemas. Revisión anual de la documentación de sistemas existentes. Formación continua de los equipos. | AI Governance Office |
Sabes qué rol tienes según el AI Act (casi siempre deployer), qué categoría aplica a tus sistemas (con el mapa de clasificación) y qué obligaciones concretas tienes que cumplir y cuándo. Tienes una checklist accionable para sistemas de alto riesgo y un plan en tres horizontes para ordenar las prioridades. El AI Act no paraliza: con el mapa correcto, es un proceso de ingeniería como cualquier otro.
Fallos en sistemas reales en producción. Estos son los casos donde el error ya no solo afecta a la calidad de una respuesta — afecta a decisiones, a usuarios, y en algunos casos a la ley.
Contexto: Sistema RAG de atención al cliente de una empresa de telecomunicaciones. En producción 8 meses. Sin golden dataset continuo. El proveedor LLM actualizó el modelo base en el mes 6.
Contexto: Sistema de evaluación de solicitudes de préstamo. El equipo implementó el patrón sándwich parcialmente: el LLM extrae parámetros y también toma la decisión de aprobación.
Contexto: Sistema RAG sobre base de conocimiento corporativa. El equipo migró de text-embedding-ada-002 a text-embedding-3-large para mejorar la calidad. Migraron el modelo de query pero olvidaron re-indexar el corpus.
Tres escenarios reales. Si puedes razonarlos sin consultar el manual, estás preparado para el Módulo 4.
Una aseguradora quiere usar un LLM para evaluar solicitudes de siniestros: el sistema leería el formulario del cliente, consultaría la base de datos de pólizas y aprobaría o rechazaría el siniestro automáticamente. ¿En qué nivel de criticidad clasificas el sistema? ¿Qué arquitectura propones? ¿Dónde colocas el punto de control humano y por qué?
Seis meses después del despliegue de un sistema RAG para atención al cliente, los usuarios empiezan a quejarse de que las respuestas "ya no son tan buenas". El equipo técnico no tiene datos de calidad históricos y no puede demostrar si el sistema se ha degradado o si las expectativas de los usuarios han cambiado. ¿Qué habrías implementado desde el día 1 para evitar esta situación? ¿Qué harías ahora para diagnosticarla?
Tu empresa tiene tres sistemas de IA en producción: (A) un chatbot interno que responde preguntas sobre la política de beneficios de RRHH, (B) un sistema que filtra CVs y hace una preselección de candidatos para entrevistas, y (C) un sistema que recomienda contenido en la intranet corporativa. Clasifica cada uno según el AI Act, identifica cuáles tienen obligaciones de alto riesgo y lista las tres acciones más urgentes para cada uno.
Contexto: Una entidad financiera quiere desplegar un sistema que, a partir de la documentación del cliente (extractos, contratos, nóminas), genere automáticamente una recomendación de producto financiero personalizada. El sistema se mostraría directamente al cliente sin revisión humana previa en el 80% de los casos.
Tu documento debe contener:
Tu sistema RAG para atención al cliente lleva 8 meses en producción. El dashboard de calidad muestra que el faithfulness score bajó de 0.84 a 0.71 en los últimos 2 meses. El diagnóstico apunta a que el corpus creció un 40% con documentos de baja calidad añadidos por distintos equipos sin proceso de revisión. Parar el sistema para re-indexar, limpiar el corpus y revalidar implicaría aproximadamente 3 semanas de trabajo y un downtime de 48 horas. El equipo comercial se opone: el sistema está en el centro de la experiencia del cliente y hay una campaña de ventas activa.
Tu tarea: Elige y defiende en 5 líneas. ¿Qué métrica adicional necesitarías para saber si el 0.71 actual ya está causando daño al negocio medible, o si el impacto todavía es tolerable?
Módulo 3 — Construir en producción
Los perfiles que emergen, cómo posicionarte viniendo de datos, y qué necesitas construir para que la transición sea real y no solo un título en LinkedIn.
Cuatro perfiles nuevos que nacen directamente de la intersección entre datos e IA, y para los que ya tienes la mitad de las competencias.
Los equipos de IA puro (investigadores, ML engineers) dominan los modelos pero frecuentemente subestiman lo que ocurre antes y después: la calidad del corpus, el linaje de los datos de evaluación, la gobernanza de los modelos en producción, la interpretación de las métricas de negocio. Son exactamente las áreas donde un profesional de datos tiene ventaja estructural.
No es competencia. Es complementariedad. Un equipo de IA sin experiencia sólida en datos produce sistemas que funcionan en demos y fallan en producción.
Esta tabla compara lo que ya tienes como profesional de datos con lo que necesitas añadir para cada rol. El objetivo es que veas la brecha real, no la brecha percibida (que suele ser mayor).
| Rol | Ya tienes ✅ | Necesitas añadir 📚 | Tiempo estimado de brecha |
|---|---|---|---|
| AI Data Engineer | Pipelines, orquestación, calidad de datos, infra cloud, SQL/Python | Embeddings, bases de datos vectoriales (Weaviate/Qdrant/pgvector), chunking strategies, ciclo de vida RAG | 2–4 meses con práctica activa |
| RAG Architect | Arquitectura de datos, ciclo de vida de sistemas, evaluación de herramientas, diseño para escala | Búsqueda híbrida avanzada, re-ranking, evaluación RAG (RAGAS), prompt engineering, selección de LLM | 4–6 meses con proyecto real |
| AI Quality Analyst | Marcos de calidad, diseño de tests, métricas de negocio, documentación | RAGAS/DeepEval, red teaming (Garak), golden dataset para IA, evaluación de equidad (Fairlearn), LLM-as-judge | 2–3 meses con práctica activa |
| AI Governance Specialist | Marcos regulatorios (GDPR), gestión de riesgos, auditoría, inventarios de sistemas | Especificidades del AI Act, clasificación de riesgo IA, ISO 42001, gestión de incidentes IA, formación de empleados | 3–5 meses con estudio dedicado |
En la práctica, los perfiles más demandados en 2025-2026 no son "puros" en una sola dimensión. Son híbridos que combinan competencias de datos con competencias de IA de formas específicas:
Una fuente frecuente de parálisis para los profesionales de datos que quieren transicionar es sobrestimar lo que necesitan aprender. Esto es lo que no necesitas para los cuatro roles anteriores:
Tienes un mapa concreto de cuatro roles emergentes con descripción real de sus responsabilidades, la brecha exacta entre lo que ya tienes y lo que necesitas añadir, y el tiempo estimado para cerrarla. Has identificado el rol (o la combinación de roles) que más se alinea con tu experiencia actual y tus objetivos. Sabes qué no necesitas aprender, lo que es igual de importante que saber qué sí necesitas.
Cómo pasar de "profesional de datos que ha leído sobre IA" a "profesional que construye sistemas de IA reales", con un plan concreto y ejecutable.
El campo de la IA produce contenido nuevo a una velocidad que hace imposible "estar al día" antes de empezar a construir. La trampa del aprendizaje infinito atrapa a muchos profesionales en un ciclo de consumo de contenido sin producción de nada tangible: un curso más, un paper más, un podcast más.
La transición más sostenible no es "dejo mi trabajo actual y me dedico a aprender IA a tiempo completo". Es expandir gradualmente tu rol actual incorporando IA, de forma que la transición ocurra mientras produces valor en tu puesto.
Esto tiene tres ventajas sobre la transición en blanco:
| Opción | Coste | Cómo empezar | Limitación |
|---|---|---|---|
| Ollama (local) | Gratis | ollama pull llama3.2 — funciona en un portátil moderno | Requiere 8–16 GB RAM; modelos más pequeños que los de API |
| Groq (free tier) | Gratis hasta límite | Registra en console.groq.com; API compatible OpenAI | Límites de peticiones por minuto; modelos disponibles pueden cambiar |
| HuggingFace Inference API | Gratis con límites | Token de HF + InferenceClient; acceso a miles de modelos | Latencia variable; no todos los modelos están siempre activos |
| OpenAI / Anthropic / Google | De pago (pay-per-token) | API key + primeros $5–18 de crédito gratis según proveedor | Coste que escala con el uso; requiere tarjeta |
Para el mes 1, Ollama con Llama 3.2 o Mistral 7B es suficiente para aprender la arquitectura. La calidad de las respuestas será inferior a GPT-4o, pero el pipeline es idéntico.
El plan de 6 meses asume 3 sesiones de 45 minutos por semana, que son unas 35-40 horas en total. Si tienes menos tiempo, el plan se estira linealmente: con una sesión por semana, son 18 meses. Con cinco sesiones, son 3 meses.
Lo que no es negociable, independientemente de la velocidad: construir algo real en cada fase. Un portfolio con tres proyectos hechos en 18 meses es mucho más valioso que ningún proyecto hecho en 6 meses.
Tienes un plan concreto de 6 meses, ejecutable en paralelo a tu trabajo actual, con hitos claros y artefactos tangibles en cada fase. Sabes por qué construir algo imperfecto hoy es más valioso que esperar a "estar listo". Y tienes el indicador externo que te dirá si la transición está progresando de verdad.
La diferencia entre alguien que habla de IA y alguien que construye con IA. Proyectos de portfolio, entrevistas y señales que el mercado valora.
Hay una brecha entre lo que las ofertas de trabajo dicen que requieren y lo que realmente diferencia a los candidatos en el proceso de selección:
No todos los proyectos tienen el mismo valor en un portfolio. Estos son los que más señal generan, ordenados de menor a mayor dificultad:
Un proyecto en un repositorio de GitHub sin nada más no comunica mucho. Un proyecto con estos elementos sí:
Estas son las preguntas que los equipos técnicos de IA realmente hacen, y cómo responderlas desde tu experiencia en datos:
| Pregunta | Lo que buscan | Cómo responder desde datos |
|---|---|---|
| "Diseña un sistema RAG para [caso de uso]" | Que sepas tomar decisiones de arquitectura, no solo listar componentes | Empieza por el corpus y el tipo de consultas (tu experiencia en modelado de datos). Justifica cada componente (embedding, chunking, BD vectorial) con criterios técnicos concretos, no con preferencias. |
| "El sistema RAG da respuestas incorrectas. ¿Cómo lo diagnosticas?" | Que tengas un proceso de diagnóstico sistemático, no que "pruebes cosas" | Protocolo de diagnóstico del Cap. 7: primero inspecciono los fragmentos recuperados, luego mido Hit Rate@5, luego aislo si el problema es retrieval o generación. Es exactamente como diagnosticarías un pipeline de datos roto. |
| "¿Cómo garantizas la calidad de un sistema de IA en producción?" | Que entiendas que la calidad no es un evento puntual sino un proceso continuo | Golden dataset + métricas RAGAS + monitorización continua con umbrales de alerta. Es tu mismo esquema de data quality monitoring, con las métricas adaptadas. |
| "¿Qué cambias en el prompt de un modelo de razonamiento como o3 vs. GPT-4o?" | Que estés al día con los modelos actuales y entiendas sus diferencias | Con modelos de razonamiento nativo, no pido "piensa paso a paso" (lo hace internamente), prefiero prompts más directos y no uso few-shot si no es necesario (puede anclar el razonamiento). Ver Cap. 9. |
| "¿Cómo aplicarías el AI Act a este sistema?" | Que puedas hablar de gobernanza sin que sea un tema exclusivamente de Legal | Clasifica el sistema por nivel de riesgo con el test del Cap. 11. Si es alto riesgo (RRHH, crédito, salud), lista las obligaciones concretas. Demuestra que entiendes la diferencia entre proveedor y deployer. |
El mercado de talento en IA es todavía lo suficientemente pequeño como para que la reputación técnica pública importe más que en otros campos. "Construir en público" no significa publicar contenido constantemente: significa dejar rastros verificables de tu trabajo técnico.
Tres formas de hacerlo que no requieren tiempo adicional al trabajo que ya estás haciendo:
Sabes exactamente qué hace que un proyecto de portfolio genere señal real en el mercado (los números de evaluación, las decisiones justificadas, los fallos documentados). Puedes responder las cinco preguntas de entrevista más importantes desde tu experiencia en datos, sin necesidad de memorizar respuestas genéricas. Y tienes tres formas concretas de construir visibilidad técnica sin tiempo adicional al trabajo que ya estás haciendo.
Estas no son preguntas técnicas. Son preguntas de acción. Si puedes responderlas con decisiones concretas, estás listo para el Módulo 5 —o para empezar a construir.
De los cuatro roles del Capítulo 17, ¿cuál o cuál combinación se alinea mejor con tu experiencia actual y tus objetivos a 2 años? ¿Cuáles son las tres competencias concretas que necesitas añadir para ese rol, según la tabla de brechas?
¿Cuál es el corpus sobre el que construirás tu primer sistema RAG? ¿Por qué ese corpus es mejor que uno genérico para demostrar tu valor? ¿Cuándo empiezas?
¿Cuál de las tres formas de visibilidad del Capítulo 19 es más natural para ti: repositorio de GitHub, presentación interna, o participación en comunidades? ¿Qué artefacto concreto tendrás listo en 30 días?
Módulo 4 — Rol y carrera
Errores de posicionamiento, transición y comunicación que frenan carreras técnicas en IA. Menos código, más decisiones.
Contexto: Ingeniero de datos con 6 años de experiencia buscando rol de AI Data Engineer. Construye un portfolio con 4 proyectos.
Contexto: Analista de datos que anuncia en LinkedIn que "está en transición a IA" después de hacer un curso online de 20 horas y construir el chatbot del caso anterior.
Errores de razonamiento sobre IA: los más difíciles de detectar porque parecen correctos. Afectan a decisiones estratégicas, no solo técnicas.
Contexto: Equipo directivo usa un LLM para analizar el mercado antes de una decisión de inversión de 2M€. Sin RAG, sin corpus externo. El modelo tiene knowledge cutoff de 18 meses atrás.
Contexto: Equipo selecciona un modelo LLM para un sistema de soporte médico basándose en sus resultados en benchmarks públicos (MMLU, HellaSwag, etc.).
Material avanzado y de referencia: las consecuencias epistemológicas de la IA, los conceptos propios del autor explícitamente marcados, y el glosario extendido de 60+ términos.
Qué le ocurre al pensamiento, al conocimiento y a las organizaciones cuando la IA se convierte en intermediario habitual del saber.
Un LLM no produce el mejor argumento disponible sobre un tema. Produce el argumento estadísticamente más probable dado su corpus de entrenamiento. Esto tiene una implicación que no es obvia al principio: las ideas raras, los argumentos minoritarios y las perspectivas no hegemónicas están estructuralmente subrepresentadas en el output de cualquier modelo generativo, no porque el modelo las haya evaluado y descartado, sino porque aparecen con menor frecuencia en el corpus.
El resultado es un sesgo sistemático hacia lo convencional que no es neutral. En cualquier dominio donde el progreso ocurre precisamente en los márgenes del conocimiento establecido —investigación científica, innovación empresarial, debate político, creación artística— un sistema que refuerza el centro estadístico del discurso actúa como freno, no como acelerador.
Los embeddingsRepresentaciones numéricas de texto en espacios vectoriales de alta dimensión. Textos similares tienen vectores cercanos. son extraordinariamente buenos capturando similitud semántica entre fragmentos. Son muy malos preservando la estructura lógica de un argumento. Una tesis y su antítesis tienen embeddings parecidos: ambas hablan del mismo tema, usan vocabulario similar. La tensión entre ellas no se representa.
Esto significa que un sistema RAG que recupera "los fragmentos más relevantes" puede recuperar argumentos que se contradicen mutuamente sin que el sistema sepa que se contradicen. El LLM intentará sintetizarlos, produciendo una respuesta que elimina la tensión productiva en lugar de resolverla.
Para los usuarios: la progresión argumentativa que requiere mantener la contradicción en mente durante varios pasos de razonamiento —el tipo de pensamiento que produce síntesis genuinas— no es lo que un sistema RAG facilita de forma natural. Facilita la recuperación de lo relacionado, no la construcción de lo nuevo.
Existe evidencia empírica sobre los efectos de la delegación tecnológica en la cognición. El caso más estudiado es el de la navegación con GPS: los usuarios frecuentes desarrollan peor memoria espacial y menor activación del hipocampo durante la navegación que los usuarios que navegan sin asistencia tecnológica (Dahmani & Bohbot, 2020). Cuando el GPS falla, la desorientación es mayor en los usuarios habituales que en los ocasionales.
La analogía con la IA generativa es estructuralmente similar aunque menos estudiada: cuando un usuario delega habitualmente la síntesis, la redacción o el análisis a un LLM, esas capacidades cognitivas se ejercitan menos. Los estudios disponibles en 2025 muestran correlaciones entre el uso intensivo de herramientas de escritura asistida y la reducción de la complejidad sintáctica y argumentativa en la escritura sin asistencia del mismo usuario.
Caliskan et al. (2017) demostraron que los espacios vectoriales aprenden automáticamente asociaciones culturales implícitas presentes en el corpus de entrenamiento. Las asociaciones documentadas en ese trabajo (hombre → carrera / mujer → familia, entre otras) han sido confirmadas y extendidas por estudios posteriores en múltiples idiomas y culturas.
La consecuencia directa para los sistemas que construimos: no existe un embedding culturalmente neutro. Todo espacio vectorial es una proyección de la distribución cultural del corpus que lo generó. Los sistemas que toman decisiones basadas en embeddings —sistemas de selección de personal, de scoring de crédito, de moderación de contenido— heredan estos sesgos culturales de forma invisible.
Esto no es una limitación técnica resoluble con más datos. Es una consecuencia estructural de la arquitectura. El diseñador del sistema tiene la responsabilidad de medirla (herramientas de equidad como Fairlearn o AIF360) y de comunicarla explícitamente a los stakeholders.
Shumailov et al. (2023) demostraron experimentalmente un efecto que denominaron "model collapse": cuando los modelos se entrenan con datos generados por modelos anteriores, la diversidad de salidas disminuye progresivamente, los errores se amplifican generación tras generación, y el modelo "olvida" conocimientos raros o especializados.
La implicación a escala social: si una fracción significativa del contenido publicado en internet es generado por LLMs, y ese contenido se incorpora al corpus de entrenamiento de los modelos de la próxima generación, existe un mecanismo de retroalimentación que tiende hacia la homogeneización del corpus y, en consecuencia, hacia la homogeneización de los outputs. Las ideas que aparecen poco en el corpus original aparecen aún menos en el corpus autopoyético.
El diagnóstico de los apartados anteriores no lleva a "no usar IA". Lleva a usarla de forma que preserve, en lugar de erosionar, la capacidad cognitiva del usuario. Hay tres niveles de intervención con diferente coste y alcance:
Antes de incorporar un output de IA a tu trabajo, identifica explícitamente: (1) qué afirmaciones son verificables y has comprobado, (2) qué afirmaciones son inferencias del modelo que no has verificado, (3) qué añadiste, modificaste o rechazaste del output y por qué. Este protocolo no es burocracia: es el ejercicio que mantiene activa la capacidad de análisis independiente.
Cuando un equipo usa la IA para generar propuestas o análisis, reserva tiempo explícito en la reunión para que alguien argumente en contra de la propuesta del sistema, no para descreditarla sino para asegurarse de que el equipo ha pensado críticamente y no ha "validado automáticamente" por inercia. Los equipos que hacen esto producen outputs de mayor calidad y mantienen mejor su capacidad de análisis sin asistencia.
Un sistema de IA responsable para uso formativo o de toma de decisiones no debería buscar la fluidez total. Debería incluir fricción cognitiva intencional: momentos donde el sistema fuerza al usuario a pensar antes de recibir la respuesta. Ejemplos concretos: mostrar siempre las fuentes con su nivel de confianza antes de la síntesis, pedir al usuario que formule su hipótesis antes de que el sistema responda, mostrar argumentos en tensión en lugar de síntesis cuando el tema es genuinamente debatido.
Entiendes por qué los sistemas de IA tienen un sesgo estructural hacia lo convencional, por qué los embeddings no son culturalmente neutros, y qué mecanismos concretos pueden contrarrestar la delegación cognitiva a nivel individual, de equipo y de sistema. Cuando diseñes un sistema de IA para usuarios que deben mantener su capacidad de análisis independiente —formación, decisiones complejas, trabajo creativo— tienes herramientas para pensar en cómo preservar esa capacidad, no solo en cómo maximizar la utilidad inmediata del sistema.
Terminología original propuesta en este manual, explícitamente distinguida del corpus establecido en la literatura académica y técnica.
⚠️ Capítulo de investigación en curso — no terminología estándar
Antes de leer este capítulo, ten presente:
Cada concepto incluye: la definición propuesta, el problema que intenta nombrar, su relación con conceptos establecidos, y el estado de validación empírica conocido a la fecha de publicación.
Para cada concepto se incluye el anclaje a literatura o frameworks existentes. Este anclaje cumple dos funciones distintas:
El lector que no comparte la metáfora propuesta puede usar directamente el término técnico estándar indicado en cada sección — y llegar al mismo modelo mental con vocabulario transferible a cualquier contexto profesional.
Problema que nombra: el sesgo estructural de los modelos generativos hacia lo convencional, que no es un fallo técnico sino una consecuencia de la optimización por verosimilitud del siguiente token.
Relación con conceptos establecidos: relacionado con los fenómenos de "mode collapse" y "distributional bias" en la literatura de ML, pero enfocado en la consecuencia epistémica para el usuario más que en la propiedad estadística del modelo.
Problema que nombra: la posible regresión cognitiva asociada al uso intensivo de IA como sustituto del pensamiento crítico, en lugar de como amplificador de él.
Relación con conceptos establecidos: relacionado con la investigación sobre cognición distribuida (Hutchins, 1995), la hipótesis de la cognición extendida (Clark & Chalmers, 1998), y los estudios sobre delegación tecnológica y cognición espacial (Dahmani & Bohbot, 2020). La aplicación específica a LLMs y el término "neotenia informativa" son propuestas del autor.
Problema que nombra: la ausencia de una métrica estandarizada para medir el riesgo de homogeneización cognitiva en sistemas RAG y en el corpus que los alimenta.
Relación con conceptos establecidos: el índice de Shannon es un concepto establecido en teoría de la información y ecología. Su aplicación a la diversidad cognitiva de corpus documentales es la propuesta original del autor.
Problema que nombra: los sistemas RAG optimizados para recuperar lo "más relevante" (máxima similitud coseno) tenderán a recuperar lo más cercano al punto de partida, reforzando el conocimiento ya conocido. El Bridge Score intentaría identificar los fragmentos que generan conexiones inesperadas y potencialmente valiosas.
Relación con conceptos establecidos: relacionado con el concepto de "bridging ties" en análisis de redes sociales (Burt, 2004) y con la investigación sobre creatividad computacional. La aplicación a la recuperación de información en sistemas RAG es propuesta del autor.
Problema que nombra: la intuición errónea de que añadir más agentes a un pipeline equivale a añadir más capacidad de forma aditiva, cuando en realidad añade incertidumbre de forma multiplicativa.
Relación con conceptos establecidos: el fenómeno subyacente está documentado en teoría de sistemas complejos y en ingeniería de fiabilidad (reliability engineering). El término específico "entropía arquitectónica" y su aplicación a pipelines de agentes IA es propuesta del autor.
Problema que nombra: la tendencia a tratar la IA como sustituta de la lógica determinista (delegando decisiones críticas al LLM) o como obstáculo para evitar (rechazando la IA por sus limitaciones), en lugar de como componente con un perfil claro de fortalezas y debilidades.
Relación con conceptos establecidos: el "patrón sándwich" descrito en el Capítulo 12 (Módulo 3) es la implementación arquitectónica del Pacto Sintético. El concepto general de sistemas híbridos probabilístico-deterministas es establecido en la literatura de arquitectura de software. El término "Pacto Sintético" y su formulación como marco filosófico son del autor.
60+ términos del ecosistema de IA, organizados por categoría y con referencias cruzadas al manual.
Manual completo — Comprender la IA · Edición 2026
Autor: David Escudero de Félix · Versión de trabajo 2026
Para uso de formación, revisión y mejora continua.
Los conceptos marcados con ★ son propuestas del autor, no terminología estándar del sector.