Panoramica del rendimento delle query vettoriali di ScaNN

Seleziona una versione della documentazione:

Questa pagina fornisce una panoramica concettuale del miglioramento delle prestazioni delle query vettoriali con l'indice ScaNN.

L'indice ScaNN utilizza l'indicizzazione basata sulla quantizzazione ad albero. Nelle tecniche di quantizzazione ad albero, gli indici apprendono un albero di ricerca insieme a una funzione di quantizzazione (o hashing). Quando esegui una query, l'albero di ricerca viene utilizzato per ridurre lo spazio di ricerca, mentre la quantizzazione viene utilizzata per comprimere le dimensioni dell'indice. Questa potatura velocizza il calcolo della somiglianza (ovvero della distanza) tra il vettore della query e i vettori del database.

Per ottenere una frequenza di query al secondo (QPS) elevata e un richiamo elevato con le query dei vicini più prossimi, devi partizionare l'albero dell'indice ScaNN nel modo più appropriato per i tuoi dati e le tue query.

Una caratteristica comune dell'attuale generazione di modelli di embedding ad alta dimensionalità è che possono comunque conservare gran parte delle informazioni a una dimensionalità molto inferiore, ad esempio il 90% delle informazioni può essere conservato con solo il 20% delle dimensioni dell'embedding. Per velocizzare questi set di dati, AlloyDB ScaNN esegue automaticamente la riduzione delle dimensioni utilizzando l'analisi delle componenti principali (vedi scann.enable_pca below) sui vettori indicizzati, il che riduce ulteriormente l'utilizzo di CPU e memoria per la ricerca vettoriale. Poiché la riduzione delle dimensioni causa comunque una perdita minore di richiamo nell'indice, AlloyDB ScaNN compensa tramite un passaggio di ranking iniziale con un numero maggiore di candidati vettoriali PCA dall'indice, per poi riordinarli in base ai vettori originali (vedi scann.pre_reordering_num_neighbors).

Passaggi successivi