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 conversacion. 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 esta dentro, el modelo puede usarlo. Lo que queda fuera, no existe para el.

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 mas a una hoja colocada delante del modelo en el momento de responder.

Si una informacion 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 esta en el contexto.

El coste crece rapido

La atencion compara tokens entre si. Con n tokens, el coste se acerca a O(n²). Por eso una ventana larga es cara: no solo hay mas tokens que leer, tambien hay mas pares de tokens que comparar.

Modelos recientes usan optimizaciones para ampliar esta ventana (FlashAttention, sliding window, sparse attention), pero la intuicion permanece: mas contexto significa mas coste y mas riesgo de distraer al modelo. Los detalles del lado de inferencia — y como interactuan con el KV cache — estan en el capitulo 18.

Contexto util vs contexto ruidoso

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

Un buen sistema no solo aumenta la ventana. Tambien selecciona que poner dentro.

El KV cache, en dos palabras

Calcular la atencion sobre todos los tokens en cada nuevo paso seria catastrofico. La optimizacion que salva la situacion se llama KV cache: se guardan en memoria los calculos ya hechos, y solo se añade la fila del nuevo token en cada paso.

Eso es lo que hace posible la generacion en tiempo real — y lo que consume VRAM proporcionalmente a la longitud del contexto. Volvemos sobre ello en detalle en el capitulo 18.

System prompts y chat templates

Cuando envias 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 util y conciso.
<|im_end|>
<|im_start|>user
Cual es la capital de Francia?
<|im_end|>
<|im_start|>assistant

Este formato — el chat template — transforma un dialogo en una secuencia lineal de tokens, con marcadores especiales que distinguen los roles (system, user, assistant). Es lo que el modelo aprendio 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 posicion al inicio y su rol privilegiado hacen que pese mas que los mensajes ordinarios.

Cada familia de modelos tiene su template propio: ChatML para OpenAI, [INST]...[/INST] para Llama 2, variantes mas recientes para Llama 3 y Claude. Si tecleas tu dialogo a mano sin respetar el formato correcto, el modelo se comporta mal — fue entrenado para ver esos marcadores y los espera.

Lo siguiente

Si la informacion 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

La ventana de contexto: lo que un LLM recuerda · Step by Token