O índice Scalable Nearest Neighbors (ScaNN) no AlloyDB para PostgreSQL acelera as consultas de similaridade vetorial e reduz o uso de memória com a indexação de quantização em árvore. Nas técnicas de quantização de árvore, os índices aprendem uma árvore de pesquisa junto com uma função de quantização (ou hash). Quando você executa uma consulta, a árvore de pesquisa reduz o espaço de pesquisa, enquanto a quantização compacta o tamanho do índice, acelerando a pontuação de similaridade entre o vetor de consulta e os vetores do banco de dados.
Para alcançar uma alta taxa de consultas por segundo (QPS)
e um alto recall com as consultas de vizinho mais próximo, é necessário particionar
a árvore do índice ScaNN de uma maneira que seja mais adequada aos dados
e às consultas.
Uma característica comum da geração atual de modelos de embedding de alta dimensão é que eles ainda podem reter grande parte das informações em uma dimensionalidade muito menor. Por exemplo, 90% das informações podem ser retidas com apenas 20% das dimensões do embedding. Para acelerar esses conjuntos de dados, o ScaNN do AlloyDB IA realiza automaticamente a redução de dimensões usando a análise de componentes principais (scann.enable_pca na referência do índice ScaNN) nos vetores indexados, o que reduz ainda mais o uso da CPU e o uso da memória para a busca vetorial. Como a redução de dimensão ainda causa uma pequena perda de recall no índice, o ScaNN da IA do AlloyDB compensa isso com uma etapa de classificação inicial com um número maior de candidatos a vetores reduzidos por PCA do índice e, em seguida, reclassifica-os pelos vetores originais (scann.pre_reordering_num_neighbors na referência do índice ScaNN).