Capítulo 09 · Contexto · 8 min

Lo que el modelo recuerda

La ventana de contexto: memoria perfecta pero acotada. Por qué ChatGPT olvida y qué cuesta.

El modelo no recuerda: relee

Un LLM no tiene memoria permanente de la conversación. En cada respuesta, recibe una lista de tokens: mensajes del usuario, respuestas anteriores, instrucciones del sistema, documentos añadidos. Eso es la ventana de contexto.

Lo que está dentro, el modelo puede usarlo. Lo que queda fuera, no existe para él.

Desliza el contenido: lo que sale de la ventana se olvida definitivamente. El coste computacional de la attention crece en O(n²) con el tamaño del contexto, lo que explica la carrera por ventanas de 1M tokens.

Una ventana, no una base de datos

La ventana de contexto se parece menos a una memoria y más a una hoja colocada delante del modelo en el momento de responder.

Si una información antigua sigue en la hoja, puede influir. Si fue empujada fuera por mensajes nuevos, el modelo no puede recuperarla por voluntad propia.

"Lo hablamos antes" no ayuda si ese "antes" ya no está en el contexto.

Las primeras versiones de GPT-3 tenían ventanas de 2.048 tokens. Hoy el millón de tokens se ha vuelto habitual en los modelos frontera, y Llama 4 Scout anuncia 10 millones desde abril de 2025 — con un matiz importante: por encima del millón, la recuperación efectiva se degrada bastante. La ventana anunciada no es la ventana realmente aprovechable. La evolución es enorme, pero no cambia la naturaleza del problema: siempre hay un límite.

El coste crece rápido

La atención compara tokens entre sí. Con n tokens, el coste se acerca a O(n²). Por eso una ventana larga es cara: no solo hay más tokens que leer, también hay más pares de tokens que comparar.

Es también la razón de que las conversaciones largas salgan cuadráticamente más caras que las cortas: cuando la conversación se duplica, el cálculo se cuadruplica.

Modelos recientes usan optimizaciones para ampliar esta ventana (FlashAttention, sliding window, sparse attention), pero la intuición permanece: más contexto significa más coste y más riesgo de distraer al modelo. Los detalles del lado de inferencia — y cómo interactúan con el KV cache — están en el capítulo 18.

Contexto útil vs contexto ruidoso

Meter todo no siempre mejora la respuesta. Un contexto enorme puede contener contradicciones, información irrelevante o detalles antiguos que compiten con la pregunta actual.

Un buen sistema no solo aumenta la ventana. También selecciona qué poner dentro.

La posición también cuenta. En 2023, Liu y sus colegas mostraron que los LLM no explotan todo el contexto con la misma eficacia: lo que está al principio y al final de la ventana se aprovecha mejor que lo que queda en medio — es el fenómeno del "lost in the middle". Los modelos de contexto largo de 2025-2026 han atenuado mucho el problema: encontrar una frase concreta perdida en medio de un documento enorme (el test de la aguja en el pajar) está hoy prácticamente resuelto. Lo que resiste es el razonamiento: en cuanto hay que cruzar varios pasajes alejados entre sí, la posición sigue importando. En la práctica: pon lo más importante al principio o al final del prompt, no en el centro.

El KV cache, en dos palabras

Calcular la atención sobre todos los tokens en cada nuevo paso sería catastrófico. La optimización que salva la situación se llama KV cache: se guardan en memoria los cálculos ya hechos, y solo se añade la fila del nuevo token en cada paso.

Eso es lo que hace posible la generación en tiempo real — y lo que consume VRAM proporcionalmente a la longitud del contexto. Volvemos sobre ello en detalle en el capítulo 18.

System prompts y chat templates

Cuando envías un mensaje a ChatGPT o Claude, lo que recibe el modelo no es exactamente tu mensaje. Es una secuencia cuidadosamente formateada que se parece a:

<|im_start|>system
Eres un asistente útil y conciso.
<|im_end|>
<|im_start|>user
¿Cuál es la capital de Francia?
<|im_end|>
<|im_start|>assistant

Este formato — el chat template — transforma un diálogo en una secuencia lineal de tokens, con marcadores especiales que distinguen los roles (system, user, assistant). Es lo que el modelo aprendió a reconocer durante el fine-tuning.

El system prompt es un mensaje especial colocado al principio. Fija el comportamiento, el tono, las restricciones ("responde en JSON", "no respondas nunca a preguntas sobre tal tema", "eres un abogado americano especializado en propiedad intelectual"). Vive en la ventana de contexto como cualquier otro mensaje, pero su posición al inicio y su rol privilegiado hacen que pese más que los mensajes ordinarios.

Cada familia de modelos abiertos tiene su template propio: ChatML, popularizado por OpenAI, [INST]...[/INST] para Llama 2, otras variantes para Llama 3, Mistral o Qwen. Si ejecutas uno de esos modelos tú mismo y tecleas el diálogo a mano sin respetar el formato correcto, el modelo se comporta mal — fue entrenado para ver esos marcadores y los espera.

Con las APIs propietarias (OpenAI, Anthropic, Google) nunca ves esos marcadores. Envías una lista de mensajes estructurados, cada uno con su rol (system, user, assistant), y el formateo se aplica en el servidor. El mecanismo es el mismo; solo está oculto.

Lo siguiente

Si la información necesaria no cabe siempre en el prompt, necesitamos buscarla justo antes de responder. Esa es la idea del RAG: recuperar fragmentos relevantes y colocarlos en el contexto.

Actualizado el