Cette page liste les métriques liées aux index vectoriels que vous générez dans AlloyDB Omni. Vous pouvez afficher ces métriques à l'aide de la vue pg_stat_ann_indexes
disponible lorsque vous installez l'extension alloydb_scann
.
Pour en savoir plus sur l'affichage des métriques, consultez Afficher les métriques de l'indice vectoriel.
Métriques d'usabilité
Les métriques d'usabilité incluent des métriques qui vous aident à comprendre l'état de l'utilisation de l'index avec des métriques telles que la configuration de l'index et le nombre d'analyses de l'index.
Nom de la métrique | Type de données | Description |
---|---|---|
relid |
OID |
Identifiant unique de la table contenant l'index vectoriel |
indexrelid |
OID |
Identifiant unique de l'index vectoriel |
schemaname |
NAME |
Nom du schéma propriétaire de l'index |
relname |
NAME |
Nom de la table contenant l'index |
indexrelname |
NAME |
Nom de l'index |
indextype |
NAME |
Type d'index. Cette valeur est toujours définie sur scann . |
indexconfig |
TEXT[] |
Configuration, comme le nombre de feuilles et le quantizeur, définie pour l'index lors de sa création |
indexsize |
TEXT |
Taille de l'index |
indexscan |
BIGINT |
Nombre d'analyses d'index lancées sur l'index |
Métriques de réglage
Les métriques de réglage fournissent des insights sur votre optimisation d'index actuelle. Vous pouvez ainsi appliquer des recommandations pour améliorer les performances des requêtes.
Nom de la métrique | Type de données | Description |
---|---|---|
insertcount |
BIGINT |
Nombre d'opérations d'insertion sur l'index. Cette métrique inclut également le nombre de lignes qui existaient avant la création de l'index. |
updatecount |
BIGINT |
Nombre d'opérations de mise à jour sur l'index. Cette métrique ne tient pas compte des mises à jour HOT. |
deletecount |
BIGINT |
Nombre d'opérations de suppression sur l'index. |
distribution |
JSONB |
Distributions vectorielles sur toutes les partitions de l'index. Les champs suivants indiquent la distribution:
Remarque:En raison des caractéristiques inhérentes de l'algorithme de clustering K-means, il existe toujours un certain degré de variance dans la distribution des vecteurs entre les partitions, même lors de la création initiale de l'index. |
distributionpercentile |
JSONB |
La distribution de l'index vectoriel vous aide à comprendre la répartition des vecteurs entre les partitions de votre index ScaNN. Les partitions sont créées en fonction de la valeur num_leaves définie lors de la création de l'index.La distribution de l'index vectoriel contient des buckets pour les percentiles 10, 25, 50, 75, 90, 95, 99 et 100. Chaque bucket contient les valeurs suivantes:
Remarque:En raison des caractéristiques inhérentes de l'algorithme de clustering K-means, il existe toujours un certain degré de variance dans la distribution des vecteurs entre les partitions, même lorsque l'index est créé initialement. |
Recommandation de réglage basée sur les métriques
- Mutation
- Les métriques
insertcount
,updatecount
etdeletecount
montrent ensemble les modifications ou les mutations du vecteur pour l'index. - L'index est créé avec un nombre spécifique de vecteurs et de partitions. Lorsque des opérations telles que l'insertion, la mise à jour ou la suppression sont effectuées sur l'index de vecteurs, elles n'affectent que l'ensemble initial de partitions dans lesquelles se trouvent les vecteurs. Par conséquent, le nombre de vecteurs dans chaque partition fluctue au fil du temps, ce qui peut avoir un impact sur le rappel, le RPS ou les deux.
- Si vous rencontrez des problèmes de lenteur ou de précision, tels qu'un faible nombre de requêtes par seconde ou un faible rappel, dans vos requêtes de recherche avec ANN au fil du temps, envisagez de consulter ces métriques. Un nombre élevé de mutations par rapport au nombre total de vecteurs peut indiquer qu'un réindexage est nécessaire.
- Distribution
- La métrique
distribution
affiche les distributions vectorielles pour toutes les partitions. - Lorsque vous créez un indice, il est créé avec un nombre spécifique de vecteurs et de partitions fixes. Le processus de partitionnement et la distribution ultérieure se font en fonction de cette considération. Si des vecteurs supplémentaires sont ajoutés, ils sont répartis entre les partitions existantes, ce qui entraîne une distribution différente de celle obtenue lors de la création de l'index. Étant donné que la distribution finale ne prend pas en compte tous les vecteurs simultanément, le rappel, le nombre de requêtes par seconde ou les deux peuvent être affectés.
- Si vous constatez une baisse progressive des performances de vos requêtes de recherche avec un ANN, comme des temps de réponse plus longs ou une précision réduite des résultats (mesurée par le RPS ou le rappel), envisagez de vérifier cette métrique et de réindexer votre site.
- Centile de distribution
- La métrique
distributionpercentile
est une distribution d'index vectoriel dans la vuepg_stat_ann_indexes
. Elle vous aide à comprendre la distribution des vecteurs entre les partitions de votre index ScaNN. Les partitions sont créées en fonction de la valeurnum_leaves
définie lors de la création de l'index. - Lorsque vous créez un indice
alloydb_scann
sur l'ensemble initial de lignes en définissantnum_leaves
, l'indice peut modifier la distribution des vecteurs dans les partitions en raison d'opérations de données (mutations de biais), ou le nombre de vecteurs peut augmenter de manière significative. Ces modifications peuvent entraîner une dégradation du QPS ou du rappel, ou les deux. La distribution de l'indice vectoriel peut vous fournir des signaux si la mutation entraîne une modification de la distribution de l'indice. Ces informations peuvent vous aider à déterminer si un réindexage est nécessaire ou si une modification des configurations de temps de recherche peut améliorer les performances des requêtes. - Dans un indice vectoriel, la répartition des vecteurs entre les partitions est rarement parfaitement uniforme. Ce déséquilibre est appelé distribution non uniforme. Un certain degré d'inégalité est souvent attendu et ne signifie pas que vous devez réindexer. Une distribution non uniforme présente les caractéristiques suivantes:
- La variance du nombre de vecteurs est faible. La variance peut être calculée comme suit :
$(P100(num\_vectors) - p10(num\_vectors))*(\frac{num\_leaves}{total\_num\_row})$ - Le nombre de partitions contenant 0 vecteurs est faible et peut être inférieur à 30 %.
- La variance du nombre de partitions est faible.
$ variance _{p} = abs(p_{num\_partitions} - num\_leaves * (p_{percentile} - p-1_{percentile})) $ où "p" est un bucket de distribution d'index vectoriel. - Le nombre de vecteurs à n'importe quel centile est
$< 8 x (\frac{num\_rows\ during\ index\ creation\ time}{ num\_leaves})$
Lorsque ces conditions ne sont pas remplies,REINDEX
peut être nécessaire en fonction de l'impact sur le nombre de RPS et la mémorisation.
- La variance du nombre de vecteurs est faible. La variance peut être calculée comme suit :
- Les scénarios suivants, bien que moins courants que la distribution non uniforme, peuvent se produire:
- Indice uniforme approximatif:lorsque la plupart des partitions ont le même nombre de vecteurs non nuls et que la variance du nombre de vecteurs est faible, il s'agit d'un indice uniforme approximatif.
REINDEX
est obligatoire si le nombre de vecteurs dans chaque partition est supérieur à $8 * vecteur moyen$ àindex_creation_time
. - Index sparse:un index sparse se produit également lorsque plus de 50% des partitions sont vides. Par exemple, un indice clairsemé est créé lorsque plusieurs suppressions se produisent dans une table. Dans ce scénario, les vecteurs sont concentrés dans un petit nombre de partitions, ce qui augmente le nombre de vecteurs dans chaque partition. Dans ce cas, supprimez l'index et recréez-le.
- Indice uniforme approximatif:lorsque la plupart des partitions ont le même nombre de vecteurs non nuls et que la variance du nombre de vecteurs est faible, il s'agit d'un indice uniforme approximatif.