Referencia del índice de ScaNN

Selecciona una versión de la documentación:

En esta página, se proporciona material de referencia para el índice de ScaNN.

Parámetros de ajuste

Los siguientes parámetros de índice y marcas de base de datos se usan juntos para encontrar el equilibrio adecuado de recuperación y QPS.

Parámetro de ajuste Descripción Tipo de opción
max_num_levels Es la cantidad máxima de niveles de centroides del árbol de agrupamiento en clústeres de K-means.
  • Índice de árbol de dos niveles: Se establece en 1 de forma predeterminada para un árbol de dos niveles (1 nivel de centroide + nivel de hoja inferior).
  • Índice de árbol de tres niveles: Se establece en 2 de forma predeterminada para un árbol de tres niveles (2 niveles de centroide + nivel de hoja inferior).
  • Establece el valor en 2 si la cantidad de filas de vectores supera los 100 millones de filas.
  • Establece el valor en 1 si la cantidad de filas de vectores es inferior a 10 millones de filas.
  • Establécelo en 1 o 2 si la cantidad de filas de vectores se encuentra entre 10 millones y 100 millones de filas para optimizar el tiempo de compilación del índice (establecer en 2) o la recuperación de búsqueda (establecer en 1).
Creación de índices
(opcional)
num_leaves Es la cantidad de particiones que se aplicarán a este índice. La cantidad de particiones que aplicas cuando creas un índice afecta el rendimiento del índice. Si aumentas las particiones para una cantidad determinada de vectores, creas un índice más detallado, lo que mejora la recuperación y el rendimiento de las consultas. Sin embargo, esto tiene el costo de tiempos de creación de índices más largos.

Como los árboles de tres niveles se compilan más rápido que los de dos niveles, puedes aumentar el num_leaves_value cuando creas un índice de árbol de tres niveles para lograr un mejor rendimiento.
  • Índice de dos niveles: Establece este valor en cualquier valor entre 1 y 1048576.

    Para un índice que equilibre la compilación rápida de índices y el buen rendimiento de búsqueda, usa sqrt(ROWS) como punto de partida, donde ROWS es la cantidad de filas de vectores. La cantidad de vectores que contiene cada partición se calcula de la siguiente manera:
    ROWS/sqrt(ROWS) = sqrt(ROWS).

    Como se puede crear un índice de árbol de dos niveles en un conjunto de datos con menos de 10 millones de filas de vectores, cada partición contendrá menos de (sqrt(10M)) vectores, que son 3200 vectores. Para obtener una calidad óptima de búsqueda de vectores, se recomienda minimizar la cantidad de vectores en cada partición. El tamaño de partición recomendado es de aproximadamente 100 vectores por partición, por lo que debes establecer num_leaves en ROWS/100. Si tienes 10 millones de vectores, establecerías num_leaves en 100,000.
  • Índice de tres niveles: Establece este valor en cualquier valor entre 1 y 1048576.

    Si no estás seguro de seleccionar el valor exacto, usa power(ROWS, 2/3) como punto de partida, donde ROWS es la cantidad de filas de vectores. La cantidad de vectores que contiene cada partición se calcula de la siguiente manera:
    ROWS/power(ROWS, 2/3) = power(ROWS, 1/3).

    Como se puede crear un índice de árbol de tres niveles en un conjunto de datos con más de 100 millones de filas de vectores, cada partición contendrá más de
    (power(100M, 1/3)) vectores, que son 465 vectores. Para obtener una calidad óptima de búsqueda de vectores, se recomienda minimizar la cantidad de vectores en cada partición. El tamaño de partición recomendado es de aproximadamente 100 vectores por partición, por lo que debes establecer num_leaves en ROWS/100. Si tienes 100 millones de vectores, establecerías num_leaves en 1 millón.
Creación de índices
(obligatorio)
quantizer Es el tipo de cuantizador que deseas usar para el árbol de K-means. El valor predeterminado se establece en SQ8 lo que proporciona un mejor rendimiento de las consultas con una pérdida mínima de recuperación (por lo general, menos del 1 o 2%).

Establécelo en FLAT si se requiere una recuperación del 99% o más.
Creación de índices
(opcional)
scann.enable_pca Habilita el análisis de componentes principales (PCA), que es una técnica de reducción de dimensiones que se usa para reducir automáticamente el tamaño del embedding cuando es posible. Esta opción está habilitada de forma predeterminada.

Establécela en false si observas un deterioro en la recuperación.
Creación de índices
(opcional)
scann.pct_leaves_to_search (Preview) Esta marca de base de datos te permite [administrar automáticamente la cantidad de hojas o particiones para buscar](/alloydb/omni/containers/15.7.1/docs/ai/maintain-vector-indexes#manage-leave-to-search-split-partitions). Establece este valor en la cantidad actual de particiones. Por ejemplo, para buscar el 1% de la cantidad actual de particiones, establece este valor en 1.

Puedes establecer este parámetro en cualquier valor entre 0 y 100. El valor predeterminado es 0, lo que inhabilita este parámetro y usa `scann.num_leaves_to_search` para calcular la cantidad de hojas que se deben buscar. El parámetro está inhabilitado de forma predeterminada.
Tiempo de ejecución de la consulta
(opcional)
scann.num_leaves_to_search Esta marca de base de datos controla la cantidad absoluta de hojas o particiones que se deben buscar, lo que te permite compensar la recuperación y la QPS. El valor predeterminado es el 1% del valor establecido en num_leaves.

Un valor más alto dará como resultado una mejor recuperación, pero una QPS más baja. Del mismo modo, un valor más bajo dará como resultado una recuperación más baja, pero una QPS más alta.
Tiempo de ejecución de la consulta
(opcional)
scann.pre_reordering_num_neighbors Cuando se establece, la marca de base de datos especifica la cantidad de vecinos candidatos que se deben tener en cuenta durante las etapas de reordenamiento después de que la búsqueda inicial identifica un conjunto de candidatos. Establece este parámetro en un valor superior a la cantidad de vecinos que deseas que muestre la consulta.

Un valor más alto da como resultado una mejor recuperación, pero una QPS más baja. Establece este valor en 0 para inhabilitar el reordenamiento. El valor predeterminado es 0 si PCA no está habilitado durante la creación del índice. De lo contrario, el valor predeterminado es 50 x K, donde K es el límite especificado en la consulta.
Tiempo de ejecución de la consulta
(opcional)
scann.num_search_threads Es la cantidad de subprocesos de búsqueda para la búsqueda de varios subprocesos. Esto puede ayudar a reducir la latencia de una sola consulta mediante el uso de más de un subproceso para la búsqueda de ScaNN ANN en aplicaciones sensibles a la latencia. Esta configuración no mejora la latencia de una sola consulta si la base de datos ya está vinculada a la CPU. El valor predeterminado es 2. Tiempo de ejecución de la consulta
(opcional)

¿Qué sigue?