Descripción general del rendimiento de las consultas de vectores de ScaNN

Selecciona una versión de la documentación:

En esta página, se proporciona una descripción general conceptual sobre cómo mejorar el rendimiento de las búsquedas de vectores con el índice de vecino más cercano escalable (ScaNN) de AlloyDB AI. Para obtener más información, consulta Crea índices y vectores de consulta.

El índice de ScaNN usa la indexación basada en la cuantificación de árboles, en la que los índices aprenden un árbol de búsqueda junto con una función de cuantificación (o hash). Cuando ejecutas una búsqueda, el árbol de búsqueda se usa para reducir 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 (en otras palabras, la distancia) entre el vector de búsqueda 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 vecinos más cercanos, debes particionar el árbol de tu índice de ScaNN de la manera más adecuada para tus datos y tus consultas.

Los modelos de incorporación de alta dimensión pueden retener gran parte de la información con una dimensionalidad mucho menor. Por ejemplo, puedes conservar el 90% de la información con solo el 20% de las dimensiones de la incorporación. Para ayudar a acelerar este tipo de conjuntos de datos, el índice ScaNN de AlloyDB AI realiza automáticamente la reducción de dimensiones con el análisis de componentes principales (PCA) en los vectores indexados, lo que reduce aún más el uso de CPU y memoria para la búsqueda de vectores. Para obtener más información, consulta scann.enable_pca.

Dado que la reducción de dimensiones causa una pérdida menor de recuperación en el índice, el índice de ScaNN de AlloyDB AI compensa la pérdida de recuperación realizando primero un paso de clasificación con una mayor cantidad de candidatos de vectores con PCA del índice. Luego, ScaNN vuelve a clasificar los candidatos de vectores con PCA según los vectores originales. Para obtener más información, consulta scann.pre_reordering_num_neighbors.

¿Qué sigue?