Uma janela de contexto é a quantidade máxima de texto que um modelo de linguagem consegue levar em conta de uma só vez, medida em tokens. Ela inclui tudo o que o modelo lê em uma solicitação (instruções, a conversa, quaisquer documentos) mais o texto que ele escreve como resposta. Enquanto o modelo produz essa resposta, qualquer coisa fora da janela não existe para ele.
Um grande modelo de linguagem não tem memória entre solicitações no sentido comum. Cada vez que responde, o software ao redor dele monta um bloco de texto e o entrega. A janela de contexto é o limite de tamanho desse bloco.
Como funciona uma janela de contexto?
Modelos de linguagem não leem caracteres nem palavras diretamente. Eles leem tokens, que são pequenos pedaços de texto, muitas vezes partes de palavras. Uma janela de contexto é informada como um número de tokens, e tanto a entrada quanto a saída contam para esse limite.
Quando o modelo gera uma resposta, ele prevê um token por vez. Para escolher cada novo token, ele olha para todos os tokens que estão na janela naquele momento, usando um mecanismo chamado atenção, que pondera o quanto cada token anterior é relevante para o próximo. O custo dessa comparação cresce à medida que a janela se enche, então entradas mais longas exigem mais tempo e poder computacional para serem processadas.
O limite é definido quando o modelo é construído e treinado. Os primeiros modelos conseguiam comportar algumas páginas de texto. Muitos modelos atuais aceitam entradas do tamanho de um livro longo, embora o limite exato varie entre modelos e entre as versões oferecidas em um app de chat e por meio de uma API para desenvolvedores.
O que ocupa espaço na janela de contexto?
Em um produto de chat ou de busca com IA, a pergunta do usuário costuma ser uma pequena parte do que o modelo lê. Uma solicitação típica contém várias camadas.
- Instruções de sistema. Texto oculto do produto que diz ao modelo como se comportar, qual formato usar e quais ferramentas ele pode chamar.
- Histórico da conversa. Perguntas e respostas anteriores no mesmo chat, para que uma pergunta de acompanhamento como "e a mais barata?" faça sentido.
- Documentos recuperados. Trechos buscados em um índice de busca ou nos arquivos de uma empresa no momento da pergunta.
- Resultados de ferramentas. Saída de uma calculadora, de uma execução de código ou de uma busca na web.
- A resposta. Cada token que o modelo escreve usa espaço na mesma janela.
Para sites, os documentos recuperados são a camada que importa. Na geração aumentada por recuperação, o sistema encontra texto relevante e o coloca na janela de contexto para que o modelo possa escrever a partir de fontes atuais, e não apenas dos dados de treinamento.
O que acontece quando a janela de contexto fica cheia?
O modelo não consegue ler além do seu limite, então o software precisa decidir o que deixar de fora. Os produtos lidam com isso de formas diferentes.
- Truncamento. As mensagens mais antigas ou o final de um documento longo são cortados.
- Resumo. Partes anteriores de uma conversa são condensadas em um resumo curto que ocupa menos tokens.
- Seleção. O sistema divide os documentos em trechos e insere apenas os que têm a maior pontuação em relação à pergunta, deixando o resto de fora.
É por isso que um chat longo pode parecer esquecer algo dito no início: as primeiras mensagens podem ter sido descartadas ou comprimidas. É também por isso que a busca com IA raramente passa páginas web inteiras para o modelo. Fazer o ranqueamento dos trechos e manter um número pequeno deles deixa espaço para as instruções, a conversa e a resposta.
Uma janela de contexto maior significa respostas melhores?
Uma janela maior permite que um modelo leia mais material de uma vez, como um contrato inteiro ou uma base de código longa. Se o modelo usa tudo isso bem é outra questão. Os modelos tendem a prestar mais atenção ao texto perto do início e do fim da entrada, e detalhes enterrados no meio de uma entrada muito longa têm mais chance de serem ignorados ou mal interpretados.
Mais texto também acrescenta ruído. Se a janela contém muitos trechos pouco relacionados, o modelo tem mais chances de pegar um fato errado ou confundir duas fontes. Produtos que operam em grande escala pagam por cada token processado, então têm um motivo para enviar menos trechos, e melhores, em vez de encher a janela. Por isso, os sistemas de busca com IA mantêm uma etapa de seleção mesmo quando o modelo tecnicamente poderia ler muito mais.
Por que a janela de contexto importa para um site?
Quando uma ferramenta de busca com IA responde a uma pergunta, uma página disputa um número limitado de vagas na janela de contexto. O sistema normalmente recupera muitas páginas candidatas, divide-as em trechos e mantém apenas alguns. Como a busca com IA escolhe quais fontes citar aborda essa etapa de ranqueamento. Somente o texto que chega à janela pode moldar a resposta ou ganhar uma citação.
Como o sistema trabalha com trechos, a unidade útil de uma página é uma seção que faz sentido por si só. Se um trecho apresenta um fato na primeira frase, nomeia o produto ou a marca de que trata e não depende de parágrafos anteriores para dar contexto, o modelo pode usá-lo diretamente. Um fato que só fica claro depois de ler três seções ao redor pode ser cortado antes que o modelo o veja.
A posição dentro da página importa pelo mesmo motivo. Introduções longas, texto de navegação repetido e conteúdo padrão ocupam tokens se forem extraídos junto com o conteúdo, e a resposta à pergunta pode acabar em um trecho que nunca é selecionado. Colocar a resposta direta perto do topo de cada seção aumenta a chance de que o trecho selecionado a contenha.
A janela de contexto também explica por que as respostas de IA variam de uma execução para outra. Pequenas diferenças em quais trechos são recuperados e mantidos mudam o que o modelo lê, e um conjunto diferente de entradas produz uma resposta diferente, com citações diferentes. Para medir a visibilidade em IA de forma confiável, execute os mesmos prompts repetidamente e registre com que frequência uma página ou marca aparece nas respostas.