L'indice ScaNN (Scalable Nearest Neighbors) in AlloyDB per PostgreSQL accelera le query di somiglianza vettoriale riducendo al contempo la memoria utilizzata tramite l'indicizzazione della 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 riduce lo spazio di ricerca, mentre la quantizzazione comprime le dimensioni dell'indice, velocizzando il punteggio di somiglianza tra il vettore della query e i vettori del database.
Per ottenere un numero elevato di query al secondo (QPS) 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 con 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 AI ScaNN esegue automaticamente la riduzione delle dimensioni utilizzando l'analisi delle componenti principali (scann.enable_pca nel riferimento dell'indice ScaNN) sui vettori indicizzati, riducendo ulteriormente l'utilizzo della CPU e della memoria per la ricerca vettoriale. Poiché la riduzione della dimensione causa comunque una perdita di recall minore nell'indice, ScaNN di AlloyDB AI compensa con un passaggio di ranking iniziale con un numero maggiore di candidati vettoriali ridotti con PCA dall'indice e poi li classifica nuovamente in base ai vettori originali (scann.pre_reordering_num_neighbors nel riferimento dell'indice ScaNN).