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 valeurSPARSE_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 queDAAT_MAXSCOREetDAAT_WAND,TAAT_NAIVEoffre 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_NAIVEs'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 |
|---|---|---|---|
|
L'algorithme utilisé pour construire et interroger l'index. Il détermine la manière dont l'index traite les requêtes. |
|
Utilisez Choisissez Utilisez |
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 |
|---|---|---|---|
|
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, à |