FLAT
L'indice FLAT è uno dei metodi più semplici e diretti per l'indicizzazione e la ricerca di vettori in virgola mobile. Si basa su un approccio a forza bruta, in cui ogni vettore interrogato viene confrontato direttamente con ogni vettore del set di dati, senza alcuna preelaborazione o strutturazione avanzata dei dati. Questo approccio garantisce l'accuratezza, offrendo un richiamo del 100%, poiché ogni potenziale corrispondenza viene valutata.
Tuttavia, questo metodo di ricerca esaustivo comporta degli svantaggi. L'indice FLAT è l'opzione di indicizzazione più lenta, poiché esegue una scansione completa del set di dati per ogni query. Di conseguenza, non è adatto ad ambienti con enormi insiemi di dati, dove le prestazioni sono un problema. Il vantaggio principale dell'indice FLAT è la sua semplicità e affidabilità, in quanto non richiede addestramento o complesse configurazioni di parametri.
Creazione dell'indice
Per costruire un indice FLAT su un campo vettoriale in Milvus, utilizzare il metodo add_index(), specificando i parametri index_type e metric_type per l'indice.
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="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={} # No additional parameters required for FLAT
)
In questa configurazione:
index_type: Il tipo di indice da costruire. In questo esempio, impostare il valore suFLAT.metric_type: Il metodo utilizzato per calcolare la distanza tra i vettori. I valori supportati sonoCOSINE,L2eIP. Per i dettagli, fare riferimento a Tipi di metriche.params: Per l'indice FLAT non sono necessari parametri aggiuntivi.
Una volta configurati i parametri dell'indice, è possibile creare l'indice utilizzando direttamente il metodo create_index() o passando i parametri dell'indice nel metodo create_collection. Per ulteriori informazioni, consultare la sezione Creare una raccolta.
Ricerca nell'indice
Una volta creato l'indice e inserite le entità, è possibile eseguire ricerche di similarità sull'indice.
res = MilvusClient.search(
collection_name="your_collection_name", # Collection name
anns_field="vector_field", # Vector field name
data=[[0.1, 0.2, 0.3, 0.4, 0.5]], # Query vector
limit=3, # TopK results to return
search_params={"params": {}} # No additional parameters required for FLAT
)
Parametri dell'indice
Per l'indice FLAT, non sono necessari parametri aggiuntivi né durante la creazione dell'indice né durante il processo di ricerca.