Garantindo precisão semântica com pontuação mínima

Melhore a precisão semântica empregando limiares mínimos de pontuação. O artigo inclui exemplos concretos de busca semântica e híbrida.

A busca semântica abriu um mundo de oportunidades para a relevância da busca. Modelos esparsos e densos de alta qualidade, como ELSER, E5 e Jina Embedding v4, retornam resultados relevantes com base no significado das palavras, em vez da correspondência de palavras-chave. No entanto, a busca semântica às vezes retorna resultados irrelevantes na cauda final ou para consultas que não apresentam resultados relevantes no índice. Essa propriedade dos modelos esparsos e densos pode confundir os usuários ou desperdiçar tokens preciosos para grandes modelos de linguagem (LLMs).

Neste artigo, você aprenderá como usar o parâmetro de pontuação mínima para aumentar a precisão dos seus resultados de busca semânticos. Se você quiser testar os exemplos fornecidos neste post do blog, acesse o caderno Jupyter associado.

Contexto: Precisão e recall

Na relevância da pesquisa, a precisão e a recall são conceitos-chave. Qualquer leitor que ainda não esteja familiarizado é altamente incentivado a pesquisar sobre eles. Segue abaixo um resumo.

  • Precisão: a fração dos resultados de busca retornados que são relevantes para o usuário.
  • Recall: a fração de todos os documentos relevantes no corpus que estão incluídos no conjunto de resultados de busca.

Ou, em outras palavras, a precisão retorna apenas resultados relevantes e o recall retorna todos os resultados relevantes. Como você pode imaginar, esses são requisitos frequentemente concorrentes. A busca semântica tende a ter uma memória muito alta, mas pode ter dificuldades com precisão. Continue lendo para saber como se locomover por esta propriedade.

Apresentando o parâmetro de pontuação mínima

O parâmetro ‘min_score’ nos permite melhorar a precisão ao definir uma pontuação mínima, que truncará o conjunto de resultados removendo quaisquer correspondências com uma pontuação inferior ao limite definido. Aqui está um exemplo simples:

Normalização da pontuação

Definir uma pontuação mínima é muito bom; no entanto, nem todos os modelos semânticos retornam uma pontuação adequada para um limite estático. ELSER, por exemplo, retorna uma pontuação que é ilimitada. Algumas pontuações de modelos densos estão fortemente agrupadas e só fazem sentido no contexto da consulta específica.

Para a maioria dos casos de busca semântica, recomendamos usar uma abordagem de normalização antes de aplicar o 'min_score'. A normalização garante que a pontuação do documento esteja dentro de um intervalo definido. Os recuperadores Elasticsearch fornecem dois desses normalizadores, 'l2_norm' e 'minmax'. O mais comumente usado é o 'minmax', pois é fácil de entender e funciona bem em muitos cenários. As principais propriedades do 'minmax' incluem:

  • As pontuações dos documentos são distribuídas entre 0 e 1.
  • O documento com maior pontuação é sempre pontuado como 1.
  • O documento com menor pontuação sempre é pontuado como 0.
    • Isso pode torná-lo menos adequado para buscar palavras-chave. Consulte a seção “Busca híbrida” para uma discussão mais aprofundada.

A seguir está um exemplo de consulta semântica normalizada com min_score. O tamanho da janela de classificação foi aumentado para 500 para permitir que possamos retornar uma lista maior de resultados de busca, começando em 100.

O tamanho foi ajustado para um valor maior do que o normalmente visto na produção. Isso é para que possamos inspecionar a qualidade dos resultados de busca e ajustar os resultados.

Busca híbrida usando o recuperador linear

Para busca híbrida, a abordagem mais simples é normalizar todas as pontuações, atribuir pesos e aplicar uma pontuação mínima. Note que, ao escolher pesos cuja soma seja 1, você mantém a pontuação total dentro de um intervalo de 0 a 1. Isso facilita entender as pontuações finais e afinar min_score. A seguir está um exemplo:

Busca híbrida usando o RRF

Com o BM25, muitas vezes controlamos a precisão por outros meios, como usando o operador AND ou minimum_should_match. Além disso, consultas compostas por termos únicos, precisos e raros naturalmente causam resultados de busca com poucos resultados, muitas vezes todos altamente relevantes. Isso pode resultar em:

  • Os resultados mais distantes na lista recebem uma pontuação normalizada baixa no recuperador BM25, mesmo que a pontuação absoluta do BM25 esteja próxima das pontuações mais altas.
  • Ao adicionar uma pontuação BM25 muito baixa à pontuação semântica, o total pode ser aproximado como a pontuação semântica.
  • A falta de contribuição da pontuação BM25 pode fazer com que o documento seja descartado pelo min_score threshold.

Como solução, podemos usar a fusão de classificação recíproca (RRF) para combinar os resultados BM25 e semânticos. O RRF contorna o desafio de comparar pontuações de diferentes algoritmos de busca focando na posição em cada conjunto de resultados. Nesse cenário, o min_score é aplicado apenas ao recuperador semântico.

Conclusão

Usando min_score, mostramos como podemos reduzir o número de falsos positivos em nossos conjuntos de resultados causados pela alta recordação de algoritmos de busca semântica. Para saber mais sobre recuperadores, consulte este post do blog e a documentação do Elasticsearch.

Quão útil foi este conteúdo?

Não útil

Um pouco útil

Muito útil

Conteúdo relacionado

Pronto para criar buscas de última geração?

Uma pesquisa suficientemente avançada não se consegue apenas com o esforço de uma só pessoa. O Elasticsearch é impulsionado por cientistas de dados, especialistas em operações de aprendizado de máquina, engenheiros e muitos outros que são tão apaixonados por buscas quanto você. Vamos nos conectar e trabalhar juntos para construir a experiência de busca mágica que lhe trará os resultados desejados.

Experimente você mesmo(a)