Share via


Pontuação de relevância na pesquisa híbrida usando o RRF

O RRF é um algoritmo que avalia as pontuações de pesquisa de vários resultados classificados anteriormente para produzir um conjunto de resultados unificado. Na IA do Azure Search, o RRF é usado sempre que existem duas ou mais consultas sendo executadas em paralelo. Cada consulta produz um conjunto de resultados classificado e o RRF é usado para mesclar e homogeneizar as classificações em um único conjunto de resultados, que é retornado na resposta da consulta. Exemplos de cenários em que o RRF sempre é usado incluem pesquisa híbrida e várias consultas vetoriais em execução de maneira simultânea.

O RRF baseia-se no conceito de classificação recíproca, que é o inverso da classificação do primeiro documento relevante em uma lista de resultados da pesquisa. O objetivo da técnica é levar em conta a posição dos itens nas classificações originais e dar maior importância aos itens que são melhores classificados em várias listas. Isso pode ajudar a melhorar a qualidade geral e a confiabilidade da classificação final, tornando-a mais útil para a tarefa de combinar vários resultados de pesquisa ordenados.

Como funciona a classificação do RRF

O RRF funciona obtendo os resultados da pesquisa de vários métodos, atribuindo uma pontuação de classificação recíproca a cada documento nos resultados e combinando as pontuações para criar uma nova classificação. O conceito é que os documentos que aparecem nas primeiras posições em vários métodos de pesquisa provavelmente são mais relevantes e devem receber uma classificação mais alta no resultado combinado.

Confira esta explicação simples do processo do RRF:

  1. Obtém resultados da pesquisa classificados de várias consultas executando em paralelo.

  2. Atribui pontuações de classificação recíprocas para o resultado em cada uma das listas classificadas. O RRF gera um @search.score novo para cada correspondência em cada conjunto de resultados. O mecanismo atribui uma pontuação de classificação recíproca para cada documento nos resultados da pesquisa com base em sua posição na lista. A pontuação é calculada como 1/(rank + k), em que rank é a posição do documento na lista e k é uma constante, que de modo experimental apresenta melhor desempenho caso seja definida para um valor pequeno como 60. Observe que essek valor é uma constante no algoritmo do RRF e está totalmente separado do k que controla o número de vizinhos mais próximos.

  3. Combinar pontuações. Em cada documento, o mecanismo soma as pontuações de classificação recíproca obtidas de cada sistema de pesquisa, produzindo uma pontuação combinada para cada documento. 

  4. O mecanismo classifica documentos com base em pontuações combinadas e os classifica. A lista resultante é a classificação combinada.

Somente campos marcados como searchable no índice ou searchFields na consulta são usados para a pontuação. Somente campos marcados como retrievable ou campos especificados em select na consulta são retornados nos resultados da pesquisa, junto com sua pontuação de pesquisa.

Execução de consulta paralela

O RRF é usado sempre que há mais de uma execução de consulta. Os exemplos a seguir ilustram padrões de consulta nos quais ocorrem a execução de consulta paralela:

  • Uma consulta de texto completo, mais uma consulta de vetor (cenário híbrido simples), resulta em duas execuções de consulta.
  • Uma consulta de texto completo, mais uma consulta de vetor direcionada a dois campos vetoriais, resulta em três execuções de consulta.
  • Uma consulta de texto completo, mais duas consultas de vetor direcionadas a cinco campos vetoriais, resulta em 11 execuções de consulta

Pontuações em resultados da pesquisa híbrida

Sempre que os resultados são classificados, a propriedade @search.score contém o valor usado para ordenar os resultados. As pontuações são geradas por algoritmos de classificação que variam em cada método. Cada algoritmo tem o próprio intervalo e magnitude.

O gráfico a seguir identifica a propriedade de pontuação retornada de cada correspondência, algoritmo e intervalo de pontuações para cada algoritmo de classificação de relevância.

Método Search Parâmetro Algoritmo de pontuação Intervalo
pesquisa de texto completo @search.score Algoritmo BM25 Nenhum limite superior.
busca em vetores @search.score Algoritmo do HNSW, usando a métrica de similaridade especificada na configuração do HNSW. 0,333 – 1,00 (Cosseno), de 0 a 1 para Euclidean e DotProduct.
pesquisa híbrida @search.score Algoritmo do RRF O limite máximo é limitado pelo número de consultas sendo combinadas, com cada consulta contribuindo com o máximo de aproximadamente 1 para a pontuação do RRF. Por exemplo, mesclar três consultas produziria pontuações do RRF mais altas do que se fossem mesclados apenas dois resultados da pesquisa.
classificação semântica @search.rerankerScore Classificação semântica 0,00 – 4,00

A classificação semântica não participa do RRF. Essa pontuação (@search.rerankerScore) sempre é relatada separadamente na resposta da consulta. A classificação semântica pode reclassificar o texto completo e os resultados da pesquisa híbrida, desde que esses resultados incluam campos com conteúdo semanticamente avançado.

Número de resultados classificados em uma resposta de consulta híbrida

Por padrão, se você não estiver usando paginação, o mecanismo de pesquisa retornará as 50 melhores correspondências de classificação para a pesquisa de texto completo e as correspondências mais semelhantes de k para a busca em vetores. Em uma consulta híbrida, top determina o número de resultados na resposta. Com base nos padrões, são retornadas as 50 melhores correspondências classificadas do conjunto de resultados unificado.

Muitas vezes, o mecanismo de pesquisa encontra mais resultados do que top e k. Para retornar mais resultados, use os parâmetros de paginação top, skip e next. Paginação é como você determina o número de resultados em cada página lógica e navega pelo conteúdo completo.

A pesquisa de texto completo está sujeita a um limite máximo de 1.000 correspondências (confira limites de resposta da API). Depois de encontrar 1.000 correspondências, o mecanismo de pesquisa parará de procurar.

Para obter mais informações, consulte Como trabalhar com resultados da pesquisa.

Diagrama de um fluxo de trabalho de pontuação de pesquisa

O diagrama a seguir ilustra uma consulta híbrida que invoca a palavra-chave e a busca em vetores, com aumento por meio de perfis de pontuação e classificação semântica.

Diagram of prefilters.

Uma consulta que gera o fluxo de trabalho anterior pode ser assim:

POST https://{{search-service-name}}.search.windows.net/indexes/{{index-name}}/docs/search?api-version=2023-11-01
Content-Type: application/json
api-key: {{admin-api-key}}
{
   "queryType":"semantic",
   "search":"hello world",
   "searchFields":"field_a, field_b",
   "vectorQueries": [
       {
           "kind":"vector",
           "vector": [1.0, 2.0, 3.0],
           "fields": "field_c, field_d"
       },
       {
           "kind":"vector",
           "vector": [4.0, 5.0, 6.0],
           "fields": "field_d, field_e"
       }
   ],
   "scoringProfile":"my_scoring_profile"
}

Confira também