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 valeurBIN_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 sontHAMMING(valeur par défaut) etJACCARD. 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 |
|---|---|---|---|
|
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: |
Les valeurs plus élevées de |
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 |
|---|---|---|---|
|
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: |
L'augmentation de cette valeur améliore le rappel mais peut ralentir la recherche. Réglez Dans la plupart des cas, nous vous recommandons de définir une valeur comprise dans cette fourchette : [1, nlist]. |