o problema
Ordenar documentos por relevância tem um incômodo na raiz: relevância é propriedade do par documento–necessidade de informação, julgada pelo usuário, e o sistema nunca a observa. Ele vê frequências de termos, tamanhos, links. Tudo o que não é a resposta.
Nos anos 1970 e 1980 já existiam funções de peso que funcionavam razoavelmente — tf vezes idf, em várias formas — mas eram receitas. Não havia como dizer de onde vinha o idf, por que a frequência do termo deveria entrar linearmente, ou o que fazer quando o usuário marcasse dois documentos como bons. Cada ajuste era um chute defendido por resultado experimental. Este survey reconstrói os trinta anos de trabalho que trataram a relevância como variável escondida e derivaram a função de score a partir dela, até chegar ao BM25 e à sua versão com campos, o BM25F.
a ideia
O ponto de partida é o Probability Ranking Principle: se você ordena os documentos por probabilidade decrescente de relevância, dado o que sabe, obtém a melhor efetividade possível com esses dados. É uma afirmação forte e barata ao mesmo tempo — barata porque, uma vez que só a ordem importa, você pode aplicar qualquer transformação monótona à probabilidade sem estragar nada.
É esse alvará que o resto do trabalho usa. Trocar probabilidade por odds, inverter com Bayes, jogar fora o fator que não depende do documento, tirar log: nenhum desses passos preserva o número, todos preservam o ranking. O que sai do outro lado não parece mais probabilidade; parece um somatório de pesos por termo. E é exatamente o formato de que um índice invertido precisa.
como funciona
A cadeia tem duas assinaturas. A primeira é a independência condicional entre termos, dado o estado de relevância — o mesmo movimento de um Naïve Bayes. Ela não afirma que os termos são independentes na coleção; ao contrário, o modelo prevê associação positiva entre dois termos correlacionados com relevância, e essa associação é observada. Cooper mostrou depois que basta uma hipótese mais fraca, a dependência ligada: que o grau de associação entre os termos seja o mesmo no conjunto relevante e no não relevante.
A segunda é o truque de remover os zeros. O somatório sobre os termos da query é quebrado em presentes e ausentes no documento; soma-se e subtrai-se o peso de frequência zero; o que sobra é uma soma só sobre termos presentes no documento mais uma constante que se descarta. Depois disso, documento sem termo da query nunca precisa ser pontuado.
Com o termo tratado como presença binária, isso dá o peso RSJ, com pseudo-contagens de 0,5 para não gerar infinitos. Sem nenhum julgamento de relevância, basta zerar R e r na fórmula para cair numa aproximação próxima do idf clássico.
Para reintroduzir frequência, entra a eliteness: uma propriedade escondida e binária do par termo-documento, algo como “o documento é sobre isso”. As ocorrências dependem da eliteness, e a eliteness da relevância; tf e relevância não se falam direto. Assumindo Poisson condicionado à eliteness — daí o 2-Poisson — o peso do termo cresce com tf mas tende a um teto: o peso que a eliteness teria se fosse observável. Saturação. Como a fórmula exata é intratável e depende de parâmetros que ninguém sabe estimar, os autores ajustaram tf/(k1+tf) à curva.
Falta o tamanho. B = (1−b) + b·dl/avdl divide a frequência antes da saturação, com b=1 normalizando por completo e b=0 desligando. Valores razoáveis em muitas coleções: 1,2 < k1 < 2 e 0,5 < b < 0,8. O BM25F acrescenta pesos por campo e um b por campo, somando as frequências normalizadas dos campos antes de saturar; com pesos inteiros, é equivalente a replicar o título n vezes no documento.
o que isso custou
O modelo não diz nada sobre como escolher k1, b e os pesos de campo. Os próprios autores chamam isso de limitação, e o capítulo de otimização mostra o tamanho da conta: as métricas de IR não são suaves, não têm gradiente, têm máximos locais e platôs, e cada avaliação exige julgamentos humanos. Sobram heurísticas — busca em linha robusta, direções promissoras, reescalar k1 quando os pesos de campo mudam. Os parâmetros publicados para as tarefas web do TREC 2003 saem em k1 = 27,5 numa tarefa e 4,9 na outra: nada transfere.
Posição de termo fica de fora. Os autores consideram que nenhuma das tentativas de encaixá-la se qualifica como extensão natural do framework, e observam que os ganhos relatados com proximidade são pequenos. A definição de idf quando há campos, admitem, exige mais pesquisa: um campo muito prolixo degenera a conta.
E há o custo estrutural. Como cada passo só preserva ordem, o resultado não é reversível para uma probabilidade calibrada. Em filtragem adaptativa isso incomoda; no feedback cego, impede o que seria a correção óbvia — pesar os documentos do topo pela chance de serem relevantes em vez de assumir que são. Feedback cego melhora na média e piora justamente nas queries difíceis.
onde isso aparece hoje
Em 2009 o survey precisava listar quem implementava BM25 — Lemur, Terrier, Xapian, Zettair, Okapi — e registrar que o Lucene não implementava, só uma extensão de terceiros. Hoje BM25 é a similaridade padrão do Lucene, e por tabela do Elasticsearch e do OpenSearch.
O papel mudou: virou a linha de base contra a qual se mede recuperação densa. É contra o BM25 que se comparam Dense Passage Retrieval e ColBERT, e é ele que reaparece do outro lado quando a prática se assenta em busca híbrida — a recuperação contextual combina embeddings com BM25 porque nenhum dos dois pega sozinho o que o outro pega, e o pipeline de RAG herda essa mistura. A discussão final sobre otimizar muitos parâmetros por gradiente, com o BM25F entrando como uma feature entre outras numa rede, é o começo de learning to rank.