Los siguientes parámetros de indexación y marcas de bases de datos se usan en conjunto para encontrar el equilibrio adecuado entre la recuperación y las 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 centroides + nivel de hoja inferior).
Establece el valor en 2 si la cantidad de filas de vectores supera los 100 millones.
Establece el valor en 1 si la cantidad de filas de vectores es inferior a 10 millones.
Se establece en 1 o 2 si la cantidad de filas de vectores se encuentra entre 10 millones y 100 millones para optimizar el tiempo de compilación del índice (establecer en 2) o la recuperación de la 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, crearás un índice más detallado, lo que mejorará la recuperación y el rendimiento de las búsquedas. Sin embargo, esto tiene el costo de tiempos de creación de índices más largos.
Dado que los árboles de tres niveles se compilan más rápido que los de dos niveles, puedes aumentar el valor de num_leaves_value cuando crees 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 del índice y el buen rendimiento de la 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 con la fórmula ROWS/sqrt(ROWS) = sqrt(ROWS).
Dado que 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, es decir, 3200 vectores. Para obtener una calidad óptima en la 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, debes establecer num_leaves en 100,000.
Índice de tres niveles: Establece este valor en cualquier valor entre 1 y 1048576.
Si no sabes qué valor exacto seleccionar, 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 con ROWS/power(ROWS, 2/3) = power(ROWS, 1/3).
Dado que 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, es decir, 465 vectores. Para obtener una calidad óptima en la 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, debes establecer num_leaves en 1 millón.
Creación de índice (obligatorio)
quantizer
Es el tipo de cuantificador que deseas usar para el árbol de K-means. El valor predeterminado se establece en SQ8, lo que proporciona un mejor rendimiento de las búsquedas con una pérdida mínima de recuperación (por lo general, menos del 1 o el 2%).
Establécelo en FLAT si se requiere una recuperación del 99% o más.
Creación de índices (opcional)
scann.enable_inline_filtering
Habilita la compatibilidad con el filtrado intercalado que consulta tus datos y aplica filtros directamente dentro de una operación de búsqueda de similitud de vectores. Estas consultas de similitud de vectores usan filtros en las mismas tablas de la base de datos y completan la evaluación de filtros mientras calculan la distancia para la identificación de vecinos más cercanos. Esta opción está inhabilitada de forma predeterminada.
Para habilitar el filtrado intercalado, establece este parámetro en true. Si observas un deterioro en el rendimiento, configura el valor en false.
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 de la incorporación cuando es posible. Esta opción está habilitada de forma predeterminada.
Configúrala como false si observas un deterioro en la recuperación.
Creación de índices (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 equilibrar la recuperación y las QPS. El valor predeterminado es el 1% del valor establecido en num_leaves.
Un valor más alto generará una mejor recuperación, pero una menor cantidad de QPS. Del mismo modo, un valor más bajo generará una recuperación más baja, pero un QPS más alto.
Tiempo de ejecución de la consulta (opcional)
scann.pre_reordering_num_neighbors
Cuando se configura, la marca de la 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 devuelva la búsqueda.
Un valor más alto genera una mejor recuperación, pero una menor cantidad de QPS. Establece este valor en 0 para inhabilitar la reordenación. El valor predeterminado es 0 si no se habilita el PCA 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 múltiples subprocesos. Esto puede ayudar a reducir la latencia de una sola búsqueda usando más de un subproceso para la búsqueda de ANN de ScaNN en aplicaciones sensibles a la latencia. Este parámetro de 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.
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Información o código de muestra incorrectos","incorrectInformationOrSampleCode","thumb-down"],["Faltan la información o los ejemplos que necesito","missingTheInformationSamplesINeed","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-09-04 (UTC)"],[],[],null,["# ScaNN Index reference\n\nSelect a documentation version: 15.12.0keyboard_arrow_down\n\n- [Current (16.8.0)](/alloydb/omni/current/docs/reference/scann-index-reference)\n- [16.8.0](/alloydb/omni/16.8.0/docs/reference/scann-index-reference)\n- [16.3.0](/alloydb/omni/16.3.0/docs/reference/scann-index-reference)\n- [15.12.0](/alloydb/omni/15.12.0/docs/reference/scann-index-reference)\n- [15.7.1](/alloydb/omni/15.7.1/docs/reference/scann-index-reference)\n- [15.7.0](/alloydb/omni/15.7.0/docs/reference/scann-index-reference)\n\n\u003cbr /\u003e\n\nThis page provides reference material for the ScaNN index.\n\n\u003cbr /\u003e\n\nTuning parameters\n-----------------\n\nThe following index parameters and database flags are used together to find the right balance of recall and QPS.\n\nOption type Index creation Query runtime \n\nWhat's next\n-----------\n\n- [Get started with vector embeddings using AlloyDB AI](https://codelabs.developers.google.com/alloydb-ai-embedding#0)."]]