milvus-logo
LFAI
Home
  • Guia do utilizador

Reranking

O Milvus permite capacidades de pesquisa híbrida utilizando a API hybrid_search(), incorporando estratégias sofisticadas de reranking para refinar os resultados de pesquisa de múltiplas instâncias AnnSearchRequest. Este tópico aborda o processo de reranking, explicando o seu significado e a implementação de diferentes estratégias de reranking no Milvus.

Visão geral

A figura seguinte ilustra a execução de uma pesquisa híbrida em Milvus e destaca o papel do reranking no processo.

reranking_process

O reranking na pesquisa híbrida é um passo crucial que consolida os resultados de vários campos vectoriais, assegurando que o resultado final é relevante e priorizado com precisão. Atualmente, o Milvus oferece estas estratégias de classificação:

  • WeightedRanker: Esta abordagem funde os resultados através do cálculo de uma média ponderada das pontuações (ou distâncias vectoriais) de diferentes pesquisas vectoriais. Atribui pesos com base na importância de cada campo de vetor.

  • RRFRanker: Esta estratégia combina resultados com base nas suas classificações em diferentes colunas de vectores.

Pontuação ponderada (WeightedRanker)

A estratégia WeightedRanker atribui pesos diferentes aos resultados de cada rota de pesquisa vetorial com base na importância de cada campo vetorial. Esta estratégia de reclassificação é aplicada quando a importância de cada campo vetorial varia, permitindo enfatizar determinados campos vectoriais em detrimento de outros, atribuindo-lhes pesos mais elevados. Por exemplo, numa pesquisa multimodal, a descrição do texto pode ser considerada mais importante do que a distribuição de cores nas imagens.

O processo básico do WeightedRanker é o seguinte:

  • Recolher pontuações durante a recuperação: Recolhe os resultados e as suas pontuações de diferentes rotas de recuperação de vectores.

  • Normalização da pontuação: Normalizar as pontuações de cada rota para um intervalo de [0,1], onde valores mais próximos de 1 indicam maior relevância. Essa normalização é crucial devido às distribuições de pontuação que variam com diferentes tipos de métricas. Por exemplo, a distância para IP varia de [-∞,+∞], enquanto a distância para L2 varia de [0,+∞]. Milvus emprega a função arctan, transformando os valores para o intervalo [0,1] para fornecer uma base padronizada para diferentes tipos de métricas.

    arctan-function

  • Atribuição de pesos: Atribui um peso w𝑖 a cada rota de recuperação de vectores. Os utilizadores especificam os pesos, que reflectem a fiabilidade, precisão ou outras métricas pertinentes da fonte de dados. Cada peso varia entre [0,1].

  • Fusão de pontuação: Calcula uma média ponderada das pontuações normalizadas para obter a pontuação final. Os resultados são então classificados com base nas pontuações mais altas e mais baixas para gerar os resultados finais ordenados.

weighted-reranker classificador ponderado

Para usar essa estratégia, aplique uma instância WeightedRanker e defina os valores de peso passando um número variável de argumentos numéricos.

from pymilvus import WeightedRanker

# Use WeightedRanker to combine results with specified weights
rerank = WeightedRanker(0.8, 0.8, 0.7) 

Observe que:

  • Cada valor de peso varia de 0 (menos importante) a 1 (mais importante), influenciando a pontuação agregada final.

  • O número total de valores de peso fornecidos em WeightedRanker deve ser igual ao número de instâncias de AnnSearchRequest que você criou anteriormente.

  • É importante observar que, devido às diferentes medidas dos diferentes tipos de métricas, normalizamos as distâncias dos resultados de recuperação para que fiquem no intervalo [0,1], em que 0 significa diferente e 1 significa semelhante. A pontuação final será a soma dos valores de peso e das distâncias.

Fusão de classificação recíproca (RRFRanker)

O RRF é um método de fusão de dados que combina listas de classificação com base na recíproca das suas classificações. É uma forma eficaz de equilibrar a influência de cada campo vetorial, especialmente quando não existe uma precedência clara de importância. Esta estratégia é normalmente utilizada quando se pretende dar igual consideração a todos os campos vectoriais ou quando existe incerteza quanto à importância relativa de cada campo.

O processo básico da RRF é o seguinte:

  • Coletar classificações durante a recuperação: Os recuperadores de vários campos vectoriais recuperam e ordenam os resultados.

  • Fusão de classificações: O algoritmo RRF pondera e combina as classificações de cada recuperador. A fórmula é a seguinte:

    rrf-ranker rrf-ranker

    Aqui, 𝑁 representa o número de rotas de recuperação diferentes, rank𝑖(𝑑) é a posição de classificação do documento recuperado 𝑑 pelo 𝑖-ésimo recuperador, e 𝑘 é um parâmetro de suavização, normalmente definido para 60.

  • Classificação abrangente: Classificar novamente os resultados recuperados com base nas pontuações combinadas para produzir os resultados finais.

Para utilizar esta estratégia, aplique uma instância RRFRanker.

from pymilvus import RRFRanker

# Default k value is 60
ranker = RRFRanker()

# Or specify k value
ranker = RRFRanker(k=100)

A RRF permite equilibrar a influência entre campos sem especificar pesos explícitos. As principais correspondências acordadas por vários campos terão prioridade na classificação final.

Traduzido porDeepLogo

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
Feedback

Esta página foi útil?