Reranker
Um reranker volta a pontuar a lista restrita de um sistema de recuperação com um modelo mais lento e preciso, como um codificador cruzado, antes de os resultados chegarem a um utilizador ou LLM.
Um reranker é um modelo que recebe uma lista curta de candidatos de um recuperador rápido de primeira fase, atribui uma pontuação mais cuidadosa a cada candidato em relação à consulta e reordena a lista. Os motores de pesquisa, os pipelines de geração aumentada por recuperação (RAG) e os sistemas de recomendação usam este padrão porque os modelos de relevância mais precisos são demasiado lentos para processar milhões de documentos, mas suficientemente rápidos para processar as dezenas ou centenas de primeiros resultados. Na pesquisa de texto, o reranker padrão é um cross-encoder, um transformer que lê em conjunto a consulta e um candidato e produz uma única pontuação de relevância. Nogueira e Cho (2019) ajustaram o BERT desta forma e lideraram a classificação de passagens do MS MARCO com um MRR@10 27% superior, em termos relativos, ao do melhor resultado anterior.
Como funciona a recuperação seguida de reranking#
A primeira fase privilegia o recall: a correspondência de palavras-chave com BM25, a pesquisa vetorial em embeddings pré-calculados, ou ambas, obtém algumas centenas de candidatos plausíveis de toda a coleção em milissegundos. O reranker privilegia a precisão: executa uma passagem completa do modelo para cada par consulta-candidato, e apenas os seus melhores resultados são apresentados ao utilizador ou inseridos na janela de contexto de um LLM. A solução VisualAISearch da Ultralytics é um recuperador deste tipo para a primeira fase: cria embeddings de uma pasta de imagens com CLIP ViT-B/32, ordena-as pela similaridade do cosseno com uma consulta de texto e devolve até 30 correspondências acima de um limiar de similaridade de 0.1, por predefinição.
Cross-encoders e bi-encoders#
Um bi-encoder, o recuperador habitual, cria embeddings da consulta e de cada documento separadamente, pelo que os vetores dos documentos podem ser calculados uma vez e armazenados numa base de dados vetorial. Essa independência também é a sua limitação: o vetor do documento é fixo antes de se conhecer a consulta. Um cross-encoder concatena a consulta e o documento numa única entrada, para que a autoatenção possa comparar cada palavra da consulta com cada palavra do documento, ao custo de uma passagem completa para cada par no momento da consulta. O ColBERT fica entre os dois: armazena um vetor por token do documento e compara os tokens da consulta com eles através de interação tardia. A classe CrossEncoder do Sentence Transformers executa um reranker como o ms-marco-MiniLM-L6-v2, treinado com consultas de pesquisa do MS MARCO:
from sentence_transformers import CrossEncoder
query = "When was the transformer architecture introduced?"
# Shortlist returned by a fast first-stage retriever, in its original order
candidates = [
"Transformer models such as GPT and BERT are widely used in natural language processing.",
"An electrical transformer changes the voltage of an alternating current.",
"Convolutional neural networks became popular after AlexNet won ImageNet in 2012.",
"The transformer was introduced in the 2017 paper Attention Is All You Need.",
]
# The cross-encoder reads the query and each candidate together and scores their relevance
reranker = CrossEncoder("cross-encoder/ms-marco-MiniLM-L6-v2")
ranked = reranker.rank(query, candidates)
for hit in ranked:
print(f"{hit['score']:6.2f} {candidates[hit['corpus_id']]}")A passagem que responde à pergunta passa do último lugar para o primeiro, com uma pontuação de 6.97, muito acima da do candidato seguinte, que é -4.48. A frase sobre o transformador elétrico partilha a palavra-chave da consulta, mas obtém -5.29.
Tipos de rerankers#
- Cross-encoders: Transformers compactos ajustados com rótulos de relevância, como os modelos MiniLM do MS MARCO e a família bge-reranker da BAAI, também disponíveis como APIs de reranking alojadas.
- Rerankers de LLM: É pedido a um modelo de linguagem de grande escala (LLM) que atribua pontuações aos candidatos ou ordene uma lista inteira de uma só vez. O RankGPT mostrou que o ChatGPT e o GPT-4 podem reordenar passagens ao gerar uma lista ordenada e destilou as classificações do ChatGPT num reranker pequeno e dedicado.
- Modelos de aprendizagem para classificação: Os sistemas de recomendação e de comércio eletrónico reordenam candidatos com modelos como árvores com gradient boosting, usando características como o histórico de cliques, o preço e a atualidade, treinados com objetivos de classificação como LambdaMART, disponível no LightGBM e no XGBoost.
Rerankers vs. conceitos relacionados#
- Pesquisa semântica: Pesquisa por significado, geralmente com um recuperador bi-encoder. Um reranker é uma segunda fase opcional.
- Pesquisa híbrida: Combina listas de resultados de palavras-chave e vetores, muitas vezes com fusão recíproca de classificações, que combina as posições sem voltar a analisar o conteúdo. Muitas vezes, um reranker processa a lista combinada.
- Destilação de conhecimento: Treina um recuperador rápido para imitar as pontuações de um reranker lento, transferindo parte da qualidade do reranking para a primeira fase.
- Detetores de objetos de duas fases: Seguem o mesmo padrão para imagens: uma fase de propostas de regiões sugere caixas candidatas e uma segunda fase volta a pontuar e aperfeiçoa cada caixa antes de a supressão não máxima (NMS) remover as duplicações sobrepostas.










