Para obtener un instructivo paso a paso sobre cómo implementar la búsqueda de vectores de principio a fin, consulta la guía para realizar una búsqueda de vectores.
Parámetros de ajuste
Los siguientes parámetros de índice y consulta se usan para encontrar el equilibrio adecuado entre la recuperación y las consultas por segundo (QPS).
| Parámetro de ajuste | Descripción | Tipo de opción |
|---|---|---|
mode |
Define el índice de ScaNN como un índice ajustado de forma automática o
manual. Las opciones disponibles son las siguientes:
Para obtener más información, consulta Crea un índice de ScaNN. |
Creación de índices (opcional) |
max_num_levels |
Es la cantidad máxima de niveles de centroides del árbol de agrupamiento en clústeres de k-means. Para
obtener orientación sobre cómo establecer este valor, consulta
Ajusta un índice de ScaNN.
Los valores disponibles son los siguientes:
Si configuras |
Creación de índices (opcional) |
num_leaves |
Es la cantidad de particiones que se aplicarán a este índice. Para PostgreSQL 17 y versiones posteriores, el valor máximo es 104857600. Para PostgreSQL 16
y versiones anteriores, el valor máximo es 30000000. Para obtener más
información sobre cómo elegir este valor, consulta
Ajusta un índice de ScaNN
y
Prácticas recomendadas para ajustar índices de ScaNN.
|
Creación de índices (obligatorio para los índices ajustados de forma manual) |
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 consultas con una pérdida mínima de recuperación (por lo general, menos del 1% al 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 disminuir automáticamente
el tamaño de la incorporación cuando sea 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) |
auto_maintenance |
Mantener automáticamente un índice de ScaNN para que, a medida que crezca tu conjunto de datos, AlloyDB Omni analice y actualice los centroides, y divida las particiones grandes con valores atípicos Esto mejora automáticamente las QPS y los resultados de la búsqueda. Para obtener más información, consulta Mantén índices automáticamente. |
Creación de índices (opcional) |
scann.pct_leaves_to_search |
Administra automáticamente la cantidad de particiones que busca un índice de vectores. Para obtener más información, consulta Porcentaje de búsqueda de particiones. | |
scann.num_leaves_to_search
|
Es la cantidad absoluta de particiones que se deben buscar. Esto te permite elegir entre
la recuperación de consultas y las QPS. El valor predeterminado es el 1% de
Los valores más altos generan una mejor recuperación de consultas, pero un QPS más bajo. Del mismo modo, los valores más bajos dan como resultado una peor recuperación de consultas, pero mejores QPS. |
Tiempo de ejecución de la consulta (opcional) |
scann.pre_reordering_num_neighbors
|
Especifica la cantidad de vecinos candidatos que se deben considerar durante las etapas de reordenamiento una vez 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 consulta. Los valores más altos generan una mejor recuperación, pero menos QPS.
El valor predeterminado es |
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 usando más de un subproceso para la búsqueda de ScaNN ANN 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. |
Tiempo de ejecución de la consulta (opcional) |
|
Cuando se establece en relaxed_order, la marca de base de datos aborda la recuperación insuficiente. La recuperación insuficiente puede ocurrir cuando la recuperación observada de una consulta es inferior a la recuperación objetivo, lo que es más probable cuando se usan filtros. Este parámetro de configuración ayuda a lograr la recuperación objetivo, ya que permite que el análisis de vectores siga buscando más allá del límite de num_leaves_to_search hasta que se encuentre una cantidad suficiente de resultados. |
Tiempo de ejecución de la consulta (opcional) |
|
Esta marca de base de datos establece un límite superior para el porcentaje de hojas totales que se pueden visitar para las consultas que ejecutas con scann.satisfy_limit habilitado. Este es el único GUC de límite superior disponible y se aplica a los modos de búsqueda automática y manual. Esto evita que la búsqueda se exceda, lo que podría disminuir significativamente el rendimiento. Esto se aplica cuando scann.satisfy_limit está activado.Puedes establecer este parámetro en cualquier valor entre 0 y 100. El valor predeterminado es 15%. Este valor predeterminado se basa en el fundamento de que, si una búsqueda necesita examinar más del 15% de las hojas, es probable que el filtro sea lo suficientemente selectivo como para que la búsqueda de vecino más cercano aproximado (ANN) no proporcione un beneficio, lo que hace que el filtrado previo de k vecinos más cercanos (KNN) sea una opción más adecuada. |
Tiempo de ejecución de la consulta (opcional) |