En esta página, se proporciona una descripción general conceptual para mejorar el rendimiento de las consultas vectoriales con el índice ScaNN.
El índice de ScaNN usa la indexación basada en la cuantificación de árboles. En las técnicas de cuantificación de árboles, los índices aprenden un árbol de búsqueda junto con una función de cuantificación (o hash). Cuando ejecutas una consulta, el árbol de búsqueda se usa para reducir el espacio de búsqueda, mientras que la cuantificació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 lograr una alta tasa de consultas por segundo (QPS) y una alta recuperación con tus consultas de vecino más cercano, 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 incorporación de alta dimensión es que aún pueden retener gran parte de la información con una dimensionalidad mucho más baja, por ejemplo, el 90% de la información se puede retener con solo el 20% de las dimensiones de la incorporación. Para acelerar estos conjuntos de datos, AlloyDB ScaNN realizará automáticamente la reducción de dimensiones mediante el análisis de componentes principales (consulta scann.enable_pca
a continuación) en los vectores indexados, lo que reduce aún más el uso de la CPU y la memoria para la búsqueda de vectores. Debido a que la reducción de dimensiones aún causa una pérdida menor de recuperación en el índice, AlloyDB ScaNN compensa 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
).