• Informazioni su Milvus
  • Iniziare
  • Concetti
  • Guida per l'utente
    • Collezioni
    • Schema e campi dati
    • Inserisci e cancella
    • Indici
    • Ricerca
    • Incorporazione e riclassificazione
    • Ottimizzazione dello stoccaggio
  • Importazione dei dati
  • Strumenti AI
  • Guida all'amministrazione
  • Strumenti
  • Integrazioni
  • Tutorial
  • Domande frequenti
  • API Reference

BIN_IVF_FLAT

L'indice BIN_IVF_FLAT è una variante dell'indice IVF_FLAT esclusivamente per le incorporazioni binarie. Migliora l'efficienza delle interrogazioni suddividendo prima i dati vettoriali in più cluster (unità nlist) e confrontando poi il vettore di input target con il centro di ciascun cluster. BIN_IVF_FLAT riduce significativamente i tempi di interrogazione, consentendo agli utenti di regolare con precisione l'equilibrio tra precisione e velocità. Per ulteriori informazioni, consultare IVF_FLAT.

Creare un indice

Per costruire un indice BIN_IVF_FLAT su un campo vettoriale in Milvus, utilizzare il metodo add_index(), specificando i parametri index_type, metric_type e altri parametri aggiuntivi per l'indice.

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
)

In questa configurazione:

  • index_type: Il tipo di indice da costruire. In questo esempio, impostare il valore su BIN_IVF_FLAT.

  • metric_type: Il metodo usato per calcolare la distanza tra i vettori. I valori supportati per le incorporazioni binarie sono HAMMING (predefinito) e JACCARD. Per i dettagli, fare riferimento a Tipi di metriche.

  • params: Opzioni di configurazione aggiuntive per la costruzione dell'indice.

    • nlist: Numero di cluster in cui suddividere l'insieme di dati.

    Per conoscere i parametri di costruzione disponibili per l'indice BIN_IVF_FLAT, fare riferimento a 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 nel metodo create_collection. Per i dettagli, fare riferimento a Creare una raccolta.

Ricerca nell'indice

Una volta costruito l'indice e inserite le entità, è possibile eseguire ricerche di similarità sull'indice.

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
)

In questa configurazione:

  • params: Opzioni di configurazione aggiuntive per la ricerca sull'indice.

    • nprobe: Numero di cluster da ricercare.

    Per conoscere altri parametri di ricerca disponibili per l'indice BIN_IVF_FLAT, fare riferimento a Parametri di ricerca specifici dell'indice.

Parametri dell'indice

Questa sezione fornisce una panoramica dei parametri utilizzati per la creazione 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

nlist

Numero di cluster da creare con l'algoritmo k-means durante la costruzione dell'indice. Ogni cluster, rappresentato da un centroide, memorizza un elenco di vettori. Aumentando questo parametro si riduce il numero di vettori in ogni cluster, creando partizioni più piccole e mirate.

Tipo: Intervallo: [1, 65536]

Valore predefinito: 128

Valori maggiori di nlist migliorano il richiamo creando cluster più raffinati, ma aumentano il tempo di costruzione dell'indice. Ottimizzare in base alle dimensioni del set di dati e alle risorse disponibili. Nella maggior parte dei casi, si consiglia di impostare un valore compreso in questo intervallo: [32, 4096].

Parametri di ricerca specifici per l'indice

La tabella seguente elenca i parametri che possono essere configurati in search_params.params durante la ricerca sull'indice.

Parametro

Descrizione

Valore Intervallo

Suggerimento per la messa a punto

nprobe

Il numero di cluster da ricercare per i candidati. Valori più alti consentono di ricercare più cluster, migliorando il richiamo grazie all'espansione dell'ambito di ricerca, ma al costo di una maggiore latenza della query.

Tipo: Intero Intervallo: [1, nlist]

Valore predefinito: 8

L'aumento di questo valore migliora il richiamo, ma può rallentare la ricerca. Impostare nprobe in proporzione a nlist per bilanciare velocità e precisione.

Nella maggior parte dei casi, si consiglia di impostare un valore compreso in questo intervallo: [1, nlist].

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
Feedback

Questa pagina è stata utile?