Glance: um único modelo de 9B seleciona os parágrafos para RAG por conta própria e supera o reranker

Sistemas de RAG (em que o modelo responde com base em documentos recuperados) costumam usar duas redes neurais: um reranker ordena os parágrafos encontrados, e um gerador escreve a resposta. Os autores do Glance ficaram com um único modelo de 9 bilhões de parâmetros. Eles acrescentaram a ele um adaptador pequeno (cerca de 0,1 GiB) que atribui uma nota de relevância a cada parágrafo. O modelo lê todos os candidatos uma única vez e, depois, responde a uma pergunta curta sobre cada parágrafo, continuando a partir do cache compartilhado. Após 39 minutos de ajuste fino no MS MARCO, a métrica nDCG@10 (o quanto os documentos certos ficam no topo dos 10 primeiros) no SciFact chegou a 0,741, contra 0,721 do bge-reranker-v2-m3. • No NFCorpus: 0,345 contra 0,326 do bge-reranker-v2-m3. • Com 200 candidatos (43 mil tokens), a vantagem sobre o cross-encoder chega a 0,058 de nDCG@10. • O reranker especializado continua mais rápido: 31–60 ms por consulta, contra ~420 ms do Glance.

Processado por IA de Hugging Face Daily Papers; editado por Hamidun News
Glance: um único modelo de 9B seleciona os parágrafos para RAG por conta própria e supera o reranker
Fonte: Hugging Face Daily Papers. Colagem: Hamidun News.
Ouvir artigo
Ficha técnica e números-chave
ParâmetroDados
Fonte originalHugging Face Daily Papers ↗
Editor-chefe
No NFCorpus0,345 contra 0,326 do bge-reranker-v2-m3.
Dado-chave #2Com 200 candidatos (43 mil tokens), a vantagem sobre o cross-encoder chega a 0,058 de nDCG@10.
Dado-chave #3O reranker especializado continua mais rápido: 31–60 ms por consulta, contra ~420 ms do Glance.

Um pipeline de RAG convencional mantém dois modelos na memória. Primeiro, o reranker ordena os parágrafos encontrados pela busca; depois, o gerador lê os melhores e escreve a resposta. Pesquisadores do projeto airun-ai propõem o Glance: o próprio gerador avalia os parágrafos, e um reranker separado deixa de ser necessário. Sobre um modelo de 9 bilhões de parâmetros congelado, eles acrescentaram um adaptador LoRA (um pequeno conjunto de pesos ajustados) e uma "cabeça indicadora" de 256 dimensões. Cada "habilidade" extra desse tipo ocupa cerca de 0,1 GiB. Por enquanto, os resultados são preliminares: os testes cobriram dois datasets de busca, um dataset de perguntas e respostas e uma única família de modelos.

Uma passada em vez de vinte

Um cross-encoder clássico (por exemplo, o bge-reranker-v2-m3) codifica cada par "consulta — parágrafo" separadamente. Com 20 candidatos, são 20 passadas. O Glance funciona de outro jeito.

  • O modelo lê todos os candidatos uma única vez e guarda um cache interno (prefill).
  • Desse cache partem sondas curtas, de cerca de 30 tokens cada: "O parágrafo N contém informação que responde à consulta?"
  • As sondas não enxergam umas às outras, mas cada uma vê todos os parágrafos e pode compará-los.
  • A cabeça indicadora converte o estado do modelo na sonda em uma nota de relevância. Nenhum texto é gerado nesse processo.

Há também a variante Glance-Activated. Nela, o adaptador é ativado apenas nos tokens das sondas, os parágrafos são codificados com os pesos base e a resposta continua a partir do cache original. No modo principal, os parágrafos selecionados (cerca de 1,5 mil tokens) são relidos com o adaptador desligado.

O modelo base, o MiMo-V2.6-Distill-Qwen-9B da Xiaomi, é híbrido: camadas de atenção linear Gated DeltaNet e de atenção convencional se alternam na proporção de 3:1. As camadas lineares têm um único estado sequencial, então os caches de parágrafos individuais não podem ser combinados em ordem arbitrária. Por isso, os autores optaram por ramificar copiando o cache a partir do fim do contexto compartilhado, e esse método é exato.

O que as medições mostraram

A avaliação usou nDCG@10: quanto mais alto os documentos certos ficam entre os dez primeiros, mais perto de 1 é o valor. Os rerankers ordenaram o top-20 do BM25 (busca textual clássica).

  • Sem treinamento em dados de busca, o adaptador obteve 0,715 no SciFact (afirmações científicas), contra 0,729 de vinte chamadas separadas do mesmo modelo. Ainda assim, foi 3,6 vezes mais rápido. O cross-encoder fez 0,721 no SciFact.
  • No NFCorpus (textos médicos), o mesmo modo obteve 0,341, contra 0,326 do cross-encoder. Os autores supõem que a comparação dos parágrafos entre si ajuda.
  • Após 39 minutos de treinamento no MS MARCO (4000 consultas, uma GPU B200, pico de 21 GiB), o resultado subiu para 0,741 no SciFact e 0,345 no NFCorpus. A vantagem sobre o cross-encoder foi de 0,020 e 0,019. A significância estatística nesses datasets não foi testada, e os autores consideram diferenças abaixo de 0,02 apenas indicativas.

No HotpotQA (perguntas cuja resposta exige reunir fatos de dois parágrafos), foram usadas 300 perguntas com 10 parágrafos cada. O cross-encoder encontrou os parágrafos certos com mais frequência: o recall no top-2 foi de 0,863 contra 0,762. Mas as respostas com a seleção do Glance saíram melhores: F1 de 0,718 contra 0,683 no caso do adaptador sem treinamento, e essa diferença não é estatisticamente significativa.

O resumo (abstract) do artigo declara, para a versão ajustada, um ganho de +0,045 de F1. Se o adaptador permanece ligado também na hora de responder, o F1 sobe para 0,757, que fica 0,032 abaixo do teto obtido com os dois parágrafos de referência. As respostas ficam mais curtas (2,5 palavras contra 3,1), o que se encaixa melhor no formato do HotpotQA.

Onde o método bate no teto

A principal vantagem aparece em listas longas de candidatos. O adaptador ajustado continua melhorando até 200 candidatos (43,4 mil tokens): o nDCG@10 é de 0,717 contra 0,659 do cross-encoder nas mesmas 100 consultas do SciFact. Com 100 candidatos, a diferença é de 0,060, e o tempo é de 1,05 s por consulta. O adaptador sem treinamento se degrada em tamanhos maiores, e com 65 mil tokens a qualidade cai para 0,505.

O custo é este:

  • A memória cresce mais rápido que o comprimento do contexto: de 15 a 56 GiB, porque cada sonda copia o cache de atenção.
  • 200 candidatos não cabem em uma única chamada e são processados em lotes, o que leva 15,8 s por consulta.
  • Agrupar várias consultas em uma só chamada não acelera o trabalho: a vazão cai de 2,87 para 1,57 consulta por segundo.
  • O cross-encoder continua muito mais rápido: 31–60 ms por consulta, contra cerca de 410–420 ms do Glance treinado na B200.

Os autores propõem um cache de blocos compartilhado, sem cópias, que tornaria a memória linear e permitiria passar a contextos da ordem de 128 mil tokens.

Para quem isso serve

O principal ganho do Glance está na memória. Se o servidor já roda um modelo grande para gerar respostas, não é preciso manter um segundo reranker: basta alternar os adaptadores conforme a demanda. As saídas coincidem com as que cada modelo produz quando carregado separadamente. Para sistemas em que a latência de dezenas de milissegundos pesa mais, o cross-encoder especializado continua sendo a melhor opção. Já para ranquear centenas de candidatos ou escolher o contexto que o gerador de fato usa, vale testar a abordagem. Os adaptadores e o código estão no Hugging Face, no repositório airun-ai/GlanceRAG-MiMo-9B-Reranker.

História

Perguntas frequentes sobre a notícia

O que se sabe sobre Uma passada em vez de vinte?

Um cross-encoder clássico (por exemplo, o bge-reranker-v2-m3) codifica cada par "consulta — parágrafo" separadamente. Com 20 candidatos, são 20 passadas. O Glance funciona de outro jeito. O modelo lê todos os candidatos uma única vez e guarda um cache interno (prefill). Desse cache partem sondas curtas, de cerca de 30 tokens cada: "O parágrafo N contém informação que responde à consulta?" As sondas não enxergam umas às outras, mas cada uma vê todos os parágrafos e pode compará-los. A cabeça indicadora converte o estado do modelo na sonda em uma nota de relevância. Nenhum te

O que as medições mostraram?

A avaliação usou nDCG@10: quanto mais alto os documentos certos ficam entre os dez primeiros, mais perto de 1 é o valor. Os rerankers ordenaram o top-20 do BM25 (busca textual clássica). Sem treinamento em dados de busca, o adaptador obteve 0,715 no SciFact (afirmações científicas), contra 0,729 de vinte chamadas separadas do mesmo modelo. Ainda assim, foi 3,6 vezes mais rápido. O cross-encoder fez 0,721 no SciFact. No NFCorpus (textos médicos), o mesmo modo obteve 0,341, contra 0,326 do cross-encoder. Os autores supõem que a comparação dos parágrafos entre si ajuda. Após 3

Onde o método bate no teto?

A principal vantagem aparece em listas longas de candidatos. O adaptador ajustado continua melhorando até 200 candidatos (43,4 mil tokens): o nDCG@10 é de 0,717 contra 0,659 do cross-encoder nas mesmas 100 consultas do SciFact. Com 100 candidatos, a diferença é de 0,060, e o tempo é de 1,05 s por consulta. O adaptador sem treinamento se degrada em tamanhos maiores, e com 65 mil tokens a qualidade cai para 0,505. O custo é este: A memória cresce mais rápido que o comprimento do contexto: de 15 a 56 GiB, porque cada sonda copia o cache de atenção. 200 candidatos não cabem em

ZK
Zhemal Khamidun — CPO da Alpina Digital, gerente de produto do AlpinaGPT. Cria produtos de IA desde 2019. O Hamidun News é um projeto pessoal que virou um agregador em produção com mais de 6.000 leitores.
✦ Hands-On AI Engineering · Hamidun Academy

Build & Ship Production AI Agents Without Boilerplate Code

Start your free 72-hour trial at Hamidun Academy (academy.hamidun.com) — interactive lessons on Claude Code & Cursor, live Tech Radar, and production agent templates.

Start 72h Free Trial →Vibe-Coding Intensive
O que você acha?
Carregando comentários…