antonio leandro

busca e recuperação

The Probabilistic Relevance Framework: BM25 and Beyond

paper · núcleo · Stephen Robertson, Hugo Zaragoza · · ~74 min de leitura do original

a tese

ordenar por probabilidade de relevância é o ótimo possível, e a conta feita até o fim desemboca numa soma de pesos por termo que satura, normaliza por tamanho e cabe num índice invertido

o que fica

  1. Idf não é heurística dentro deste framework: ele cai da fórmula de Robertson/Spärck Jones quando você zera o número de julgamentos de relevância, ou seja, é o peso de relevância no caso em que não há evidência nenhuma.
  2. A saturação de tf veio de ajuste de curva, não de derivação: o modelo 2-Poisson mostrou que formato a função precisava ter, e os autores encaixaram tf/(k1+tf) por ser a paramétrica mais simples com esse formato.
  3. O truque de somar e subtrair os pesos de frequência zero é o que torna BM25 implementável: sem ele o score somaria sobre todos os termos da query, inclusive os ausentes do documento, e o índice invertido não serviria de nada.
  4. Normalizar por tamanho de documento é escolher entre duas explicações para um texto longo — o autor foi prolixo ou o autor cobriu mais assunto — e o parâmetro b interpola entre elas em vez de decidir.
  5. BM25F soma as frequências dos campos antes de saturar, e não depois: eliteness é propriedade do par termo-documento, então título, âncora e corpo alimentam a mesma curva de saturação.
  6. O framework compra ordenação abrindo mão de probabilidade calibrada, porque cada passo só preserva rank; por isso ele não sabe dizer o quanto confia em cada documento do topo no feedback cego.

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.

lido na íntegra por pipeline de llm, revisado por antonio leandro antes de publicar ·