O índice ScaNN (Scalable Nearest Neighbors) no AlloyDB para PostgreSQL acelera as consultas de similaridade de vetores, reduzindo o uso da memória por meio da indexação de quantização de árvores. Nas técnicas de quantização de árvores, 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 poda 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 uma alta capacidade de recall com as consultas de vizinho mais próximo, é necessário particionar a árvore do índice ScaNN de uma maneira mais adequada aos dados e às consultas.
Uma característica comum da geração atual de modelos de incorporação 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 da incorporação. Para ajudar a acelerar esses conjuntos de dados, o ScaNN do AlloyDB realiza automaticamente a redução de dimensão usando a análise de componentes principais (consulte scann.enable_pca abaixo) nos vetores indexados, o que reduz ainda mais o uso da memória e de CPU para a busca vetorial. Como a redução de dimensão ainda causa uma pequena perda de recall no índice, o ScaNN do AlloyDB compensa isso com uma etapa de classificação inicial com um número maior de candidatos de vetor PCA do índice e, em seguida, os reclassifica pelos vetores originais (consulte scann.pre_reordering_num_neighbors).