Context Window
Uma janela de contexto é o número máximo de tokens aos quais um modelo pode prestar atenção em uma solicitação, compartilhado entre o prompt, o histórico, os documentos e a resposta.
Uma janela de contexto é o número máximo de tokens que um modelo consegue levar em conta em uma única solicitação. Para um modelo de linguagem grande (LLM), tudo o que ele lê e escreve consome esse limite: o prompt de sistema, as definições de ferramentas, o histórico da conversa, os documentos recuperados, a pergunta do usuário e a resposta gerada. O conteúdo que fica fora da janela não chega ao modelo, por isso um chatbot perde o início de uma conversa muito longa quando os turnos anteriores são cortados. As janelas cresceram de 2.048 tokens no GPT-3 para 128K tokens no GPT-4 Turbo no fim de 2023 e 1 milhão no Gemini 1.5 Pro do Google em 2024; o Llama 4 Scout da Meta anuncia 10 milhões.
O que preenche a janela de contexto#
A tokenização divide o texto em fragmentos de subpalavras que têm, em média, cerca de quatro caracteres em inglês; assim, uma janela de 128K tokens comporta o equivalente a aproximadamente 300 páginas. Um modelo de visão e linguagem (VLM) também consome tokens com imagens, geralmente centenas de tokens de recorte por imagem; por isso, um vídeo longo preenche a janela muito mais rápido do que sua transcrição. Os tokens gerados contam para o mesmo limite, e os provedores definem um limite separado para o tamanho da saída dentro dele. Por isso, aplicações que mantêm conversas longas ou executam agentes de IA montam o prompt a cada turno e decidem o que manter:
Por que as janelas têm limites#
Dois custos aumentam com o comprimento. A autoatenção compara cada token com todos os demais, então o custo computacional da atenção cresce quadraticamente com o número de tokens. Durante a geração de texto, o cache KV mantém as chaves e os valores de cada token anterior: o Llama 3.1 8B, com 32 camadas e 8 cabeças de chave-valor de 128 dimensões cada, armazena 128 KiB por token com precisão de 16 bits, ou 16 GiB em sua janela completa de 131.072 tokens — mais do que os 16 GB ocupados por seus pesos.
O treinamento também determina o tamanho da janela. Um modelo treinado com sequências de 8K tokens nunca viu posições além desse limite; para estendê-lo, é preciso redimensionar seus embeddings posicionais rotativos (RoPE) com métodos como YaRN e fazer um breve ajuste fino com textos mais longos. A execução de janelas longas depende de técnicas para economizar memória: a atenção flash calcula a atenção exata sem armazenar a matriz completa de pontuações; a atenção de consultas agrupadas (GQA) reduz o cache KV; a atenção de janela deslizante limita cada token aos vizinhos recentes; e a atenção em anel divide uma sequência entre várias GPUs.
Contexto anunciado e contexto efetivo#
Um modelo que aceita um milhão de tokens não os utiliza a todos com a mesma eficácia. O estudo de 2023 Lost in the Middle constatou que os modelos respondem melhor quando a passagem relevante está no início ou no fim do prompt e pior quando está no meio. Os testes de agulha no palheiro (NIAH) medem a recuperação de um fato inserido em diferentes posições e comprimentos, e o mais desafiador benchmark RULER constatou que apenas metade dos 17 modelos que declaravam aceitar 32K tokens ou mais apresentou desempenho satisfatório com 32K. A queda gradual de desempenho à medida que as entradas crescem é chamada de deterioração do contexto, e a geração aumentada por recuperação (RAG) e a engenharia de contexto a combatem incluindo na janela apenas o material relevante.
Janela de contexto e termos relacionados#
- Campo receptivo: A região de uma imagem de entrada que influencia uma saída de uma rede neural convolucional (CNN). O campo receptivo é determinado pelos tamanhos dos kernels e pela profundidade, enquanto a janela de contexto é um limite de tokens.
- Tamanho do lote: O número de sequências independentes processadas em conjunto. A janela de contexto limita o comprimento de cada uma.
- Memória: A memória de um agente, como a memória episódica armazenada em um banco de dados vetorial, persiste fora da janela e é copiada de volta para ela quando relevante.
Janelas de contexto na detecção de vocabulário aberto#
Os codificadores de texto dentro dos modelos de visão também têm janelas. A Ultralytics YOLOE e o YOLO-World codificam cada prompt de classe com um codificador de texto da família CLIP cuja janela de contexto é de 77 tokens, e o codificador de texto da Ultralytics trunca os prompts mais longos por padrão. O mesmo tokenizador CLIP mostra o que é cortado:
import clip
from clip.simple_tokenizer import SimpleTokenizer
prompt = (
"a warehouse worker wearing a yellow high-visibility vest, a white hard hat, blue gloves and clear safety "
"glasses, standing beside a red forklift that carries wooden pallets stacked with brown cardboard boxes, "
"under bright ceiling lights in a narrow aisle between tall metal shelves, next to a fire extinguisher "
"mounted on the wall, a green emergency exit sign, an open loading dock door and a black dog"
)
# CLIP's BPE tokenizer wraps the text in start and end tokens
tokenizer = SimpleTokenizer()
print(f"Prompt length: {len(tokenizer.encode(prompt)) + 2} tokens")
# The text encoder reads a fixed 77-token window, so truncation drops the tail
tokens = clip.tokenize(prompt, truncate=True)[0]
kept = tokenizer.decode(tokens[1:-1].tolist())
print(f"Window: {len(tokens)} tokens ending in '{' '.join(kept.split()[-4:])}'")
print(f"'black dog' kept: {'black dog' in kept}")O prompt tem 80 tokens, então a janela mantém os primeiros 75 tokens de texto e os marcadores de início e fim, termina em “loading dock door and” e descarta “a black dog” antes mesmo que o codificador os veja.










