INDICE SPARSE_INVERTITO
L'indice SPARSE_INVERTED_INDEX è un tipo di indice utilizzato da Milvus per memorizzare e cercare in modo efficiente vettori sparsi. Questo tipo di indice sfrutta i principi dell'indicizzazione invertita per creare una struttura di ricerca altamente efficiente per i dati sparsi. Per ulteriori informazioni, consultare INVERTED.
Creazione dell'indice
Per costruire un indice SPARSE_INVERTED_INDEX su un campo vettoriale rado in Milvus, utilizzare il metodo add_index(), specificando i parametri index_type, metric_type e ulteriori per l'indice.
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
)
In questa configurazione:
index_type: Il tipo di indice da costruire. In questo esempio, impostare il valore suSPARSE_INVERTED_INDEX.metric_type: La metrica utilizzata per calcolare la somiglianza tra vettori sparsi. Valori validi:IP(Prodotto interno): Misura la somiglianza utilizzando il prodotto di punti.BM25: Utilizzata in genere per la ricerca full-text, che si concentra sulla somiglianza testuale.Per ulteriori dettagli, fare riferimento a Tipi di metriche e ricerca full-text.
params.inverted_index_algo: L'algoritmo usato per costruire e interrogare l'indice. Valori validi:"DAAT_MAXSCORE"(predefinito): Elaborazione ottimizzata delle query Document-at-a-Time (DAAT) con l'algoritmo MaxScore. MaxScore fornisce prestazioni migliori per valori elevati di k o per query con molti termini, saltando termini e documenti che potrebbero avere un impatto minimo. Questo risultato si ottiene suddividendo i termini in gruppi essenziali e non essenziali in base ai punteggi di impatto massimo, concentrandosi sui termini che possono contribuire ai risultati top-k."DAAT_WAND": Elaborazione ottimizzata delle query DAAT con l'algoritmo WAND. WAND valuta un minor numero di documenti trovati, sfruttando i punteggi di impatto massimo per saltare i documenti non competitivi, ma ha un overhead più elevato per ogni singolo colpo. Questo rende WAND più efficiente per le query con valori k piccoli o per le query brevi, dove il salto è più fattibile."TAAT_NAIVE": Elaborazione di query Basic Term-at-a-Time (TAAT). Pur essendo più lento rispetto aDAAT_MAXSCOREeDAAT_WAND,TAAT_NAIVEoffre un vantaggio unico. A differenza degli algoritmi DAAT, che utilizzano punteggi di impatto massimo memorizzati nella cache che rimangono statici indipendentemente dalle modifiche al parametro di raccolta globale (avgdl),TAAT_NAIVEsi adatta dinamicamente a tali modifiche.
Per conoscere i parametri di costruzione disponibili per l'indice
SPARSE_INVERTED_INDEX, consultare la sezione Parametri di costruzione dell'indice.
Una volta configurati i parametri dell'indice, è possibile creare l'indice utilizzando direttamente il metodo create_index() o passando i parametri dell'indice al metodo create_collection. Per i dettagli, fare riferimento a Creare una raccolta.
Ricerca nell'indice
Una volta creato l'indice e inserite le entità, è possibile eseguire ricerche di similarità sull'indice.
# 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
)
Per conoscere i parametri di ricerca disponibili per l'indice SPARSE_INVERTED_INDEX, fare riferimento a Parametri di ricerca specifici dell'indice.
Parametri dell'indice
Questa sezione fornisce una panoramica dei parametri utilizzati per la costruzione di un indice e per l'esecuzione di ricerche sull'indice.
Parametri di costruzione dell'indice
La tabella seguente elenca i parametri che possono essere configurati in params quando si costruisce un indice.
Parametro |
Descrizione |
Valore Intervallo |
Suggerimento per la messa a punto |
|---|---|---|---|
|
L'algoritmo usato per costruire e interrogare l'indice. Determina il modo in cui l'indice elabora le query. |
|
Utilizzare Scegliere Usare |
Parametri di ricerca specifici per l'indice
La tabella seguente elenca i parametri che possono essere configurati in search_params.params per la ricerca nell'indice.
Parametro |
Descrizione |
Valore Intervallo |
Suggerimento di sintonizzazione |
|---|---|---|---|
|
Percentuale dei valori più piccoli da ignorare durante la ricerca, per ridurre il rumore. |
Frazione compresa tra 0,0 e 1,0 (ad esempio, 0,2 ignora il 20% dei valori più piccoli). |
Questo parametro può essere regolato in base alla spazialità e al livello di rumore dei vettori della query. Questo parametro controlla la proporzione di valori di bassa grandezza abbandonati durante la ricerca. Aumentando questo valore (ad esempio, a |