Reciprocal Rank Fusion (RRF): O Algoritmo Simples Que Está no Coração da Busca Híbrida em RAG
Se você já implementou sistemas de IA Generativa com Retrieval-Augmented Generation (RAG), sabe que a qualidade das respostas geradas pelo LLM depende fundamentalmente da qualidade dos documentos recuperados na etapa de retrieval.
Uma busca semântica (baseada em vetores) pode capturar o significado geral de uma consulta, mas frequentemente falha em encontrar correspondências exatas de termos técnicos, códigos de erro ou nomes específicos. Já a busca lexical (BM25 ou full-text) é excelente para termos exatos, mas não compreende sinônimos nem relações semânticas.
A solução?
Combinar ambas as abordagens em uma busca híbrida.
Mas surge um problema prático: como combinar de forma coerente um score de similaridade de cosseno de 0.85 com um score BM25 de 12.4? Essas escalas são completamente diferentes e incompatíveis.
É exatamente aqui que entra o Reciprocal Rank Fusion (RRF), um algoritmo elegante e simples que ignora completamente os scores originais e trabalha exclusivamente com as posições no ranking.
Neste artigo, vamos explorar como o RRF funciona e porque ele está se tornando o padrão do mercado para busca híbrida em pipelines RAG. Se quiser aprender sobre isso na prática, você encontra projetos completos na Formação AI Data Engineer 4.0.
O Problema: Escalas de Pontuação Incompatíveis
Imagine uma busca híbrida típica em um sistema de RAG. Você executa a mesma consulta em dois mecanismos:
– Busca vetorial retorna similaridade do cosseno, geralmente entre 0 e 1.
– Busca por palavras-chave (BM25) retorna pontuações positivas ilimitadas, que podem variar de 2 a 30 ou mais, dependendo do corpus.
Como combinar uma pontuação de 0.87 com outra de 14.2? Somar diretamente não faz sentido. Normalizar (min-max, z-score) ajuda, mas introduz instabilidade: a cada novo lote de documentos as distribuições mudam e o ranking final pode oscilar de forma imprevisível. Em datasets dinâmicos como logs de streaming, esse problema é ainda mais sério.
RRF resolve isso de uma maneira elegante: Ignora completamente as pontuações brutas e trabalha apenas com a posição (rank) de cada documento em cada lista.
O Que É Reciprocal Rank Fusion?
O Reciprocal Rank Fusion (RRF) é um algoritmo de agregação de rankings proposto por Gordon V. Cormack, Charles L. A. Clarke e Stefan Büttcher no paper “Reciprocal Rank Fusion Outperforms Condorcet and Individual Rank Learning Methods”, apresentado na conferência ACM SIGIR em 2009 (link ao final deste artigo). A premissa central é surpreendentemente simples: documentos que aparecem consistentemente no topo de múltiplas listas de resultados são provavelmente os mais relevantes.
Em vez de tentar normalizar scores arbitrários, o RRF ignora completamente os valores de score e trabalha apenas com a posição (rank) de cada documento em cada lista. Isso elimina o problema de escalas incompatíveis de forma elegante.
A Fórmula (Tudo se Resume a Matemática)
A fórmula do RRF é simples:

Onde:
– d é um documento
– Q é o conjunto de consultas/recuperadores
– rank_i(d) é a posição do documento `d` no resultado do i-ésimo recuperador (começando em 1)
– k é uma constante de suavização, tipicamente 60
Para cada documento, somam-se as contribuições recíprocas de cada lista em que ele aparece. Documentos que figuram bem ranqueados em múltiplos sistemas acumulam pontuação mais alta. O ranking final é simplesmente a ordenação decrescente por essa soma.
Por que k = 60?
A constante `k` controla o quanto a diferença entre as primeiras posições importa. Com `k` baixo, o documento de rank 1 tem peso desproporcional sobre os demais. Com `k` alto, o algoritmo fica mais “cético” em relação a um único top pick e recompensa o consenso entre várias listas. O valor 60 vem do artigo original de Cormack et al. (2009) e funciona bem na prática para a maioria dos casos. Vale notar que o desempenho do RRF não é criticamente sensível a essa escolha, uma das razões de sua popularidade.
Um Exemplo Numérico
Suponha duas listas de resultados para a consulta “cápsulas de café sustentáveis”:

Com k = 60:
– DocA: 1/(60+1) + 1/(60+3) = 0.01639 + 0.01587 = 0.03226
– DocB: 1/(60+2) + 1/(60+1) = 0.01613 + 0.01639 = 0.03252
– DocC: 1/(60+5) = 0.01538
– DocD: 1/(60+2) = 0.01613
Ranking final: DocB > DocA > DocD > DocC. O DocB vence justamente porque está bem ranqueado em ambas as listas, mesmo sem ter sido o primeiro colocado em ambas as duas individualmente. Esse é o “efeito consenso” que torna o RRF tão robusto.
Por Que Funciona Tão Bem?
O RRF tem três propriedades que explicam sua adoção massiva:
Independência de escala. Como ignora pontuações brutas, funciona com qualquer combinação de recuperadores (denso, esparso, full-text, k-NN, filtros booleanos) sem precisar normalizar nada.
Estabilidade. Em corpora que mudam com frequência, técnicas baseadas em normalização de pontuação (min-max, L2) precisam ser recalibradas constantemente. O RRF, por depender só de posições relativas, mantém rankings estáveis ao longo do tempo.
Robustez sem tuning. Não requer dados rotulados, não precisa de treinamento e tem essencialmente um único hiperparâmetro (`k`). Isso o torna ideal para sistemas que atendem múltiplos clientes ou domínios, onde abordagens de Learning to Rank seriam inviáveis de manter.
RRF na Prática: Suporte nas Principais Plataformas
Hoje, praticamente todo motor de busca vetorial oferece RRF como recurso nativo:
– Elasticsearch disponibiliza um `rrf` retriever que combina múltiplos sub-retrievers (por exemplo, BM25 + ELSER) sem necessidade de tuning.
– Azure AI Search aplica RRF automaticamente sempre que mais de uma consulta executa em paralelo (consultas híbridas, múltiplos campos vetoriais).
– OpenSearch introduziu RRF no plugin Neural Search a partir da versão 2.19, posicionando-o como alternativa às normalizações min-max e L2.
– Milvus oferece o `RRFRanker` para reranquear resultados de busca híbrida sobre vetores esparsos e densos.
– Chroma expõe uma API `Rrf()` que permite combinar `Knn` densos e esparsos com pesos configuráveis.
– MongoDB Atlas Vector Search e MariaDB também disponibilizam RRF como estratégia de fusão para suas implementações de busca híbrida.
A convergência do mercado em torno do mesmo algoritmo é em si um sinal forte de sua eficácia.
Limitações
O RRF não é uma bala de prata. Algumas situações em que ele pode ficar aquém:
– Sinais de qualidade muito assimétricos. Se um recuperador é consistentemente muito melhor que outro, tratá-los com pesos iguais joga informação fora. Implementações como a do Chroma e Milvus já permitem pesos por recuperador, contornando isso.
– Documentos faltantes. O comportamento padrão é tratar documentos ausentes como contribuição zero, o que pode penalizar excessivamente itens de cauda longa. Há discussões abertas sobre estratégias alternativas (como usar `max_rank + 1`).
– Ranqueamento absoluto importa. Se sua aplicação precisa de pontuações calibradas (por exemplo, para definir um threshold de “confiança”), o RRF não entrega isso, ele só produz uma ordem.
– Para casos mais complexos, modelos de Learning to Rank ou rerankers neurais (como cross-encoders) podem oferecer ganhos adicionais, geralmente aplicados depois do RRF, sobre o top-N.
Conclusão
Reciprocal Rank Fusion é um daqueles raros algoritmos em que simplicidade e eficácia caminham juntas. Proposto em 2009 por Cormack, Clarke e Grossman, ele se tornou o método padrão para fundir resultados de busca híbrida quase duas décadas depois, não porque é o mais sofisticado, mas porque é o que melhor equilibra qualidade, estabilidade e custo de manutenção.
Se você está construindo um pipeline de RAG, um sistema de busca empresarial ou qualquer aplicação que combine múltiplos recuperadores, RRF deveria ser sua linha de base. Comece com `k = 60`, meça os resultados e só parta para algo mais complexo se houver evidência clara de que o RRF não está dando conta.
As empresas estão desesperadas por profissionais que conheçam RAG e o RRF é uma técnica fundamental. Se quiser desenvolver essa habilidade de forma profissional, conheça a Formação AI Data Engineer 4.0.
Equipe DSA
Referências:
Reciprocal rank fusion outperforms condorcet and individual rank learning methods