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 para mejorar el rendimiento de las consultas vectoriales con el índice de vecinos más cercanos escalables (ScaNN) de AlloyDB AI. Para obtener más información, consulta Crea índices y consulta vectores.

El índice de ScaNN usa la indexación basada en la cuantización de árboles, en la que 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 se usa para reducir el espacio de búsqueda, mientras que la cuantización se usa para comprimir el tamaño del índice. Esta reducción acelera la puntuación de la similitud, en otras palabras, 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 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 embeddings de alta dimensión pueden retener gran parte de la información en una dimensión mucho menor. Por ejemplo, puedes retener el 90% de la información con solo el 20% de las dimensiones del embedding. Para ayudar a acelerar esos conjuntos de datos, el índice de ScaNN de AlloyDB AI realiza automáticamente la reducción de dimensiones con 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.

Debido a 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 PCA del índice. Luego, ScaNN vuelve a clasificar los candidatos de vectores PCA por los vectores originales. Para obtener más información, consulta scann.pre_reordering_num_neighbors.

¿Qué sigue?