• À propos de Milvus
  • Commencer
  • Concepts
  • Guide de l'utilisateur
  • Importation de données
  • Outils d'IA
  • Guide d'administration
  • Outils
  • Intégrations
  • Tutoriels
  • FAQ
  • API Reference

BIN_IVF_FLAT

L'index BIN_IVF_FLAT est une variante de l'index IVF_FLAT exclusivement pour les encastrements binaires. Il améliore l'efficacité des requêtes en partitionnant d'abord les données vectorielles en plusieurs clusters (unités nlist) et en comparant ensuite le vecteur d'entrée cible au centre de chaque cluster. BIN_IVF_FLAT réduit considérablement le temps d'interrogation tout en permettant aux utilisateurs d'affiner l'équilibre entre la précision et la vitesse. Pour plus d'informations, voir IVF_FLAT.

Création d'un index

Pour construire un index BIN_IVF_FLAT sur un champ de vecteurs 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_binary_vector_field_name", # Name of the vector field to be indexed
    index_type="BIN_IVF_FLAT", # Type of the index to create
    index_name="vector_index", # Name of the index to create
    metric_type="HAMMING", # Metric type used to measure similarity
    params={
        "nlist": 64, # Number of clusters for the index
    } # Index building params
)

Dans cette configuration :

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

  • metric_type: La méthode utilisée pour calculer la distance entre les vecteurs. Les valeurs prises en charge pour les encastrements binaires sont HAMMING (valeur par défaut) et JACCARD. Pour plus d'informations, reportez-vous à la section Types de métriques.

  • params: Options de configuration supplémentaires pour la construction de l'index.

    • nlist: Nombre de grappes pour diviser l'ensemble de données.

    Pour en savoir plus sur les paramètres de construction disponibles pour l'index BIN_IVF_FLAT, 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 passant 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.

search_params = {
    "params": {
        "nprobe": 10, # Number of clusters to search
    }
}

res = MilvusClient.search(
    collection_name="your_collection_name", # Collection name
    anns_field="binary_vector_field",  # Binary vector field
    data=[query_binary_vector],  # Query binary vector
    limit=3,  # TopK results to return
    search_params=search_params
)

Dans cette configuration :

  • params: Options de configuration supplémentaires pour la recherche sur l'index.

    • nprobe: Nombre de clusters à rechercher.

    Pour en savoir plus sur les paramètres de recherche disponibles pour l'index BIN_IVF_FLAT, 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

nlist

Nombre de grappes à créer à l'aide de l'algorithme k-means lors de la construction de l'index. Chaque grappe, représentée par un centroïde, stocke une liste de vecteurs. L'augmentation de ce paramètre réduit le nombre de vecteurs dans chaque grappe, créant ainsi des partitions plus petites et plus ciblées.

Type: Entier Plage: [1, 65536]

Valeur par défaut: 128

Les valeurs plus élevées de nlist améliorent le rappel en créant des grappes plus fines, mais augmentent le temps de construction de l'index. Dans la plupart des cas, nous vous recommandons de définir une valeur comprise dans cette plage : [32, 4096].

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 sur l'index.

Paramètre

Description

Plage de valeurs

Suggestion de réglage

nprobe

Des valeurs plus élevées permettent de rechercher davantage de grappes, ce qui améliore le rappel en élargissant la portée de la recherche, mais au prix d'une latence accrue de la requête.

Type: Entier Plage: [1, nlist]

Valeur par défaut: 8

L'augmentation de cette valeur améliore le rappel mais peut ralentir la recherche. Réglez nprobe proportionnellement à nlist pour équilibrer la vitesse et la précision.

Dans la plupart des cas, nous vous recommandons de définir une valeur comprise dans cette fourchette : [1, nlist].

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 ?