Encontrado no Meio: Calibrar o Viés de Atenção Posicional Melhora o RAG de Contexto Longo
Tenho pensado no problema "perdido no meio" (lost-in-the-middle) desde que escrevi o log sobre a descoberta original de Liu et al.: forneça um contexto longo a um LLM, e ele ignorará confiavelmente as evidências enterradas no meio. "Found in the Middle: Calibrating Positional Attention Bias Improves Long Context Utilization" (Hsieh et al., ACL Findings 2024, arXiv:2406.16008) oferece a correção mais direta e prática que já vi: uma calibração em tempo de inferência sem treinamento que subtrai o viés posicional do modelo de seus pesos de atenção, recuperando até 15 pontos percentuais de precisão de RAG.
O artigo
Hsieh et al. partem de uma observação diagnóstica: LLMs — mesmo aqueles treinados em contextos longos — exibem um padrão de atenção persistente em forma de U. Tokens no início e no final da entrada recebem atenção desproporcionalmente alta, independentemente de serem relevantes, enquanto tokens no meio são sistematicamente subponderados. Os autores conectam isso empiricamente à queda de precisão do tipo "perdido no meio", em vez de tratá-lo como um fenômeno separado.
Sua correção é elegante no conceito. Eles decompõem a atenção em dois componentes aditivos: relevância (o que queremos) e viés posicional (o que não queremos). Para isolar o termo de viés, eles passam um documento "fictício" (dummy) — conteúdo de preenchimento não informativo — através do mesmo contexto em cada posição e registram a distribuição de atenção resultante. Essa atenção do documento fictício aproxima o prior posicional puro. Subtraí-lo das pontuações de atenção reais deixa um resíduo que reflete melhor a verdadeira relevância:
Atenção calibrada = Attn(documento, k) − Attn(fictício, k)
As pontuações reescalonadas são então usadas para reordenar ou reponderar os documentos recuperados antes da etapa final de geração de resposta. Crucialmente, nenhum treinamento é necessário. A calibração é aplicada em tempo de inferência às últimas 16 camadas do decodificador e a todas as cabeças de atenção. O custo é de O(K) passagens para frente (forward passes) adicionais, onde K é o número de documentos recuperados — não trivial, mas previsível.
Ideias principais
- O viés de atenção em forma de U é intrínseco à arquitetura do modelo e persiste mesmo em modelos explicitamente treinados com objetivos de contexto longo.
- Passar um documento fictício (vazio/ruído) pelo mesmo contexto de recuperação isola o prior posicional; subtraí-lo remove o viés sem qualquer ajuste fino (finetuning).
- O Recall@3 no NaturalQuestion (K=20, documento gold colocado no meio) salta de 20,52% para 68,32% com calibração; com K=10, de 36,38% para 74,27%.
- A precisão de QA de ponta a ponta melhora de 6 a 15 pontos percentuais quando o documento gold está no meio do contexto; as melhorias se mantêm em 22 de 24 configurações experimentais.
- O método supera seis linhas de base de comparação: atenção padrão (vanilla), ordenação por geração de consulta, prompting de geração de relevância, ordenação por atenção (Peysakhovich & Lerer 2023), reordenação de prompts e LongLLMLingua-rk.
- O método foi avaliado no NaturalQuestion (2.655 consultas reais sobre a Wikipedia) e SynthWiki (990 entradas sintéticas geradas pelo GPT-4).
O que se sustenta — e o que não
O resultado central é impressionante e eu acredito nele. Uma lacuna de Recall@3 de 20,52% → 68,32% para documentos gold no meio do contexto não é o tipo de número que desaparece sob escrutínio — ele mede algo real sobre como a atenção é distribuída. O design sem treinamento é uma vantagem prática genuína: você pode aplicar isso sobre qualquer pipeline RAG existente sem tocar nos pesos do modelo.
Dito isso, tenho algumas ressalvas. Primeiro, a abordagem do "documento fictício" assume que o viés posicional é aproximadamente separável por posição e aditivo — uma decomposição linear que os próprios autores sinalizam como potencialmente simplista. O viés de atenção real pode interagir com o conteúdo de formas não lineares. Segundo, as O(K) passagens para frente extras são precificadas como "aceitáveis", mas nunca avaliadas em termos de latência ou custo. Em um sistema de produção com K=20 recuperações, você está executando 21 passagens para frente em vez de 1 por consulta. Para um agente Beancount fazendo a triagem de centenas de transações, esse multiplicador importa.
Terceiro — e esta é a limitação mais interessante — os autores observam que o viés posicional pode, na verdade, ser útil para certas tarefas. O viés de recência, por exemplo, pode ser o que faz um modelo ponderar corretamente lançamentos recentes de um livro contábil em relação aos mais antigos. Remover o viés indiscriminadamente pode prejudicar tarefas onde a posição é um sinal válido. Isso é reconhecido, mas não estudado.
Finalmente, os experimentos usam o NaturalQuestion e um conjunto de dados sintético. Documentos específicos de finanças — tabelas densas, registros de vários anos, lançamentos contábeis com estrutura repetitiva — são muito diferentes das passagens de domínio aberto da Wikipedia. A calibração precisaria ser validada nessas distribuições antes de afirmar que funcionará para RAG financeiro.
Por que isso importa para a IA financeira
A conexão direta é clara: todos os logs desde o DocFinQA têm circulado o mesmo problema. Quando um agente Beancount recupera 20 lançamentos relevantes de um livro contábil para responder a uma pergunta como "reconciliar março com o extrato bancário", as entradas do meio da janela recuperada serão sistematicamente subatendidas em relação às entradas no topo e na base do contexto. Isso não é uma falha de recuperação — é uma falha do lado da geração que nenhuma melhoria na ordenação da recuperação corrigirá.
A calibração "encontrado no meio" é uma mitigação plausível que não requer o retreinamento do modelo subjacente e poderia ser aplicada diretamente dentro da etapa de geração de qualquer pipeline de QA de livros contábeis. A preocupação com o custo O(K) é real, mas gerenciável — uma janela de recuperação de 20 documentos com um modelo de tamanho moderado ainda está bem dentro dos limites práticos. O que eu gostaria de ver antes de implantá-lo é uma validação especificamente em dados estruturados do Beancount: a correção posicional ajuda uniformemente ou suprime inadvertidamente o sinal de recência que torna as transações recentes mais confiáveis do que as antigas?
O princípio mais amplo — de que os mecanismos de atenção codificam priors posicionais independentemente da relevância do conteúdo, e que esses priors podem ser calibrados sem retreinamento — vale a pena manter. Isso abre as portas para calibrações semelhantes para outros vieses: viés de frequência de tokens, normalização de comprimento de entrada, viés de verbosidade na geração.
O que ler a seguir
- "Mitigate Position Bias in LLMs via Scaling a Single Hidden States Channel" (arXiv:2406.02536, ACL Findings 2025) — propõe o escalonamento de uma única dimensão de estado oculto em vez de subtrair pontuações de atenção; vale a pena comparar diretamente com a abordagem do "encontrado no meio".
- "Large Language Models for Anomaly and Out-of-Distribution Detection: A Survey" (arXiv:2409.01980, NAACL 2025) — o próximo na lista de leitura; une os fios de AnoLLM, CausalTAD e AD-LLM em uma taxonomia unificada.
- Liu et al., "Lost in the Middle: How Language Models Use Long Contexts" (arXiv:2307.03172, TACL 2023) — o diagnóstico original ao qual o "encontrado no meio" está respondendo; leitura de base essencial.
