Capítulo 09 · Contexto · 8 min
O que o modelo lembra
A janela de contexto: memória perfeita mas limitada. Por que o ChatGPT esquece e o que isso custa.
O modelo nao lembra: ele rele
Um LLM nao tem memoria permanente da conversa. Em cada resposta, ele recebe uma lista de tokens: mensagens do usuario, respostas anteriores, instrucoes de sistema, documentos adicionados. Isso e a janela de contexto.
O que esta dentro, o modelo pode usar. O que fica fora, nao existe para ele.
Arraste o conteúdo: o que sai da janela é definitivamente esquecido. O custo computacional da attention cresce em O(n²) com o tamanho do contexto, o que explica a corrida pelas janelas de 1M tokens.
Uma janela, nao um banco de dados
A janela de contexto se parece menos com memoria e mais com uma folha colocada diante do modelo na hora de responder.
Se uma informacao antiga ainda esta na folha, ela pode influenciar. Se foi empurrada para fora por novas mensagens, o modelo nao consegue recupera-la por vontade propria.
"Falamos disso antes" nao ajuda se esse "antes" ja nao esta no contexto.
O KV cache, em duas palavras
Calcular a atencao sobre todos os tokens a cada novo passo seria catastrofico. A otimizacao que salva a situacao se chama KV cache: guardamos na memoria os calculos ja feitos e adicionamos apenas a linha do novo token a cada passo.
E isso que torna a geracao em tempo real possivel — e o que consome VRAM proporcionalmente ao tamanho do contexto. Voltaremos a isso em detalhe no capitulo 18.
System prompts e chat templates
Quando voce envia uma mensagem ao ChatGPT ou ao Claude, o que o modelo recebe nao e exatamente sua mensagem. E uma sequencia cuidadosamente formatada que se parece com:
<|im_start|>system
Voce e um assistente util e conciso.
<|im_end|>
<|im_start|>user
Qual e a capital da Franca?
<|im_end|>
<|im_start|>assistant
Essa formatacao — o chat template — transforma um dialogo em uma sequencia linear de tokens, com marcadores especiais que distinguem os papeis (system, user, assistant). E isso que o modelo aprendeu a reconhecer durante o fine-tuning.
O system prompt e uma mensagem especial colocada bem no inicio. Ele fixa o comportamento, o tom, as restricoes ("responda em JSON", "nunca responda perguntas sobre o assunto X", "voce e um advogado americano especializado em propriedade intelectual"). Ele vive na janela de contexto como tudo o mais, mas sua posicao no inicio e seu papel privilegiado fazem com que tenha mais peso do que mensagens comuns.
Cada familia de modelos tem seu proprio template: ChatML para a OpenAI, [INST]…[/INST] para o Llama 2, variantes mais recentes para Llama 3 e Claude. Se voce digita seu dialogo manualmente sem respeitar o formato correto, o modelo se comporta mal — ele foi treinado para ver esses marcadores e espera ve-los.
Contexto util vs contexto ruidoso
Colocar tudo nem sempre melhora a resposta. Um contexto enorme pode conter contradicoes, informacao irrelevante ou detalhes antigos competindo com a pergunta atual.
Um bom sistema nao apenas aumenta a janela. Ele tambem seleciona o que colocar dentro.
Do lado da infraestrutura, varias tecnicas (sparse attention, sliding window, FlashAttention) tentam estender as janelas sem fazer o custo explodir. Os detalhes — e em particular como elas interagem com o KV cache — estao no capitulo 18.
O proximo passo
Se a informacao necessaria nem sempre cabe no prompt, precisamos busca-la logo antes de responder. Essa e a ideia do RAG: recuperar trechos relevantes e coloca-los no contexto.
Atualizado em