antonio leandro

ia generativa

Lost in the Middle: How Language Models Use Long Contexts

paper · núcleo · Nelson F. Liu, Kevin Lin, John Hewitt, et al. ·

a tese

modelos de contexto longo não leem o contexto inteiro: mova a informação relevante para o meio da entrada e a acurácia despenca — às vezes para baixo do que o modelo acerta sem receber documento nenhum.

o que fica

  1. A curva de acurácia em função da posição tem forma de U: o modelo usa bem o que está no começo (primacy bias) e no fim (recency bias) da entrada, e falha no meio.
  2. Com 20 e 30 documentos e a resposta no meio, o GPT-3.5-Turbo fica abaixo da própria acurácia sem nenhum documento (56,1% no closed-book) — contexto a mais piorou o resultado.
  3. Janela maior não implica uso melhor: GPT-3.5-Turbo e GPT-3.5-Turbo (16K) têm curvas praticamente sobrepostas quando a entrada cabe nos dois, e o mesmo vale para Claude-1.3 e a versão de 100K.
  4. O viés não vem do instruction tuning: o MPT-30B cru também desenha o U, e nos Llama-2 o primacy bias só aparece a partir de 13B — o de 7B tem apenas recency bias.
  5. Repetir a pergunta antes e depois dos dados resolve a tarefa sintética de key-value (acurácia quase perfeita com 300 pares), mas quase não muda o QA multi-documento.
  6. Num setup retriever-reader, a acurácia do reader satura muito antes do recall do retriever: ir de 20 para 50 documentos rendeu cerca de 1,5% no GPT-3.5-Turbo e 1% no Claude-1.3.

o problema

Em 2023 a janela de contexto virou número de marketing. Transformers costumavam ser treinados com 512 a 2048 tokens porque atenção custa memória e compute quadráticos no comprimento da sequência; com GPU melhor e truques de posição, apareceram modelos de 4K, 16K, 32K e 100K tokens. O que ninguém tinha medido é se o modelo de fato usa aquilo. A avaliação padrão era perplexidade em corpus web, que premia principalmente predição local e diz pouco sobre acesso preciso a um fato específico enterrado no meio da entrada.

A pergunta não era acadêmica. Todo pipeline de retrieval-augmented generation em produção rodava sobre uma hipótese não testada: recupere mais documentos, cole tudo no prompt, o modelo se vira para achar o que importa. Se essa hipótese for falsa, a decisão de engenharia mais comum da época — aumentar o k do retriever porque o contexto agora cabe — está gastando token, latência e dinheiro para piorar a resposta.

a ideia

O desenho experimental é uma variável de controle, e é aí que está o mérito. Fixe a tarefa, fixe o conjunto de documentos, fixe a resposta desejada. Mude só uma coisa: a posição do documento que contém a resposta dentro do contexto. Reordenar documentos não muda o que o modelo deveria responder. Logo, qualquer variação de acurácia é viés posicional puro, não dificuldade da pergunta.

O raciocínio complementar é igualmente simples: se um modelo usa o contexto longo de forma robusta, a curva de acurácia contra posição tem que ser plana. Não é. É um U.

como funciona

Duas tarefas. A primeira é QA multi-documento sobre o NaturalQuestions-Open, usando as 2.655 queries cuja resposta anotada é um parágrafo. Cada entrada tem uma pergunta e k passagens da Wikipédia de até 100 tokens: exatamente uma contém a resposta, e as k−1 distratoras vêm do Contriever (fine-tuned em MS-MARCO), escolhidas por serem relevantes à query sem conter a resposta. Testam-se 10, 20 e 30 documentos, movendo o documento correto pelos índices. A métrica é se alguma das respostas anotadas aparece na saída.

Os números do GPT-3.5-Turbo com 20 documentos: 75,8% com a resposta no índice 0, 53,8% no índice 9, 63,2% no último. O closed-book — sem documento algum — dá 56,1%, e o oracle, só com a passagem certa, dá 88,3%. Ou seja: a versão com a resposta no meio de vinte documentos rende menos que não passar contexto nenhum.

A segunda tarefa é sintética e serve para isolar recuperação de raciocínio: um JSON com k pares chave-valor, todos UUIDs de 128 bits aleatórios, e a pergunta é o valor de uma chave. Sem semântica, sem confundidor linguístico. Com 75, 140 e 300 pares, Claude-1.3 acerta quase tudo; GPT-3.5-Turbo, GPT-3.5-Turbo (16K) e MPT-30B-Instruct repetem o U, com pior caso em 45,6%. Match exato de token já é difícil no meio.

As ablações fecham o argumento. Arquitetura: Flan-UL2 é robusto dentro dos 2048 tokens de treino (1,9% de diferença entre melhor e pior caso) e passa a desenhar o U acima disso — a hipótese é que o encoder bidirecional contextualiza cada documento sabendo dos posteriores. Query-aware contextualization: repetir a pergunta antes e depois dos dados leva todos os modelos a desempenho quase perfeito no key-value, e muda quase nada no QA. Instruction tuning: o MPT-30B base também faz o U, então não é a formatação do fine-tuning que ensina o modelo a olhar para o começo.

o que isso custou

Isto é diagnóstico, não explicação. Os próprios autores chamam a seção de causas de investigação preliminar: não há conta mecanicista de por que a atenção, que tecnicamente alcança qualquer token com o mesmo custo, se comporta como a serial-position effect da psicologia. A métrica é substring match, generosa por construção. O corpus da Wikipédia é de 2018 e desalinha temporalmente com as anotações do NaturalQuestions — eles rodam um subconjunto sem ambiguidade e chegam à mesma conclusão, mas a ressalva fica. O GPT-4 só entrou num subconjunto de 500 exemplos com 20 documentos, porque a avaliação completa custaria mais de 6.000 dólares; o U aparece lá também, com acurácia absoluta maior.

O limite mais honesto é o do próprio setup: nas tarefas controladas existe exatamente um documento com a resposta, o que não é RAG de verdade. Por isso o estudo de caso final, com retriever-reader real sobre o NaturalQuestions-Open, é a parte mais acionável — o reader satura muito antes do recall do retriever. E o fato de query-aware contextualization consertar a tarefa sintética sem consertar o QA mostra que a correção fácil não é correção.

onde isso aparece hoje

O paper propõe um protocolo de avaliação, e ele pegou: para alegar que um modelo usa contexto longo, mostre que a diferença entre melhor e pior caso posicional é pequena. Varreduras de posição no estilo needle-in-a-haystack viraram teste de fumaça de lançamento de modelo com janela grande.

Do lado da engenharia, as duas recomendações dos autores continuam valendo em qualquer pipeline de RAG: reranking que empurre o documento mais provável para o início do contexto, e truncar a lista recuperada em vez de encher a janela porque ela cabe. E “lost in the middle” virou o nome do fenômeno.

lido na íntegra por pipeline de llm, revisado por antonio leandro antes de publicar ·