El índice de vecinos más cercanos escalables (ScaNN) en AlloyDB para PostgreSQL acelera las consultas de similitud de vectores y reduce el uso de memoria a través de la indexación de cuantización de árbol. En las técnicas de cuantización de árbol, los índices aprenden un árbol de búsqueda junto con una función de cuantización (o hash). Cuando ejecutas una consulta, el árbol de búsqueda reduce el espacio de búsqueda, mientras que la cuantización comprime el tamaño del índice, lo que acelera la puntuación de similitud entre el vector de consulta y los vectores de tu base de datos.
Para lograr una alta tasa de consultas por segundo (QPS) y una alta recuperación con tus consultas de vecinos más cercanos, debes particionar el árbol de tu índice ScaNN de la manera más adecuada para tus datos y tus consultas.
Una característica común de la generación actual de modelos de embeddings de alta dimensión es que aún pueden retener gran parte de la información en una dimensión mucho menor. Por ejemplo, se puede retener el 90% de la información con solo el 20% de las dimensiones del embedding. Para ayudar a acelerar esos conjuntos de datos, AlloyDB ScaNN realizará automáticamente la reducción de dimensión con el análisis de componentes principales (consulta scann.enable_pca más abajo) en los vectores indexados, lo que reduce aún más el uso de CPU y memoria para la búsqueda de vectores. Debido a que la reducción de dimensión aún causa una pérdida de recuperación menor en el índice, AlloyDB ScaNN compensa esto a través de un paso de clasificación inicial con una mayor cantidad de candidatos de vectores PCA del índice y, luego, los vuelve a clasificar según los vectores originales (consulta scann.pre_reordering_num_neighbors).