Ver métricas de índice vectorial
Si tu tabla se actualiza o se insertan datos con frecuencia, te recomendamos que reindexes periódicamente el índice ScaNN para mejorar la precisión de la recuperación de tu índice. Puede monitorizar las métricas de índice para ver los cambios en las distribuciones de vectores o las mutaciones de vectores desde que se creó el índice y, a continuación, volver a indexar según corresponda.
Para obtener más información sobre las métricas, consulta Ver métricas de índice vectorial.
Mantener los índices automáticamente
Puede usar la marca de base de datos scann.enable_index_maintenance
Grand Unified Configuration (GUC) junto con el parámetro auto_maintenance
a nivel de índice al crear un índice de ScaNN. Si se usan estos ajustes conjuntamente, AlloyDB puede gestionar el índice de forma incremental y dividir las particiones atípicas grandes a medida que crece el conjunto de datos. Al dividir particiones, AlloyDB intenta proporcionar mejores consultas por segundo (QPS) y resultados de búsqueda.
Las actualizaciones de los índices de mantenimiento automático se conservan hasta que AlloyDB vuelve a actualizar el índice.
Para que AlloyDB mantenga un índice automáticamente, añade la extensión alloydb_scann
al parámetro shared_preload_libraries
, habilita la marca de base de datos scann.enable_index_maintenance
y, a continuación, carga la extensión alloydb_scann
reiniciando la base de datos:
Carga la extensión
alloydb_scann
en la listashared_preload_libraries
:sudo sed -r -i "s|(shared_preload_libraries\s*=\s*)'(.*)'.*$|\1'\2,alloydb_scann'|" DATA_DIR/postgresql.conf
Compruebe que el parámetro se ha configurado correctamente:
grep -iE 'shared_preload_libraries' DATA_DIR/postgresql.conf
Habilita la marca
scann.enable_index_maintenance
definiéndola en el archivopostgresql.conf
:scann.enable_index_maintenance = ON
Reinicia AlloyDB Omni para que el cambio de parámetro surta efecto:
Docker
docker container restart CONTAINER_NAME
Sustituye
CONTAINER_NAME
por el nombre que asignaste al contenedor de AlloyDB Omni cuando lo iniciaste.Podman
podman container restart CONTAINER_NAME
Sustituye
CONTAINER_NAME
por el nombre que asignaste al contenedor de AlloyDB Omni cuando lo iniciaste.
Después de habilitar la marca scann.enable_index_maintenance
, puedes habilitar el mantenimiento automático de los índices o la función scann_index_maintenance
para invocar el mantenimiento manualmente.
Habilitar el mantenimiento automático durante la creación de índices
Para crear un índice de ScaNN con el mantenimiento automático habilitado, ejecuta el siguiente comando de ejemplo:
CREATE INDEX INDEX_NAME ON TABLE
USING scann (EMBEDDING_COLUMN DISTANCE_FUNCTION)
WITH (num_leaves=NUM_LEAVES_VALUE, auto_maintenance=on);
Haz los cambios siguientes:
INDEX_NAME
: el nombre del índice que quieras crear (por ejemplo,my-scann-index
). Los nombres de los índices se comparten en toda la base de datos. Asegúrate de que cada nombre de índice sea único para cada tabla de tu base de datos.TABLE
: la tabla a la que se va a añadir el índice.EMBEDDING_COLUMN
: una columna que almacenavector
datos.DISTANCE_FUNCTION
: la función de distancia que se va a usar con este índice. Elige una de estas opciones:Distancia L2:
l2
Producto escalar:
dot_product
Distancia del coseno:
cosine
NUM_LEAVES_VALUE
: el número de particiones que se aplicarán a este índice. Puede ser cualquier valor entre 1 y 1048576. Para obtener más información sobre cómo decidir este valor, consulta Ajustar un índice deScaNN
.
Invocar el mantenimiento manualmente
Si quieres invocar el mantenimiento de un índice concreto bajo demanda, ejecuta el siguiente comando:
SELECT AS scann_index_maintenance('INDEX_NAME');
Gestionar las hojas para buscar particiones divididas automáticamente
Si has habilitado el mantenimiento automático de los índices, AlloyDB dividirá automáticamente las particiones cuando se alcance el umbral de num_leaves
. A medida que aumenta el número de particiones debido a estas divisiones, debes ajustar el número de hojas que se van a buscar para mantener un rendimiento óptimo.
Para gestionar el número de hojas que se deben buscar automáticamente, usa pct_leaves_to_search
. Este parámetro le permite especificar un porcentaje del número de particiones que se van a buscar. Si prevés que tu conjunto de datos aumentará considerablemente, empieza asignando el valor pct_leaves_to_search
a 1. El parámetro está inhabilitado de forma predeterminada.
Asigna a este campo el porcentaje del número actual de particiones. Por ejemplo, para buscar el 1% del número actual de particiones, defina este valor en 1
.
Puede asignar a este parámetro cualquier valor entre 0
y 100
.
El valor predeterminado es 0
, que inhabilita este parámetro y usa scann.num_leaves_to_search
para calcular el número de hojas que se deben buscar.
Para definir la marca pct_leaves_to_search
en tu base de datos, ejecuta el siguiente comando:
ALTER DATABASE DATABASE_NAME SET scann.pct_leaves_to_search = PERCENTAGE_LEAVES_TO_SEARCH;
Haz los cambios siguientes:
DATABASE_NAME
: el nombre de la base de datos.PERCENTAGE_LEAVES_TO_SEARCH
: porcentaje denum_leaves
que se va a buscar.
Reconstruir el índice manualmente
Puedes volver a crear el índice manualmente si quieres hacerlo con las configuraciones que especificaste cuando se creó.
Para volver a crear el índice manualmente, ejecuta el siguiente comando:
REINDEX INDEX CONCURRENTLY INDEX_NAME;
Sustituye INDEX_NAME
por el nombre del índice que quieras volver a compilar (por ejemplo, my-scann-index
). Los nombres de los índices se comparten en toda la base de datos. Asegúrate de que cada nombre de índice sea único para cada tabla de tu base de datos.
Para obtener más información sobre la reindexación en PostgreSQL, consulta REINDEX.