Panoramica del rendimento delle query vettoriali di ScaNN

Questa pagina fornisce una panoramica concettuale del miglioramento delle prestazioni delle query sui vettori 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 potare lo spazio di ricerca, mentre la quantizzazione viene utilizzata per comprimere le dimensioni dell'indice. Questa potatura accelera il calcolo del punteggio della somiglianza (ovvero della distanza) tra il vettore della query e i vettori del database.

Per ottenere sia un numero elevato di query al secondo (QPS) che un'elevata percentuale di recall con le query del vicino più vicino, devi suddividere la struttura ad 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 dimensione è che possono comunque conservare gran parte delle informazioni a una dimensione 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 eseguirà automaticamente la riduzione delle dimensioni utilizzando l'analisi dei componenti principali (vedi scann.enable_pca di seguito) sui vettori indicizzati, il che riduce ulteriormente l'utilizzo di CPU e memoria per la ricerca di vettori. Poiché la riduzione delle dimensioni causa ancora una lieve perdita di richiamo nell'indice, AlloyDB ScaNN compensa tramite un passaggio di ranking iniziale con un numero maggiore di candidati vettori PCA dall'indice, quindi li rielegge in base ai vettori originali (vedi scann.pre_reordering_num_neighbors).

Passaggi successivi