GPU_IVF_FLAT
L'index GPU_IVF_FLAT est une version de l'index IVF_FLAT accélérée par le GPU et conçue exclusivement pour les environnements GPU. Il partitionne les données vectorielles en nlist unités de cluster et calcule la similarité en comparant d'abord le vecteur cible de la requête avec le centre de chaque cluster. En réglant le paramètre nprobe, seules les grappes les plus prometteuses sont recherchées, ce qui réduit le temps d'interrogation tout en maintenant un équilibre entre la précision et la vitesse. Pour plus d'informations sur les concepts fondamentaux, voir IVF_FLAT.
Création d'un index
Pour construire un index GPU_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_vector_field_name", # Name of the vector field to be indexed
index_type="GPU_IVF_FLAT", # Type of the index to create
index_name="vector_index", # Name of the index to create
metric_type="L2", # Metric type used to measure similarity
params={
"nlist": 1024, # 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 valeurGPU_IVF_FLAT.metric_type: La méthode utilisée pour calculer la distance entre les vecteurs. Pour plus de détails, 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
GPU_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="vector_field",
data=[[0.1, 0.2, 0.3, 0.4, 0.5]], # Query 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
GPU_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]. |