• À propos de Milvus
  • Commencer
  • Concepts
  • Guide de l'utilisateur
    • Collections
    • Schéma et champs de données
    • Insérer et supprimer
    • Index
    • Recherche
    • Embeddings & Reranking
    • Optimisation du stockage
  • Importation de données
  • Outils d'IA
  • Guide d'administration
  • Outils
  • Intégrations
  • Tutoriels
  • FAQ
  • API Reference

INDEX_INVERSÉ_SPARSE

L'index SPARSE_INVERTED_INDEX est un type d'index utilisé par Milvus pour stocker et rechercher efficacement des vecteurs épars. Ce type d'index exploite les principes de l'indexation inversée pour créer une structure de recherche très efficace pour les données éparses. Pour plus d'informations, voir INVERTED.

Création d'un index

Pour construire un index SPARSE_INVERTED_INDEX sur un champ de vecteurs clairsemés dans Milvus, utilisez la méthode add_index(), en spécifiant les paramètres index_type, metric_type et d'autres paramètres pour l'index.

from pymilvus import MilvusClient

# Prepare index building params
index_params = MilvusClient.prepare_index_params()

index_params.add_index(
    field_name="your_sparse_vector_field_name", # Name of the vector field to be indexed
    index_type="SPARSE_INVERTED_INDEX", # Type of the index to create
    index_name="sparse_inverted_index", # Name of the index to create
    metric_type="IP", # Metric type used to measure similarity
    params={"inverted_index_algo": "DAAT_MAXSCORE"}, # Algorithm used for building and querying the index
)

Dans cette configuration :

  • index_type: Le type d'index à construire. Dans cet exemple, définissez la valeur SPARSE_INVERTED_INDEX.

  • metric_type: La métrique utilisée pour calculer la similarité entre les vecteurs épars. Valeurs valides :

    • IP (Produit intérieur) : Mesure la similarité à l'aide du produit de points.

    • BM25: Généralement utilisé pour la recherche en texte intégral, en se concentrant sur la similarité textuelle.

      Pour plus de détails, voir Types de métriques et recherche plein texte.

  • params.inverted_index_algo: L'algorithme utilisé pour construire et interroger l'index. Valeurs valides :

    • "DAAT_MAXSCORE" (par défaut) : Traitement optimisé des requêtes Document-at-a-Time (DAAT) à l'aide de l'algorithme MaxScore. MaxScore offre de meilleures performances pour les valeurs k élevées ou les requêtes comportant de nombreux termes en ignorant les termes et les documents susceptibles d'avoir un impact minimal. Il y parvient en répartissant les termes en groupes essentiels et non essentiels sur la base de leur score d'impact maximal, en se concentrant sur les termes qui peuvent contribuer aux résultats les plus importants.

    • "DAAT_WAND": Traitement optimisé des requêtes DAAT à l'aide de l'algorithme WAND. WAND évalue moins de documents en exploitant les scores d'impact maximum pour ignorer les documents non compétitifs, mais ses frais généraux par hit sont plus élevés. L'algorithme WAND est donc plus efficace pour les requêtes avec des valeurs k faibles ou pour les requêtes courtes, pour lesquelles il est plus facile de sauter des documents.

    • "TAAT_NAIVE": Traitement des requêtes par terme de base à la fois (TAAT). Bien qu'il soit plus lent que DAAT_MAXSCORE et DAAT_WAND, TAAT_NAIVE offre un avantage unique. Contrairement aux algorithmes DAAT, qui utilisent des scores d'impact maximum mis en cache et qui restent statiques quelles que soient les modifications apportées au paramètre de collecte global (avgdl), TAAT_NAIVE s'adapte dynamiquement à ces modifications.

    Pour en savoir plus sur les paramètres de construction disponibles pour l'index SPARSE_INVERTED_INDEX, reportez-vous à Paramètres de construction de l'index.

Une fois les paramètres de l'index configurés, vous pouvez créer l'index en utilisant directement la méthode create_index() ou en transmettant les paramètres de l'index dans la méthode create_collection. Pour plus d'informations, reportez-vous à la section Créer une collection.

Recherche sur l'index

Une fois l'index construit et les entités insérées, vous pouvez effectuer des recherches de similarité sur l'index.

# Prepare the query vector
query_vector = [{1: 0.2, 50: 0.4, 1000: 0.7}]

res = MilvusClient.search(
    collection_name="your_collection_name", # Collection name
    anns_field="vector_field",  # Vector field name
    data=query_vector,  # Query vector
    limit=3,  # TopK results to return
)

Pour en savoir plus sur les paramètres de recherche disponibles pour l'index SPARSE_INVERTED_INDEX, reportez-vous à Paramètres de recherche spécifiques à l'index.

Paramètres de l'index

Cette section présente une vue d'ensemble des paramètres utilisés pour construire un index et effectuer des recherches sur l'index.

Paramètres de construction d'index

Le tableau suivant répertorie les paramètres qui peuvent être configurés sur params lors de la création d'un index.

Paramètre

Description de l'index

Plage de valeurs

Suggestion de réglage

inverted_index_algo

L'algorithme utilisé pour construire et interroger l'index. Il détermine la manière dont l'index traite les requêtes.

"DAAT_MAXSCORE" (par défaut), "DAAT_WAND", "TAAT_NAIVE"

Utilisez "DAAT_MAXSCORE" pour les scénarios avec des valeurs k élevées ou les requêtes avec de nombreux termes, qui peuvent bénéficier de l'exclusion des documents non compétitifs.

Choisissez "DAAT_WAND" pour les requêtes avec des valeurs k faibles ou les requêtes courtes afin de tirer parti d'un saut plus efficace.

Utilisez "TAAT_NAIVE" si un ajustement dynamique aux changements de collection (par exemple, avgdl) est nécessaire.

Paramètres de recherche spécifiques à l'index

Le tableau suivant répertorie les paramètres qui peuvent être configurés dans search_params.params lors d'une recherche dans l'index.

Paramètre

Description des paramètres

Plage de valeurs

Suggestion d'accord

drop_ratio_search

Proportion des plus petites valeurs à ignorer lors de la recherche, ce qui permet de réduire le bruit.

Fraction comprise entre 0,0 et 1,0 (par exemple, 0,2 ignore les 20 % de valeurs les plus petites).

Ajustez ce paramètre en fonction de la rareté et du niveau de bruit de vos vecteurs d'interrogation.

Ce paramètre contrôle la proportion de valeurs de faible magnitude abandonnées au cours de la recherche. L'augmentation de cette valeur (par exemple, à 0.2) peut réduire le bruit et concentrer la recherche sur des composants plus significatifs, ce qui peut améliorer la précision et l'efficacité. Cependant, l'abandon d'un plus grand nombre de valeurs peut également réduire le rappel en excluant des signaux potentiellement pertinents. Choisissez une valeur qui équilibre le rappel et la précision pour votre charge de travail.

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 ?