En esta página se ofrece una descripción general conceptual sobre cómo mejorar el rendimiento de las consultas vectoriales con el índice ScaNN.
El índice ScaNN usa la indexación basada en la cuantización de árboles. En las técnicas de cuantización de árboles, los índices aprenden un árbol de búsqueda junto con una función de cuantización (o de hashing). Cuando ejecutas una consulta, el árbol de búsqueda se usa para acotar el espacio de búsqueda, mientras que la cuantización se usa para comprimir el tamaño del índice. Esta poda acelera la puntuación de la similitud (es decir, la distancia) entre el vector de consulta y los vectores de la base de datos.
Para conseguir una tasa de consultas por segundo (CPS) alta y una alta recuperación con tus consultas de vecinos más cercanos, debes particionar el árbol de tu índice ScaNN
de la forma más adecuada para tus datos y tus consultas.
Una característica común de la generación actual de modelos de inserciones de alta dimensión es que pueden conservar gran parte de la información con una dimensionalidad mucho menor. Por ejemplo, se puede conservar el 90% de la información con solo el 20% de las dimensiones de la inserción. Para ayudar a acelerar estos conjuntos de datos, AlloyDB ScaNN realizará automáticamente una reducción de dimensiones mediante 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. Como la reducción de dimensiones sigue provocando una pequeña pérdida de recuperación en el índice, ScaNN de AlloyDB lo compensa mediante un paso de clasificación inicial con un mayor número de candidatos de vectores de PCA del índice y, a continuación, vuelve a clasificarlos por los vectores originales (consulta scann.pre_reordering_num_neighbors
).