29 de janeiro de 2026
Equipe QueryGen
8 min de leitura

Por que sua busca com IA pode estar perdendo respostas obvias (e como o RRF resolve isso)

Recentemente encontramos um bug intrigante que ilustra perfeitamente por que sistemas de busca hibrida podem falhar de maneiras surpreendentemente obvias. Um usuario fez uma pergunta simples ao seu assistente de IA, e apesar de ter a resposta exata no historico de chat, a IA afirmou com confianca que tal informacao nao existia.

O Problema

IA Perdendo Respostas Obvias

Pergunta do Usuario para a IA

"Qual data eu deveria colocar no contrato?"

Historico Real do Chat
Me diga qual data devo colocar no contrato
11:57
A RESPOSTA1 de fevereiro seria otimo. Assim posso comecar a trabalhar nisso
12:04
Beleza. Vou mencionar essa data
12:06
RESPOSTA DA IA

Verifiquei suas mensagens, e nao ha mencao em nenhum lugar sobre qual data voce deveria colocar no contrato — nenhuma das mensagens recuperadas faz referencia a uma data de assinatura.

A causa raiz: incompatibilidade de escala de pontuacao

Nosso sistema usa busca hibrida — combinando dois metodos de busca diferentes para obter o melhor dos dois mundos:

  • Busca Vetorial (Semantica): Entende significado e contexto. Otima para "encontrar mensagens sobre termos do contrato" mesmo que a palavra "contrato" nao seja usada.
  • BM25 (Palavra-chave): Correspondencia classica de texto. Perfeita para encontrar frases exatas como "1 de fevereiro" ou nomes especificos.

O problema? Esses metodos usam escalas de pontuacao completamente diferentes:

Os Dados

Incompatibilidade de Escala de Pontuacao

Tipo de BuscaMensagem EncontradaPontuacao BrutaPosicao Final
VETORIAL"Conforme o contrato... Exclusividade na Nigeria"0.65
#1Resposta errada
VETORIAL"Ok. Vou assinar e enviar de volta"0.58
#2Resposta errada
BM25"1 de fevereiro seria otimo"0.016
#47Correta mas enterrada!

O problema: Pontuacoes BM25 (0.016) sao 40x menores que pontuacoes Vetoriais (0.65). Quando ordenados por pontuacao bruta, correspondencias de palavras-chave sempre perdem — mesmo quando sao a resposta correta!

Quando o usuario perguntou "Qual data devo colocar no contrato?", o BM25 encontrou corretamente a mensagem "1 de fevereiro" na posicao #1 (correspondeu as palavras-chave exatas). Mas a Busca Vetorial a classificou em #47 porque semanticamente, falar sobre uma data nao se relaciona fortemente com discussoes gerais sobre "contrato".

Como estavamos ordenando por pontuacao bruta, o 0.65 da Vetorial vencia o 0.016 do BM25 sempre. A resposta correta ficou enterrada na posicao #47, e apenas os 10 primeiros resultados eram enviados para a IA.

A solucao: Fusao de Ranking Reciproco (RRF)

A solucao e elegante: em vez de comparar pontuacoes brutas, compare rankings. Isso se chama Fusao de Ranking Reciproco (RRF), e a formula e lindamente simples:

Formula RRF
score = 1/(60 + rankvetorial) + 1/(60 + rankbm25)

Por que funciona: Estar na posicao #1 em qualquer metodo de busca contribui igualmente para a pontuacao final. A constante 60 (chamada "k") amortece o efeito de rankings mais baixos, de modo que #1 e significativamente melhor que #2, mas #47 nao e muito diferente de #48.

A Solucao

Antes vs Depois do RRF

Antes: Ordenado por PontuacaoQUEBRADO
#1Exclusividade na Nigeria0.65
#2Assinar e enviar0.58
...45 resultados a mais
#471 de fevereiro seria otimo0.016
Depois: Ordenado por RRFCORRIGIDO
#11 de fevereiro seria otimo0.025
#2Exclusividade na Nigeria0.016
#3Assinar e enviar0.016
...Mais resultados

Como o RRF calcula a pontuacao final

Vamos acompanhar a matematica para nossa mensagem "1 de fevereiro":

Metodo de BuscaPosicaoContribuicao RRF
BM25 (palavra-chave)#11/(60+1) = 0,0164
Vetorial (semantica)#471/(60+47) = 0,0093
Pontuacao RRF Total0,0257

Compare com a mensagem "Exclusividade na Nigeria" que era a #1 anteriormente:

Metodo de BuscaPosicaoContribuicao RRF
Vetorial (semantica)#11/(60+1) = 0,0164
BM25 (palavra-chave)Nao encontrada1/(60+max) = ~0
Pontuacao RRF Total0,0164

A mensagem que era #1 em um metodo de busca (0,0257) agora supera a mensagem que era #1 em um metodo de busca mas nao apareceu no outro (0,0164). Justo e justo.

O insight principal

“O RRF nao se importa com as pontuacoes brutas. Ele so se importa com a ordem. Estar em #1 na busca por palavra-chave tem o mesmo peso que estar em #1 na busca semantica. Resultados encontrados por ambos os metodos ficam melhor classificados.”

O que acontece quando um resultado so aparece em uma busca?

Para o metodo de busca onde um resultado nao aparece, atribuimos a ele um "rank maximo" (o numero total de resultados + 1). Isso significa:

  • Resultados em ambas as buscas: Recebem contribuicoes de ambos, ficam melhor classificados
  • Resultados em uma busca: Recebem contribuicao de um, mais contribuicao minima do outro
  • Empates no mesmo metodo: Decididos pelo ranking no outro metodo

Isso lida elegantemente com o caso onde a busca semantica encontra mensagens conceitualmente relacionadas que a busca por palavras-chave nao encontra (e vice-versa).

Detalhes de implementacao

A mudanca no codigo foi direta. Em vez de:

// ANTIGO: Ordenar por pontuacao bruta (quebrado)
results.sort((a, b) => b.score - a.score);

Agora fazemos:

// NOVO: Calcular pontuacao RRF a partir dos rankings
const RRF_K = 60;
const vectorRank = vectorRanks.get(id) ?? maxRank;
const bm25Rank = bm25Ranks.get(id) ?? maxRank;
const rrfScore = 1/(RRF_K + vectorRank) + 1/(RRF_K + bm25Rank);

// Ordenar por pontuacao RRF
results.sort((a, b) => b.rrfScore - a.rrfScore);

Por que isso importa para busca com IA

Sistemas de busca modernos frequentemente combinam multiplos metodos de recuperacao:

  • Embeddings vetoriais para compreensao semantica
  • BM25/TF-IDF para correspondencias exatas de palavras-chave
  • Recuperacao baseada em grafo para busca com consciencia de relacionamentos
  • Sinais temporais para recencia

Cada metodo tem distribuicoes de pontuacao diferentes. O RRF fornece uma maneira fundamentada de combina-los sem precisar normalizar pontuacoes ou ajustar esquemas de ponderacao complexos.

“A beleza do RRF e sua simplicidade. Sem ajuste de hiperparametros alem do valor k (60 funciona bem na pratica). Sem normalizacao de pontuacao. Apenas ranks e uma formula.”

O resultado

Apos implementar o RRF, a mesma consulta "Qual data devo colocar no contrato?" agora recupera corretamente a mensagem "1 de fevereiro" no topo dos resultados. A IA encontra a resposta imediatamente.

Corrigido: Mensagens com correspondencias exatas de palavras-chave agora sao classificadas adequadamente junto com resultados semanticamente similares. A resposta correta sobe ao topo.

Principais aprendizados

  • Nao compare pontuacoes brutas entre diferentes metodos de busca — eles vivem em escalas diferentes
  • O RRF converte pontuacoes em ranks, tornando possivel a comparacao equivalente
  • A constante k=60 e bem estabelecida na pesquisa e funciona na maioria dos casos de uso
  • Resultados em multiplos metodos de busca naturalmente ficam melhor classificados — o que geralmente e correto

As vezes a solucao para um comportamento confuso da IA nao esta na IA em si — esta em como voce alimenta informacao a ela.

Quer uma busca com IA mais inteligente para suas conversas?

O Querygen usa busca hibrida avancada com RRF para garantir que voce nunca perca informacoes importantes nas suas mensagens do WhatsApp.

Experimente o Querygen Gratis