milvus-logo
LFAI
Home
  • Guide de l'utilisateur

Reclassement

Milvus offre des capacités de recherche hybride à l'aide de l'API hybrid_search(), intégrant des stratégies de reclassement sophistiquées pour affiner les résultats de la recherche à partir de plusieurs instances AnnSearchRequest. Cette rubrique couvre le processus de reclassement, en expliquant son importance et la mise en œuvre de différentes stratégies de reclassement dans Milvus.

Vue d'ensemble

La figure suivante illustre l'exécution d'une recherche hybride dans Milvus et met en évidence le rôle du reclassement dans le processus.

reranking_process

Le reclassement dans la recherche hybride est une étape cruciale qui consolide les résultats provenant de plusieurs champs vectoriels, garantissant que le résultat final est pertinent et hiérarchisé avec précision. Actuellement, Milvus propose les stratégies de reclassement suivantes :

  • WeightedRanker: Cette approche fusionne les résultats en calculant une moyenne pondérée des scores (ou distances vectorielles) de différentes recherches vectorielles. Elle attribue des poids en fonction de l'importance de chaque champ vectoriel.

  • RRFRanker: Cette stratégie combine les résultats en fonction de leur classement dans différentes colonnes vectorielles.

Notation pondérée (WeightedRanker)

La stratégie WeightedRanker attribue des poids différents aux résultats de chaque itinéraire de recherche vectorielle en fonction de l'importance de chaque champ vectoriel. Cette stratégie de reclassement est appliquée lorsque l'importance de chaque champ vectoriel varie, ce qui permet de mettre l'accent sur certains champs vectoriels plutôt que sur d'autres en leur attribuant des poids plus élevés. Par exemple, dans une recherche multimodale, la description du texte peut être considérée comme plus importante que la distribution des couleurs dans les images.

Le processus de base de WeightedRanker est le suivant :

  • Collecte des scores au cours de la recherche: Rassembler les résultats et leurs scores à partir de différents itinéraires de recherche vectorielle.

  • Normalisation des scores: Normaliser les scores de chaque itinéraire dans une fourchette [0,1], où les valeurs proches de 1 indiquent une plus grande pertinence. Cette normalisation est cruciale car la distribution des scores varie en fonction des différents types de métriques. Par exemple, la distance pour IP est comprise entre [-∞,+∞], tandis que la distance pour L2 est comprise entre [0,+∞]. Milvus utilise la fonction arctan, transformant les valeurs dans l'intervalle [0,1] afin de fournir une base normalisée pour les différents types de métriques.

    arctan-function

  • Attribution de poids: Attribuer un poids w𝑖 à chaque itinéraire de recherche vectorielle. Les utilisateurs spécifient les poids, qui reflètent la fiabilité, la précision ou d'autres mesures pertinentes de la source de données. Chaque poids est compris entre [0,1].

  • Fusion des scores: Calculer une moyenne pondérée des scores normalisés pour obtenir le score final. Les résultats sont ensuite classés en fonction de ces notes, de la plus élevée à la plus basse, afin de générer les résultats finaux triés.

weighted-reranker reanker pondéré

Pour utiliser cette stratégie, appliquez une instance WeightedRanker et définissez des valeurs de pondération en passant un nombre variable d'arguments numériques.

from pymilvus import WeightedRanker

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

Notez que :

  • Chaque valeur de poids va de 0 (le moins important) à 1 (le plus important), ce qui influence le score agrégé final.

  • Le nombre total de valeurs de pondération fournies dans WeightedRanker doit être égal au nombre d'instances AnnSearchRequest que vous avez créées précédemment.

  • Il convient de noter qu'en raison des différentes mesures des différents types de métriques, nous normalisons les distances des résultats du rappel de manière à ce qu'elles se situent dans l'intervalle [0,1], où 0 signifie différent et 1 signifie similaire. Le score final sera la somme des valeurs de pondération et des distances.

Fusion de rangs réciproques (RRFRanker)

Le RRF est une méthode de fusion de données qui combine des listes de classement basées sur la réciproque de leurs rangs. C'est un moyen efficace d'équilibrer l'influence de chaque champ vectoriel, en particulier lorsqu'il n'y a pas d'ordre de priorité clair. Cette stratégie est généralement utilisée lorsque l'on souhaite accorder la même importance à tous les champs vectoriels ou lorsqu'il existe une incertitude quant à l'importance relative de chaque champ.

Le processus de base de RRF est le suivant :

  • Recueillir les classements pendant la recherche: Les chercheurs de plusieurs champs vectoriels récupèrent et trient les résultats.

  • Fusion des classements: L'algorithme RRF pondère et combine les classements de chaque récupérateur. La formule est la suivante :

    rrf-ranker rrf-ranker

    Ici, 𝑁 représente le nombre d'itinéraires de recherche différents, rank𝑖(𝑑) est le rang du document récupéré 𝑑 par le 𝑖ème extracteur, et 𝑘 est un paramètre de lissage, généralement fixé à 60.

  • Classement complet: Reclasser les résultats récupérés sur la base des scores combinés pour produire les résultats finaux.

Pour utiliser cette stratégie, appliquez une instance RRFRanker.

from pymilvus import RRFRanker

# Default k value is 60
ranker = RRFRanker()

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

RRF permet d'équilibrer l'influence entre les domaines sans spécifier de pondérations explicites. Les meilleures correspondances approuvées par plusieurs domaines seront prioritaires dans le classement final.

Traduit parDeepL

Try Managed Milvus for Free

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

Get Started
Feedback

Cette page a-t - elle été utile ?