Melhorando a recuperação de informações no Elastic Stack: recuperação híbrida

info-retrieval-blog-720x420-v1.jpeg

No nosso último post do blog, apresentamos o Elastic Learned Sparse EncodeR (ELSER), um modelo treinado para recuperação eficaz de texto zero-shot. O Elasticsearch® também tem excelentes recursos de recuperação lexical e ferramentas avançadas para combinar os resultados de diferentes consultas. Neste post, apresentaremos o conceito de recuperação híbrida e exploraremos duas implementações concretas disponíveis no Elasticsearch. Em particular, veremos como melhorar o desempenho do Elastic Learned Sparse EncodeR ao combiná-lo com o BM25 usando a Reciprocal Rank Fusion e a soma ponderada das pontuações.

Também abordaremos os experimentos que realizamos para explorar algumas questões gerais de pesquisa, incluindo a melhor forma de parametrizar a Reciprocal Rank Fusion e como calibrar a soma ponderada das pontuações.

Video thumbnail

Recuperação híbrida

Apesar dos pipelines de treinamento modernos produzirem modelos de recuperação com bom desempenho em cenários de zero-shot, sabe-se que os recuperadores lexicais (como o BM25) e os recuperadores semânticos (como o ELSER) são um tanto complementares. Especificamente, será mais relevante combinar os resultados dos métodos de recuperação se assumirmos que ocorrem mais correspondências entre os documentos relevantes recuperados do que entre os documentos irrelevantes recuperados.

Essa hipótese é plausível para os métodos que usam mecanismos de recuperação muito diferentes porque há muito mais documentos irrelevantes do que relevantes para a maioria das consultas e corpora. Se os métodos recuperam documentos relevantes e irrelevantes de forma independente, uniforme e aleatória, esse desequilíbrio significa que é muito mais provável que ocorra a correspondência dos documentos relevantes do que dos irrelevantes. Realizamos algumas medições de sobreposição para verificar essa hipótese entre o ELSER, o BM25 e vários recuperadores densos, como mostrado na Tabela 1. Isso fornece alguma justificativa para o uso da chamada busca híbrida. A seguir, investigamos duas implementações explícitas de busca híbrida.

Tabela 1: coeficientes de sobreposição para três recuperadores
Tabela 1: coeficientes de sobreposição para três recuperadores em comparação com o ELSER para os 1.000 primeiros documentos no ArguAna

Reciprocal Rank Fusion

A Reciprocal Rank Fusion foi proposta neste artigo. É fácil de usar, sendo totalmente não supervisionada e nem mesmo exigindo calibração de pontuação. Ela funciona classificando um documento d com o BM25 e um modelo e calculando sua pontuação com base nas posições de classificação de ambos os métodos. Os documentos são classificados por pontuação decrescente. A pontuação é definida da seguinte forma:

Reciprocal Rank Fusion

O método usa uma constante k para ajustar a importância de documentos com baixa classificação. Ela é aplicada ao conjunto de documentos top N recuperado por cada método. Se um documento estiver faltando nesse conjunto para qualquer um dos métodos, esse termo será definido como zero.

O artigo que apresenta a Reciprocal Rank Fusion sugere um valor de 60 para k e não discute quantos documentos N devem ser recuperados. Claramente, a qualidade da classificação pode ser afetada pelo aumento de N enquanto recall@N aumenta para qualquer um dos métodos. Qualitativamente, quanto maior o valor de k, mais importantes são os documentos de baixa classificação para a ordem final. No entanto, não está claro a priori quais seriam os valores ideais de k e N para a recuperação híbrida semântica e lexical moderna. Além disso, queríamos compreender quão sensíveis são os resultados à escolha desses parâmetros e se o ótimo se generaliza entre conjuntos de dados e modelos. Isso é importante para ter confiança no método em uma configuração zero-shot.

Para explorar essas questões, realizamos uma busca em grade para maximizar o NDCG@10 médio ponderado para um subconjunto do benchmark BEIR para vários modelos. Usamos o Elasticsearch para recuperação neste experimento, representando cada documento por um único campo de texto e vetor. A busca do BM25 foi realizada usando uma consulta match e recuperação densa usando busca vetorial exata com uma consulta script_score.

recuperação semântica
Tabela 2: NDCG@10 médio em um subconjunto de conjuntos de dados BEIR (webis-touche2020, scidocs, nq, hotpotqa, fiqa, dbpedia-entity, arguana, trec-covid, nfcorpus) ponderado por número de consultas para vários parâmetros k e top N usando o bi-codificador roberta-base-ance-firstp para recuperação semântica

Consultando a Tabela 2, vemos que, para roberta-base-ance-firstp, os valores ideais para k e N são 20 e 1.000, respectivamente. Enfatizamos que para a maioria dos conjuntos de dados individuais, a mesma combinação de parâmetros foi ideal. Fizemos a mesma busca de grade para distilbert-base-v3 e minilm-l12-v3 com a mesma conclusão para cada modelo. Também é importante notar que a diferença entre a melhor e a pior combinação de parâmetros é de apenas aproximadamente 5%; portanto, a penalidade pela configuração incorreta desses parâmetros é relativamente pequena.

Também queríamos ver se poderíamos melhorar o desempenho do ELSER em uma configuração zero-shot usando a Reciprocal Rank Fusion. Os resultados no benchmark BEIR são apresentados na Tabela 3.

Comparação de NDCG@10
Tabela 3: comparação de NDCG@10 entre o BM25 (usando o Elasticsearch 8.8 com analisador de inglês padrão), o BM25 e o ELSER combinados via RRF com k=20 e N=1000

A Reciprocal Rank Fusion aumenta o NDCG@10 médio em 1,4% em relação ao ELSER sozinho e em 18% em relação ao BM25 sozinho. Além disso, é importante que o resultado seja melhor ou semelhante ao BM25 sozinho para todos os conjuntos de dados de teste. A classificação aprimorada é alcançada sem a necessidade de ajuste de modelo, conjuntos de dados de treinamento ou calibração específica. A única desvantagem é que atualmente a latência da consulta aumenta à medida que as duas consultas são realizadas sequencialmente no Elasticsearch. Isso é atenuado pelo fato de que a recuperação do BM25 é normalmente mais rápida que a recuperação semântica.

Nossas descobertas sugerem que a Reciprocal Rank Fusion pode ser usada com segurança como uma estratégia “plug and play” eficaz. Além disso, vale a pena analisar a qualidade dos resultados obtidos com o BM25, o ELSER e sua fusão de classificação nos seus próprios dados. Se fosse selecionada a abordagem com melhor desempenho em cada conjunto de dados individual no pacote BEIR, o aumento no NDCG@10 médio seria, respectivamente, de 3% e 20% em relação ao ELSER e ao BM25 sozinhos.

Como parte deste trabalho, também realizamos algumas classificações simples de consultas para distinguir buscas por palavras-chave e perguntas naturais. O objetivo era tentar entender os mecanismos que levam ao melhor desempenho de um determinado método. Até agora, não temos uma explicação clara para isso e planejamos explorar mais. No entanto, descobrimos que a busca híbrida tem um bom desempenho quando ambos os métodos têm precisão geral semelhante.

Por fim, a Reciprocal Rank Fusion pode ser usada com mais de dois métodos ou para combinar classificações de campos diferentes. Até agora, não exploramos essa direção.

Soma ponderada das pontuações

Outra maneira de fazer recuperação híbrida compatível com o Elasticsearch é combinar pontuações do BM25 e pontuações do modelo usando uma função linear. Essa abordagem foi estudada neste artigo, que mostrou que ela é mais eficaz do que a Reciprocal Rank Fusion quando bem calibrada. Exploramos a busca híbrida por meio de uma combinação linear convexa de pontuações definidas da seguinte forma:

soma ponderada das pontuações

onde α é o peso da pontuação do modelo e está entre 0 e 1.

A calibração ideal da combinação linear não é simples, pois requer anotações semelhantes às usadas para ajustar um modelo. Dado um conjunto de consultas e documentos relevantes associados, podemos usar qualquer método de otimização para encontrar a combinação ideal para recuperar esses documentos. Em nossos experimentos, usamos conjuntos de dados BEIR e otimização bayesiana para encontrar a combinação ideal, otimizando para NDCG@10. Em teoria, a proporção das escalas de pontuação pode ser incorporada ao valor aprendido para α. No entanto, nos experimentos a seguir, normalizamos as pontuações do BM25 e do ELSER por conjunto de dados usando a normalização mín.-máx., calculando o mínimo e o máximo das 1.000 pontuações mais altas para algumas consultas representativas em cada conjunto de dados. A esperança era que, com pontuações normalizadas, o valor ideal do alfa fosse transferido. Não encontramos evidências disso, mas é muito mais consistente e, portanto, a normalização provavelmente melhora a robustez da calibração.

A obtenção de anotações é cara, por isso é útil saber quantos dados devem ser coletados para termos a certeza de superar a Reciprocal Rank Fusion (RRF). A Figura 1 mostra o NDCG@10 para uma combinação linear das pontuações do BM25 e do ELSER como uma função do número de consultas anotadas para o conjunto de dados ArguAna. Para referência, o BM25, o ELSER e o NDCG@10 com RRF também são mostrados. Esse tipo de curva é típico nos conjuntos de dados. Em nossos experimentos, descobrimos que era possível superar a RRF com aproximadamente 40 consultas anotadas, embora o limite exato variasse ligeiramente de um conjunto de dados para outro.

Evolução do NDCG@10
Figura 1: evolução do NDCG@10 dependendo do número de consultas usadas para otimizar o alfa (no conjunto de dados ArguAna).

Também observamos que o peso ideal varia significativamente entre diferentes conjuntos de dados (veja a Figura 2) e também para diferentes modelos de recuperação. Esse é o caso mesmo depois de normalizar as pontuações. Seria de se esperar porque a combinação ideal dependerá do desempenho dos métodos individuais em um determinado conjunto de dados.

Para explorar a possibilidade de uma parametrização zero-shot, experimentamos escolher um α de peso único para todos os conjuntos de dados em nosso conjunto de benchmark. Embora tenhamos usado a mesma abordagem supervisionada para fazer isso, desta vez escolhendo o peso para otimizar o NDCG@10 médio para o pacote completo de conjuntos de dados, sentimos que há variação suficiente entre os conjuntos de dados para que nossas descobertas possam ser representativas do desempenho zero-shot. 

Em resumo, essa abordagem produz um NDCG@10 médio melhor do que a RRF. No entanto, também descobrimos que os resultados foram menos consistentes que a RRF e enfatizamos que o peso ideal é específico do modelo. Por esse motivo, nos sentimos menos confiantes de que a abordagem seja transferida para novas configurações, mesmo quando calibrada para um modelo específico. Na nossa opinião, a combinação linear não é uma abordagem “plug and play”. Em vez disso, acreditamos ser importante avaliar cuidadosamente o desempenho da combinação no seu próprio conjunto de dados para determinar as configurações ideais. Porém, como veremos a seguir, se bem calibrada, produz resultados muito bons.

 variabilidade entre conjuntos de dados BEIR
Figura 2: variabilidade do alfa em conjuntos de dados BEIR. Eles são obtidos usando otimização bayesiana e divisão de teste.

A normalização é essencial para comparar pontuações entre diferentes conjuntos de dados e modelos, já que as pontuações podem variar muito sem ela. Isso nem sempre é fácil de fazer, especialmente para o Okapi BM25, no qual o intervalo de pontuações é desconhecido até que as consultas sejam feitas. As pontuações do modelo denso são mais fáceis de normalizar, pois seus vetores podem ser normalizados. No entanto, é importante notar que alguns modelos densos são treinados sem normalização e podem ter melhor desempenho com produtos escalares.

O ELSER é treinado para replicar margens de pontuação de codificadores cruzados. Normalmente vemos que ele produz pontuações na faixa de 0 a 20, embora isso não seja garantido. Em geral, um histórico de consultas e suas pontuações de documentos top N podem ser usados para aproximar a distribuição e normalizar qualquer função de pontuação com estimativas mínimas e máximas. Observamos que a normalização não linear pode levar a uma combinação linear melhorada, por exemplo, se houver valores discrepantes, embora não tenhamos testado isso.

Quanto à Reciprocal Rank Fusion, queríamos entender a precisão de uma combinação linear do BM25 e do ELSER, mas desta vez no melhor cenário possível. Nesse cenário, otimizamos um peso α por conjunto de dados para obter o NDCG@10 ideal usando combinação linear. Usamos 300 consultas para calibrar — descobrimos que isso era suficiente para estimar o peso ideal para todos os conjuntos de dados. Em produção, esse cenário é realisticamente difícil de alcançar porque precisa de uma normalização mín.-máx. precisa e de um conjunto de dados anotado representativo para ajustar o peso. Isso também precisaria ser atualizado se os documentos e consultas oscilassem significativamente. No entanto, limitar o desempenho do melhor caso ainda é útil para ter uma ideia se o esforço pode valer a pena. Os resultados são exibidos na Tabela 4. Essa abordagem proporciona uma melhoria de 6% no NDCG@10 médio em relação ao ELSER sozinho e uma melhoria de 24% em relação ao BM25 sozinho.

Elastic Learned Sparse Encoder
Tabela 4: comparação do NDCG@10 entre o BM25 (usando o Elasticsearch 8.8 com analisador em inglês padrão), o ELSER, a RRF (k = 20 e top N = 1000) e combinação linear (otimizada nos dados de avaliação)

Conclusão

Mostramos que é possível combinar diferentes abordagens de recuperação para melhorar o desempenho e que, em particular, a recuperação lexical e semântica se complementam. Uma abordagem que exploramos foi a Reciprocal Rank Fusion. Esse é um método simples que muitas vezes produz bons resultados sem exigir anotações nem conhecimento prévio da distribuição da pontuação. Além disso, descobrimos que suas características de desempenho eram notavelmente estáveis em todos os modelos e conjuntos de dados, por isso estamos confiantes de que os resultados que observamos serão generalizados para outros conjuntos de dados.

Outra abordagem é a soma ponderada das pontuações, que é mais difícil de configurar, mas que em nossos experimentos rendeu uma classificação muito boa com a configuração correta. Para usar essa abordagem, as pontuações devem ser normalizadas, o que para o BM25 requer distribuições de pontuação para consultas típicas. Além disso, alguns dados anotados devem ser usados para treinar os pesos do método.

Em nosso último post planejado desta série, apresentaremos o trabalho que temos feito em relação à inferência e ao desempenho do índice à medida que avançamos em direção à disponibilidade geral do recurso text_expansion.

Confira os outros posts desta série sobre recuperação de informações:

O lançamento e o tempo de amadurecimento de todos os recursos ou funcionalidades descritos neste post permanecem a exclusivo critério da Elastic. Os recursos ou funcionalidades não disponíveis atualmente poderão não ser entregues dentro do prazo previsto ou nem chegar a ser entregues.