• Informazioni su Milvus
  • Iniziare
  • Concetti
  • Guida per l'utente
  • Importazione dei dati
  • Strumenti AI
  • Guida all'amministrazione
  • Strumenti
  • Integrazioni
  • Tutorial
  • Domande frequenti
  • API Reference

Indice in memoria

Questa pagina è deprecata. Per i contenuti più recenti, consultare Indice spiegato.

Questo argomento elenca i vari tipi di indici in-memory supportati da Milvus, gli scenari più adatti a ciascuno di essi e i parametri che gli utenti possono configurare per ottenere migliori prestazioni di ricerca. Per gli indici su disco, vedere Indice su disco.

L'indicizzazione è il processo di organizzazione efficiente dei dati e svolge un ruolo importante nel rendere utile la ricerca per similarità, accelerando notevolmente le interrogazioni che richiedono molto tempo su grandi insiemi di dati.

Per migliorare le prestazioni delle query, è possibile specificare un tipo di indice per ogni campo vettoriale.

Attualmente, un campo vettoriale supporta solo un tipo di indice. Milvus cancella automaticamente il vecchio indice quando si cambia tipo di indice.

Indici vettoriali ANNS

La maggior parte dei tipi di indici vettoriali supportati da Milvus utilizza algoritmi di ricerca approssimativa dei vicini (ANNS). Rispetto al reperimento accurato, che di solito richiede molto tempo, l'idea centrale di ANNS non si limita più a restituire il risultato più accurato, ma cerca solo i vicini del target. ANNS migliora l'efficienza del reperimento sacrificando l'accuratezza entro un intervallo accettabile.

In base ai metodi di implementazione, l'indice vettoriale ANNS può essere classificato in quattro tipi: Ad albero, a grafo, ad hash e a quantizzazione.

Indici supportati in Milvus

Milvus supporta diversi tipi di indici, classificati in base al tipo di incorporazioni vettoriali che gestiscono: incorporazioni in virgola mobile (note anche come vettori in virgola mobile o vettori densi), incorporazioni binarie (note anche come vettori binari) e incorporazioni rade (note anche come vettori radi).

Indici per le incorporazioni in virgola mobile

Per le incorporazioni in virgola mobile (vettori) a 128 dimensioni, la memoria occupata è 128 * la dimensione del float = 512 byte. Le metriche di distanza utilizzate per le incorporazioni in virgola mobile sono la distanza euclidea (L2) e il prodotto interno (IP).

Questi tipi di indici includono FLAT, IVF_FLAT, IVF_PQ, IVF_SQ8, HNSW, HNSW_SQ, HNSW_PQ, HNSW_PRQ e SCANN per le ricerche di RNA basate su CPU.

Indici per le incorporazioni binarie

Per le incorporazioni binarie a 128 dimensioni, la memoria che occupano è 128 / 8 = 16 byte. Le metriche di distanza utilizzate per le incorporazioni binarie sono JACCARD e HAMMING.

Questo tipo di indici include BIN_FLAT e BIN_IVF_FLAT.

Indici per incorporazioni rade

Gli indici per le incorporazioni rade supportano solo le metriche IP e BM25 (per la ricerca full-text).

Tipo di indice supportato per le incorporazioni rade: SPARSE_INVERTED_INDEX.

A partire da Milvus 2.5.4, SPARSE_WAND è stato deprecato. Si raccomanda invece di utilizzare "inverted_index_algo": "DAAT_WAND" per ottenere l'equivalenza e mantenere la compatibilità. Per ulteriori informazioni, consultare Vettore sparso.

Indice supportato Classificazione Scenario
PIATTO N/D
  • Set di dati relativamente piccolo
  • Richiede un tasso di richiamo del 100%.
FIV_FLAT N/D
  • Interrogazione ad alta velocità
  • Richiede un tasso di richiamo il più alto possibile
FIV_SQ8 Indice basato sulla quantizzazione
  • Interrogazione ad altissima velocità
  • Risorse di memoria limitate
  • Accetta un piccolo compromesso nel tasso di richiamo
FIV_PQ Indice basato sulla quantizzazione
  • Interrogazione ad alta velocità
  • Risorse di memoria limitate
  • Accetta un piccolo compromesso nel tasso di richiamo
HNSW Indice basato su grafici
  • Interrogazione ad altissima velocità
  • Richiede un tasso di richiamo il più alto possibile
  • Grandi risorse di memoria
HNSW_SQ Indice basato sulla quantizzazione
  • Interrogazione ad altissima velocità
  • Risorse di memoria limitate
  • Accetta un piccolo compromesso nel tasso di richiamo
HNSW_PQ Indice basato sulla quantizzazione
  • Interrogazione a media velocità
  • Risorse di memoria molto limitate
  • Accetta un piccolo compromesso nel tasso di richiamo
HNSW_PRQ Indice basato sulla quantizzazione
  • Interrogazione a media velocità
  • Risorse di memoria molto limitate
  • Accetta un piccolo compromesso nel tasso di richiamo
SCANN Indice basato sulla quantizzazione
  • Interrogazione ad altissima velocità
  • Richiede un tasso di richiamo il più alto possibile
  • Grandi risorse di memoria
Indice supportato Classificazione Scenario
BIN_FLAT Indice basato sulla quantizzazione
  • Dipende da insiemi di dati relativamente piccoli.
  • Richiede una precisione perfetta.
  • Non si applica alcuna compressione.
  • Garantisce risultati di ricerca esatti.
BIN_IVF_FLAT Indice basato sulla quantizzazione
  • Interrogazione ad alta velocità
  • Richiede un tasso di richiamo il più alto possibile
Indice supportato Classificazione Scenario
INDICE SPARSO_INVERTITO Indice invertito
  • Dipende da insiemi di dati relativamente piccoli.
  • Richiede un tasso di richiamo del 100%.

FLAT

Per le applicazioni di ricerca di similarità vettoriale che richiedono una precisione perfetta e dipendono da insiemi di dati relativamente piccoli (su scala di milioni), l'indice FLAT è una buona scelta. FLAT non comprime i vettori ed è l'unico indice in grado di garantire risultati di ricerca esatti. I risultati di FLAT possono anche essere utilizzati come punto di confronto per i risultati prodotti da altri indici che hanno un richiamo inferiore al 100%.

FLAT è accurato perché adotta un approccio esaustivo alla ricerca, il che significa che per ogni query l'input di destinazione viene confrontato con ogni insieme di vettori in un set di dati. Questo rende FLAT l'indice più lento del nostro elenco e poco adatto a interrogare dati vettoriali massicci. Non sono richiesti parametri per l'indice FLAT in Milvus e il suo utilizzo non richiede la costruzione di un indice aggiuntivo.

  • Parametri di ricerca

    ParametroDescrizioneGamma
    metric_type[La metrica di distanza scelta.Vedere Metriche supportate.

IVF_FLAT

IVF_FLAT divide i dati vettoriali in unità cluster nlist e confronta le distanze tra il vettore di input di destinazione e il centro di ciascun cluster. A seconda del numero di cluster che il sistema è impostato per interrogare (nprobe), i risultati della ricerca di similarità vengono restituiti in base al confronto tra l'input di destinazione e i vettori nei soli cluster più simili, riducendo drasticamente il tempo di interrogazione.

Regolando nprobe, è possibile trovare un equilibrio ideale tra precisione e velocità per un determinato scenario. I risultati del test sulle prestazioni di IVF_FLAT dimostrano che il tempo di interrogazione aumenta bruscamente all'aumentare del numero di vettori di input target (nq) e del numero di cluster da ricercare (nprobe).

IVF_FLAT è l'indice IVF più elementare e i dati codificati memorizzati in ogni unità sono coerenti con i dati originali.

  • Parametri di costruzione dell'indice

    ParametroDescrizioneIntervalloValore predefinito
    nlistNumero di unità cluster[1, 65536]128
  • Parametri di ricerca

    • Ricerca comune

      ParametroDescrizioneIntervalloValore predefinito
      nprobeNumero di unità da interrogare[1, nlist]8
    • Ricerca dell'intervallo

      ParametroDescrizioneIntervalloValore predefinito
      max_empty_result_bucketsNumero massimo di bucket che non restituiscono alcun risultato di ricerca.
      È un parametro di ricerca per intervallo e termina il processo di ricerca quando il numero di bucket vuoti consecutivi raggiunge il valore specificato.
      Aumentando questo valore si può migliorare il tasso di richiamo al costo di un aumento del tempo di ricerca.
      [1, 65535]2

IVF_SQ8

IVF_FLAT non esegue alcuna compressione, quindi i file di indice che produce hanno più o meno le stesse dimensioni dei dati vettoriali originali non indicizzati. Ad esempio, se il set di dati SIFT 1B originale è di 476 GB, i file di indice IVF_FLAT saranno leggermente più piccoli (~470 GB). Il caricamento di tutti i file di indice in memoria consumerà 470 GB di memoria.

Quando le risorse di memoria del disco, della CPU o della GPU sono limitate, IVF_SQ8 è un'opzione migliore di IVF_FLAT. Questo tipo di indice può convertire ogni FLOAT (4 byte) in UINT8 (1 byte) eseguendo la quantizzazione scalare (SQ). Questo riduce il consumo di memoria su disco, CPU e GPU del 70-75%. Per il set di dati 1B SIFT, i file di indice IVF_SQ8 richiedono solo 140 GB di memoria.

  • Parametri di costruzione dell'indice

    ParametroDescrizioneIntervallo
    nlistNumero di unità di cluster[1, 65536]
  • Parametri di ricerca

    • Ricerca comune

      ParametroDescrizioneIntervalloValore predefinito
      nprobeNumero di unità da interrogare[1, nlist]8
    • Ricerca dell'intervallo

      ParametroDescrizioneIntervalloValore predefinito
      max_empty_result_bucketsNumero massimo di bucket che non restituiscono alcun risultato di ricerca.
      È un parametro di ricerca per intervallo e termina il processo di ricerca quando il numero di bucket vuoti consecutivi raggiunge il valore specificato.
      Aumentando questo valore si può migliorare il tasso di richiamo al costo di un aumento del tempo di ricerca.
      [1, 65535]2

IVF_PQ

PQ (Product Quantization) decompone uniformemente lo spazio vettoriale originale ad alta dimensione in prodotti cartesiani di m spazi vettoriali a bassa dimensione, quindi quantizza gli spazi vettoriali a bassa dimensione decomposti. Invece di calcolare le distanze tra il vettore target e il centro di tutte le unità, la quantizzazione del prodotto consente di calcolare le distanze tra il vettore target e il centro di raggruppamento di ogni spazio a bassa dimensione, riducendo notevolmente la complessità temporale e spaziale dell'algoritmo.

IVF_PQ esegue il clustering dell'indice IVF prima di quantizzare il prodotto dei vettori. Il suo file di indici è ancora più piccolo di IVF_SQ8, ma comporta una perdita di precisione nella ricerca dei vettori.

I parametri di costruzione dell'indice e di ricerca variano a seconda della distribuzione Milvus. Selezionare prima la distribuzione Milvus.

  • Parametri di costruzione dell'indice

    ParametroDescrizioneIntervallo
    nlistNumero di unità di cluster[1, 65536]
    mNumero di fattori di quantizzazione del prodottodim mod m == 0
    nbits[Numero di bit in cui viene memorizzato ogni vettore a bassa dimensione.[1, 24] (8 per impostazione predefinita)
  • Parametri di ricerca

    • Ricerca comune

      ParametroDescrizioneIntervalloValore predefinito
      nprobeNumero di unità da interrogare[1, nlist]8
    • Ricerca dell'intervallo

      ParametroDescrizioneIntervalloValore predefinito
      max_empty_result_bucketsNumero massimo di bucket che non restituiscono alcun risultato di ricerca.
      È un parametro di ricerca per intervallo e termina il processo di ricerca quando il numero di bucket vuoti consecutivi raggiunge il valore specificato.
      Aumentando questo valore si può migliorare il tasso di richiamo al costo di un aumento del tempo di ricerca.
      [1, 65535]2

SCANN

ScaNN (Scalable Nearest Neighbors) è simile a IVF_PQ in termini di clustering vettoriale e quantizzazione del prodotto. Le differenze risiedono nei dettagli di implementazione della quantizzazione del prodotto e nell'uso di SIMD (Single-Instruction / Multi-data) per un calcolo efficiente.

  • Parametri di costruzione dell'indice

    ParametroDescrizioneIntervallo
    nlistNumero di unità di cluster[1, 65536]
    with_raw_dataSe includere i dati grezzi nell'indiceTrue o False. L'impostazione predefinita è True.

    A differenza di IVF_PQ, i valori predefiniti si applicano a m e nbits per ottimizzare le prestazioni.

  • Parametri di ricerca

    • Ricerca comune

      ParametroDescrizioneIntervalloValore predefinito
      nprobeNumero di unità da interrogare[1, nlist]
      reorder_kNumero di unità candidate da interrogare[top_k, ∞]top_k
    • Ricerca dell'intervallo

      ParametroDescrizioneIntervalloValore predefinito
      max_empty_result_bucketsNumero massimo di bucket che non restituiscono alcun risultato di ricerca.
      È un parametro di ricerca per intervallo e termina il processo di ricerca quando il numero di bucket vuoti consecutivi raggiunge il valore specificato.
      Aumentando questo valore si può migliorare il tasso di richiamo al costo di un aumento del tempo di ricerca.
      [1, 65535]2

HNSW

HNSW (Hierarchical Navigable Small World Graph) è un algoritmo di indicizzazione basato su grafi. Costruisce una struttura di navigazione multistrato per un'immagine in base a determinate regole. In questa struttura, gli strati superiori sono più radi e le distanze tra i nodi sono maggiori; gli strati inferiori sono più densi e le distanze tra i nodi sono maggiori. La ricerca inizia dal livello più alto, trova il nodo più vicino all'obiettivo in questo livello e poi passa al livello successivo per iniziare una nuova ricerca. Dopo diverse iterazioni, può avvicinarsi rapidamente alla posizione del target.

Per migliorare le prestazioni, HNSW limita il grado massimo dei nodi su ciascun livello del grafo a M. Inoltre, è possibile utilizzare efConstruction (quando si costruisce l'indice) o ef (quando si cercano i target) per specificare un intervallo di ricerca.

  • Parametri di costruzione dell'indice

    ParametroDescrizioneIntervalloValore predefinito
    MM definisce il numero massimo di connessioni in uscita nel grafico. Un numero più alto di M porta a una maggiore precisione/tempo di esecuzione a ef/efCostruzione fissa.[2, 2048]Nessuno
    efConstructionef_construction controlla il compromesso tra velocità di ricerca dell'indice e velocità di costruzione. L'aumento del parametro efConstruction può migliorare la qualità dell'indice, ma tende anche ad allungare i tempi di indicizzazione.[1, int_max]Nessuno
  • Parametri di ricerca

    ParametroDescrizioneIntervalloValore predefinito
    efParametro che controlla il compromesso tempo di ricerca/accuratezza. Un valore più alto di ef porta a una ricerca più accurata ma più lenta.[top_k, int_max]Nessuno

HNSW_SQ

La quantizzazione scalare (SQ) è una tecnica utilizzata per discretizzare i dati in virgola mobile in un insieme finito di valori in base alla loro grandezza. Ad esempio, SQ6 rappresenta la quantizzazione in (2^6 = 64) valori discreti, dove ogni numero in virgola mobile è codificato con 6 bit. Analogamente, SQ8 quantizza i dati in (2^8 = 256) valori discreti, con ogni numero in virgola mobile rappresentato da 8 bit. Questa quantizzazione riduce l'ingombro in memoria, preservando la struttura essenziale dei dati per un'elaborazione efficiente.

In combinazione con SQ, HNSW_SQ offre un compromesso controllabile tra dimensione dell'indice e precisione, mantenendo elevate prestazioni di query al secondo (QPS). Rispetto a HNSW standard, il tempo di costruzione dell'indice aumenta in modo modesto.

  • Parametri di costruzione dell'indice

    ParametroDescrizioneIntervalloValore predefinito
    MM definisce il numero massimo di connessioni in uscita nel grafico. Un numero più alto di M porta a una maggiore precisione/tempo di esecuzione a ef/efCostruzione fissa.[2, 2048]Nessuno
    efConstructionef_construction controlla il compromesso tra velocità di ricerca dell'indice e velocità di costruzione. L'aumento del parametro efConstruction può migliorare la qualità dell'indice, ma tende anche ad allungare i tempi di indicizzazione.[1, int_max]Nessuno
    sq_typeTipo di quantizzatore scalare.SQ6,SQ8, BF16, FP16SQ8
    refineSe i dati raffinati sono riservati durante la costruzione dell'indice.true, falsefalse
    refine_typeIl tipo di dati dell'indice di raffinazione.SQ6, SQ8, BF16, FP16, FP32Nessuno
  • Parametri di ricerca

    ParametroDescrizioneIntervalloValore predefinito
    efParametro che controlla il compromesso tempo di ricerca/accuratezza. Un valore più alto di ef porta a una ricerca più accurata ma più lenta.[top_k, int_max]Nessuno
    refine_kIl fattore di ingrandimento di refine rispetto a k.[1, float_max] Nessuno1

HNSW_PQ

L'idea di base di PQ è quella di dividere il vettore in m sottovettori, ognuno dei quali troverà 2^{nbits} centroidi basati su kmeans, e ogni sottovettore selezionerà il centroide più vicino come suo sottovettore approssimato. Quindi si registrano tutti i centroidi, per cui ogni sottovettore può essere codificato come nbits, e un vettore fluttuante di lunghezza dim può essere codificato come m ⋅ nbits bit.

In combinazione con PQ, HNSW_PQ offre un compromesso controllabile tra dimensione dell'indice e accuratezza, ma presenta un valore QPS inferiore e un tasso di richiamo superiore a HNSW_SQ a parità di tasso di compressione. Rispetto a HNSW_SQ, la costruzione dell'indice richiede più tempo.

  • Parametri di costruzione dell'indice

    ParametroDescrizioneIntervalloValore predefinito
    MM definisce il numero massimo di connessioni in uscita nel grafico. Un numero più alto di M porta a una maggiore precisione/tempo di esecuzione a ef/efCostruzione fissa.[2, 2048]Nessuno
    efConstructionef_construction controlla il compromesso tra velocità di ricerca dell'indice e velocità di costruzione. L'aumento del parametro efConstruction può migliorare la qualità dell'indice, ma tende anche ad allungare i tempi di indicizzazione.[1, int_max]Nessuno
    mIl numero di gruppi di sottovettori in cui dividere il vettore.[1, 65536]32
    nbitsIl numero di bit in cui viene quantizzato ogni gruppo di sottovettori.[1, 24]8
    refineSe i dati raffinati sono riservati durante la costruzione dell'indice.true, falsefalse
    refine_typeIl tipo di dati dell'indice raffinato.SQ6, SQ8, BF16, FP16, FP32Nessuno
  • Parametri di ricerca

    ParametroDescrizioneIntervalloValore predefinito
    efParametro che controlla il compromesso tempo di ricerca/accuratezza. Un valore più alto di ef porta a una ricerca più accurata ma più lenta.[top_k, int_max]Nessuno
    refine_kFattore di ingrandimento di refine rispetto a k.[1, float_max] Nessuno1

HNSW_PRQ

PRQ è simile a PQ e divide il vettore in m gruppi. Ogni sottovettore sarà codificato come nbits. Dopo aver completato una quantizzazione pq, calcola il residuo tra il vettore e il vettore quantizzato pq e applica la quantizzazione pq al vettore residuo. Verranno eseguite in totale nrq quantizzazioni pq complete, quindi un vettore fluttuante di lunghezza dim sarà codificato come m ⋅ nbits ⋅ nrq bit.

In combinazione con un quantizzatore di prodotto residuo (PRQ), HNSW_PRQ offre un compromesso ancora più controllabile tra dimensione dell'indice e precisione. Ha un valore QPS quasi equivalente e un tasso di richiamo superiore a HNSW_PQ a parità di tasso di compressione. Rispetto a HNSW_PQ, il tempo di costruzione dell'indice può aumentare di diverse volte.

  • Parametri di costruzione dell'indice

    ParametroDescrizioneIntervalloValore predefinito
    MM definisce il numero massimo di connessioni in uscita nel grafico. Un numero più alto di M porta a una maggiore precisione/tempo di esecuzione a ef/efCostruzione fissa.[2, 2048]Nessuno
    efConstructionef_construction controlla il compromesso tra velocità di ricerca dell'indice e velocità di costruzione. L'aumento del parametro efConstruction può migliorare la qualità dell'indice, ma tende anche ad allungare i tempi di indicizzazione.[1, int_max]Nessuno
    mIl numero di gruppi di sottovettori in cui dividere il vettore.[1, 65536]32
    nbitsIl numero di bit in cui viene quantizzato ogni gruppo di sottovettori.[1, 24]8
    nrqIl numero di subquantizzatori residui.[1, 16]2
    refineSe i dati raffinati sono riservati durante la costruzione dell'indice.true, falsefalse
    refine_typeIl tipo di dati dell'indice di raffinazione.SQ6, SQ8, BF16, FP16, FP32Nessuno
  • Parametri di ricerca

    ParametroDescrizioneIntervalloValore predefinito
    efParametro che controlla il compromesso tempo di ricerca/accuratezza. Un valore più alto di ef porta a una ricerca più accurata ma più lenta.[top_k, int_max]Nessuno
    refine_kIl fattore di ingrandimento di refine rispetto a k.[1, float_max] Nessuno1

BIN_FLAT

Questo indice è esattamente uguale a FLAT, ma può essere usato solo per le incorporazioni binarie.

Per le applicazioni di ricerca di similarità vettoriale che richiedono una precisione perfetta e dipendono da insiemi di dati relativamente piccoli (su scala di milioni), l'indice BIN_FLAT è una buona scelta. BIN_FLAT non comprime i vettori ed è l'unico indice in grado di garantire risultati di ricerca esatti. I risultati di BIN_FLAT possono anche essere utilizzati come punto di confronto per i risultati prodotti da altri indici che hanno un richiamo inferiore al 100%.

BIN_FLAT è preciso perché adotta un approccio esaustivo alla ricerca, il che significa che per ogni query l'input di destinazione viene confrontato con i vettori di un set di dati. Questo rende BIN_FLAT l'indice più lento del nostro elenco e poco adatto a interrogare dati vettoriali massicci. Non ci sono parametri per l'indice BIN_FLAT in Milvus e il suo utilizzo non richiede una formazione dei dati o una memorizzazione aggiuntiva.

  • Parametri di ricerca

    ParametroDescrizioneIntervallo
    metric_type[La metrica di distanza scelta.Vedere Metriche supportate.

BIN_IVF_FLAT

Questo indice è esattamente uguale a IVF_FLAT, ma può essere usato solo per le incorporazioni binarie.

BIN_IVF_FLAT divide i dati vettoriali in unità di cluster nlist e poi confronta le distanze tra il vettore di input target e il centro di ciascun cluster. A seconda del numero di cluster che il sistema è impostato per interrogare (nprobe), i risultati della ricerca di similarità vengono restituiti in base al confronto tra l'input di destinazione e i vettori nei cluster più simili, riducendo drasticamente il tempo di interrogazione.

Regolando nprobe, è possibile trovare un equilibrio ideale tra precisione e velocità per un determinato scenario. Il tempo di interrogazione aumenta bruscamente all'aumentare del numero di vettori di input target (nq) e del numero di cluster da ricercare (nprobe).

BIN_IVF_FLAT è l'indice BIN_IVF più elementare e i dati codificati memorizzati in ogni unità sono coerenti con i dati originali.

  • Parametri di costruzione dell'indice

    ParametroDescrizioneIntervallo
    nlistNumero di unità di cluster[1, 65536]
  • Parametri di ricerca

    • Ricerca comune

      ParametroDescrizioneIntervalloValore predefinito
      nprobeNumero di unità da interrogare[1, nlist]8
    • Ricerca dell'intervallo

      ParametroDescrizioneIntervalloValore predefinito
      max_empty_result_bucketsNumero massimo di bucket che non restituiscono alcun risultato di ricerca.
      È un parametro di ricerca per intervallo e termina il processo di ricerca quando il numero di bucket vuoti consecutivi raggiunge il valore specificato.
      Aumentando questo valore si può migliorare il tasso di richiamo al costo di un aumento del tempo di ricerca.
      [1, 65535]2

INDICE SPARSE_INVERTITO

Ogni dimensione mantiene un elenco di vettori che hanno un valore non nullo in quella dimensione. Durante la ricerca, Milvus itera attraverso ogni dimensione del vettore di interrogazione e calcola i punteggi per i vettori che hanno valori non nulli in quelle dimensioni.

  • Parametri di costruzione dell'indice

    ParametroDescrizioneGamma
    inverted_index_algoL'algoritmo usato per costruire e interrogare l'indice. Per i dettagli, fare riferimento a Vettore sparso.DAAT_MAXSCORE (predefinito), DAAT_WAND, TAAT_NAIVE
    bm25_k1Controlla la saturazione della frequenza dei termini. Valori più alti aumentano l'importanza delle frequenze dei termini nella classificazione dei documenti.[1.2, 2.0]
    bm25_bControlla il grado di normalizzazione della lunghezza dei documenti. Il valore predefinito è 0,75.[0, 1]

    Il parametro drop_ratio_build è deprecato da Milvus v2.5.4; può ancora essere accettato durante la costruzione dell'indice, ma non avrà più alcun effetto effettivo sull'indice.

  • Parametri di ricerca

    ParametroDescrizioneIntervallo
    drop_ratio_searchPercentuale di valori vettoriali piccoli che vengono esclusi durante il processo di ricerca. Questa opzione consente di regolare con precisione il processo di ricerca, specificando la proporzione dei valori più piccoli del vettore di query da ignorare. Aiuta a bilanciare la precisione della ricerca e le prestazioni. Più piccolo è il valore impostato per drop_ratio_search, meno questi valori piccoli contribuiscono al punteggio finale. Ignorando alcuni valori piccoli, è possibile migliorare le prestazioni della ricerca con un impatto minimo sulla precisione.[0, 1]

FAQ

Qual è la differenza tra indice FLAT e indice IVF_FLAT?

L'indice IVF_FLAT divide uno spazio vettoriale in nlist cluster. Se si mantiene il valore predefinito di nlist come 16384, Milvus confronta le distanze tra il vettore di destinazione e i centri di tutti i 16384 cluster per ottenere i cluster nprobe più vicini. Quindi Milvus confronta le distanze tra il vettore target e i vettori nei cluster selezionati per ottenere i vettori più vicini. A differenza di IVF_FLAT, FLAT confronta direttamente le distanze tra il vettore target e ogni singolo vettore.

Pertanto, quando il numero totale di vettori è all'incirca pari a nlist, IVF_FLAT e FLAT presentano poche differenze nel modo di calcolo richiesto e nelle prestazioni di ricerca. Ma quando il numero di vettori cresce fino a due volte, tre volte o n volte nlist, l'indice IVF_FLAT inizia a mostrare vantaggi sempre maggiori.

Per ulteriori informazioni, vedere Come scegliere un indice in Milvus.

Cosa c'è dopo