En esta página, se enumeran las métricas relacionadas con los índices de vectores que generas en AlloyDB Omni. Puedes ver estas métricas con la vista pg_stat_ann_indexes
que está disponible cuando instalas la extensión alloydb_scann
.
Para obtener más información sobre cómo ver las métricas, consulta Cómo ver las métricas del índice vectorial.
Métricas de usabilidad
Las métricas de usabilidad incluyen métricas que te ayudan a comprender el estado de uso del índice con métricas, como la configuración del índice y la cantidad de análisis del índice.
Nombre de la métrica | Tipo de datos | Descripción |
---|---|---|
relid |
OID |
Es el identificador único de la tabla que contiene el índice vectorial. |
indexrelid |
OID |
Es el identificador único del índice vectorial. |
schemaname |
NAME |
Es el nombre del esquema al que pertenece el índice. |
relname |
NAME |
Es el nombre de la tabla que contiene el índice. |
indexrelname |
NAME |
Nombre del índice |
indextype |
NAME |
Es el tipo de índice. Este valor siempre se establece en scann . |
indexconfig |
TEXT[] |
La configuración, como el recuento de hojas y el cuantificador, definida para el índice cuando se creó |
indexsize |
TEXT |
Tamaño del índice |
indexscan |
BIGINT |
Cantidad de análisis de índices iniciados en el índice |
Métricas de ajuste
Las métricas de ajuste proporcionan estadísticas sobre la optimización de tu índice actual, lo que te permite aplicar recomendaciones para mejorar el rendimiento de las consultas.
Nombre de la métrica | Tipo de datos | Descripción |
---|---|---|
insertcount |
BIGINT |
Cantidad de operaciones de inserción en el índice. Esta métrica también incluye la cantidad de filas que existían antes de crear el índice. |
updatecount |
BIGINT |
Cantidad de operaciones de actualización en el índice. Esta métrica no tiene en cuenta las actualizaciones HOT. |
deletecount |
BIGINT |
Cantidad de operaciones de eliminación en el índice. |
distribution |
JSONB |
Son distribuciones de vectores en todas las particiones del índice. Los siguientes campos muestran la distribución:
Nota: Debido a las características inherentes del algoritmo de agrupamiento de K-means, siempre habrá algún grado de variación en la distribución de los vectores entre las particiones, incluso cuando se crea el índice inicialmente. |
distributionpercentile |
JSONB |
La distribución del índice vectorial te ayuda a comprender la distribución de los vectores entre las particiones de tu índice ScaNN. Las particiones se crean en función del valor de num_leaves definido durante la creación del índice.La distribución del índice vectorial contiene buckets para los percentiles 10, 25, 50, 75, 90, 95, 99 y 100. Cada bucket contiene los siguientes valores:
Nota: Debido a las características inherentes del algoritmo de agrupamiento K-means, siempre hay un grado de variación en la distribución de los vectores entre las particiones, incluso cuando se crea el índice inicialmente. |
Cómo ajustar la recomendación en función de las métricas
- Mutación
- Las métricas
insertcount
,updatecount
ydeletecount
juntas muestran los cambios o mutaciones en el vector del índice. - El índice se crea con una cantidad específica de vectores y particiones. Cuando se realizan operaciones como insertar, actualizar o borrar en el índice de vectores, solo se afecta el conjunto inicial de particiones en las que residen los vectores. En consecuencia, la cantidad de vectores en cada partición fluctúa con el tiempo, lo que podría afectar la recuperación, las QPS o ambas.
- Si, con el tiempo, encuentras problemas de lentitud o precisión, como QPS bajos o baja recuperación, en tus consultas de búsqueda de ANN, considera revisar estas métricas. Una gran cantidad de mutaciones en relación con la cantidad total de vectores podría indicar que es necesario volver a indexar.
- Distribución
- La métrica
distribution
muestra las distribuciones de vectores en todas las particiones. - Cuando creas un índice, se crea con una cantidad específica de vectores y particiones fijas. El proceso de partición y la distribución posterior se realizan en función de esta consideración. Si se agregan vectores adicionales, se particionan entre las particiones existentes, lo que genera una distribución diferente en comparación con la distribución que se tenía cuando se creó el índice. Dado que la distribución final no considera todos los vectores de forma simultánea, es posible que se vean afectados la recuperación, la QPS o ambas.
- Si observas una disminución gradual en el rendimiento de tus consultas de búsqueda de ANN, como tiempos de respuesta más lentos o una precisión reducida en los resultados (medida por QPS o recuperación), considera verificar esta métrica y volver a indexar.
- Percentil de distribución
- La métrica
distributionpercentile
es una distribución de índices vectoriales en la vistapg_stat_ann_indexes
que te ayuda a comprender la distribución de vectores entre las particiones de tu índice ScaNN. Las particiones se crean en función del valor denum_leaves
definido durante la creación del índice. - Cuando configuras
num_leaves
para crear un índicealloydb_scann
en el conjunto inicial de filas, el índice puede cambiar la distribución de los vectores entre las particiones debido a las operaciones de datos (mutaciones sesgadas), o bien la cantidad de vectores podría aumentar significativamente. Estos cambios pueden provocar una degradación de la QPS, la recuperación o ambas. La distribución del índice vectorial puede brindarte indicadores si la mutación causa un cambio en la distribución del índice. Esta información puede ayudarte a determinar si es necesario volver a indexar o si un cambio en la configuración del tiempo de búsqueda puede mejorar el rendimiento de las consultas. - En un índice vectorial, la distribución de los vectores entre las particiones rara vez es perfectamente uniforme. Este desequilibrio se conoce como distribución no uniforme. A menudo, se espera un cierto grado de no uniformidad, y esto no significa que debas volver a indexar. Una distribución no uniforme tiene las siguientes características:
- La varianza de la cantidad de vectores es baja. La varianza se puede calcular como
$(P100(num\_vectors) - p10(num\_vectors))*(\frac{num\_leaves}{total\_num\_row})$ - La cantidad de particiones con 0 vectores es baja y podría ser inferior al 30% de las particiones.
- La varianza de la cantidad de particiones es baja.
$ variance _{p} = abs(p_{num\_partitions} - num\_leaves * (p_{percentile} - p-1_{percentile})) $, donde "p" es un bucket de distribución de índices vectoriales. - La cantidad de vectores en cualquier percentil es
$< 8 x (\frac{num\_rows\ during\ index\ creation\ time}{ num\_leaves})$
Cuando no se cumplen estas condiciones, es posible que se requieraREINDEX
en función de cuánto se ven afectadas las QPS y la recuperación.
- La varianza de la cantidad de vectores es baja. La varianza se puede calcular como
- Si bien son menos comunes que la distribución no uniforme, pueden ocurrir las siguientes situaciones:
- Índice uniforme aproximado: Cuando la mayoría de las particiones tienen la misma cantidad de vectores distintos de cero y la varianza de la cantidad de vectores es baja, se trata de un índice uniforme aproximado. Se requiere
REINDEX
si los vectores de números en cada partición son $> 8 * vector promedio$ enindex_creation_time
. - Índice disperso: Un índice disperso también ocurre cuando más del 50% de las particiones están vacías. Por ejemplo, se crea un índice disperso cuando se producen varias eliminaciones en una tabla. Esta situación hace que los vectores se concentren en una pequeña cantidad de particiones, lo que aumenta la cantidad de vectores en cada partición. Cuando esto suceda, descarta el índice y vuelve a crearlo.
- Índice uniforme aproximado: Cuando la mayoría de las particiones tienen la misma cantidad de vectores distintos de cero y la varianza de la cantidad de vectores es baja, se trata de un índice uniforme aproximado. Se requiere