Esta página lista as métricas relacionadas aos índices de vetores gerados no AlloyDB Omni. É possível conferir essas métricas usando a visualização pg_stat_ann_indexes
, que fica disponível quando você instala a extensão alloydb_scann
.
Para mais informações sobre como conferir as métricas, consulte Conferir métricas do índice vetorial.
Métricas de usabilidade
As métricas de usabilidade incluem métricas que ajudam a entender o estado da utilização do índice com métricas, como configuração do índice e número de verificações do índice.
Nome da métrica | Tipo de dado | Descrição |
---|---|---|
relid |
OID |
Identificador exclusivo da tabela que contém o índice vetorial |
indexrelid |
OID |
Identificador exclusivo do índice vetorial |
schemaname |
NAME |
Nome do esquema proprietário do índice |
relname |
NAME |
Nome da tabela que contém o índice |
indexrelname |
NAME |
Nome do índice |
indextype |
NAME |
Tipo do índice. Esse valor é sempre definido como scann . |
indexconfig |
TEXT[] |
Configuração, como contagem de folhas e quantizador, definida para o índice quando ele foi criado |
indexsize |
TEXT |
Tamanho do índice |
indexscan |
BIGINT |
Número de verificações de índice iniciadas no índice |
Ajustar métricas
As métricas de ajuste oferecem insights sobre a otimização atual do índice, permitindo que você aplique recomendações para melhorar a performance das consultas.
Nome da métrica | Tipo de dado | Descrição |
---|---|---|
insertcount |
BIGINT |
Número de operações de inserção no índice. Essa métrica também inclui o número de linhas que existiam antes da criação do índice. |
updatecount |
BIGINT |
Número de operações de atualização no índice. Essa métrica não considera atualizações HOT. |
deletecount |
BIGINT |
Número de operações de exclusão no índice. |
distribution |
JSONB |
Distribuições de vetor em todas as partições do índice. Os campos a seguir mostram a distribuição:
Observação:devido às características inerentes do algoritmo de agrupamento K-means, sempre haverá algum grau de variação na distribuição de vetores entre as partições, mesmo quando o índice for criado inicialmente. |
distributionpercentile |
JSONB |
A distribuição do índice vetorial ajuda a entender a distribuição de vetores entre as partições do índice ScaNN. As partições são criadas com base no valor num_leaves definido durante a criação do índice.A distribuição do índice de vetores contém buckets para as percentis 10, 25, 50, 75, 90, 95, 99 e 100. Cada bucket contém os seguintes valores:
Observação:devido às características inerentes do algoritmo de agrupamento K-means, há sempre algum grau de variação na distribuição de vetores entre partições, mesmo quando o índice é criado inicialmente. |
Como ajustar a recomendação com base nas métricas
- Mutação
- As métricas
insertcount
,updatecount
edeletecount
juntas mostram as mudanças ou mutações no vetor do índice. - O índice é criado com um número específico de vetores e partições. Quando operações como inserção, atualização ou exclusão são realizadas no índice de vetores, isso afeta apenas o conjunto inicial de partições em que os vetores residem. Consequentemente, o número de vetores em cada partição flutua ao longo do tempo, o que pode afetar a recuperação, o QPS ou ambos.
- Se você encontrar problemas de lentidão ou precisão, como QPS baixo ou baixa recuperação, nas consultas de pesquisa de ANN ao longo do tempo, considere analisar essas métricas. Um número alto de mutações em relação ao número total de vetores pode indicar a necessidade de reindexação.
- Distribuição
- A métrica
distribution
mostra as distribuições de vetores em todas as partições. - Quando você cria um índice, ele é criado com um número específico de vetores e partições fixas. O processo de particionamento e a distribuição subsequente ocorrem com base nessa consideração. Se outros vetores forem adicionados, eles serão particionados entre as partições existentes, resultando em uma distribuição diferente da distribuição quando o índice foi criado. Como a distribuição final não considera todos os vetores simultaneamente, a recuperação, o QPS ou ambos podem ser afetados.
- Se você notar uma queda gradual no desempenho das consultas de pesquisa de ANN, como tempos de resposta mais lentos ou redução da precisão nos resultados (medidos por QPS ou recall), verifique essa métrica e reindexe.
- Percentil da distribuição
- A métrica
distributionpercentile
é uma distribuição de índice vetorial na visualizaçãopg_stat_ann_indexes
que ajuda a entender a distribuição de vetores entre as partições do índice ScaNN. As partições são criadas com base no valornum_leaves
definido durante a criação do índice. - Quando você cria um índice
alloydb_scann
no conjunto inicial de linhas definindonum_leaves
, o índice pode mudar a distribuição de vetores entre as partições devido a operações de dados (mutações de inclinação) ou o número de vetores pode aumentar significativamente. Essas mudanças podem levar à degradação da QPS, da recuperação ou de ambos. A distribuição do índice de vetor pode indicar se a mutação causa uma mudança na distribuição do índice. Essas informações podem ajudar você a determinar se uma nova indexação é necessária ou se uma mudança nas configurações de tempo de pesquisa pode melhorar a performance da consulta. - Em um índice vetorial, a distribuição de vetores entre as partições raramente é perfeitamente uniforme. Esse desequilíbrio é chamado de distribuição não uniforme. É comum que haja um certo grau de não uniformidade, mas isso não significa que você precisa reindexar. Uma distribuição não uniforme tem as seguintes características:
- A variação do número de vetores é baixa. A variação pode ser calculada como
$(P100(num\_vectors) - p10(num\_vectors))*(\frac{num\_leaves}{total\_num\_row})$ - O número de partições com 0 vetores é baixo e pode ser inferior a 30% das partições.
- A variação do número de partições é baixa.
$ variance _{p} = abs(p_{num\_partitions} - num\_leaves * (p_{percentile} - p-1_{percentile})) $, em que "p" é um bucket de distribuição de índice vetorial. - O número de vetores em qualquer percentil é
$< 8 x (\frac{num\_rows\ during\ index\ creation\ time}{ num\_leaves})$
Quando essas condições não são atendidas, oREINDEX
pode ser necessário com base na quantidade de QPS e de recuperação afetada.
- A variação do número de vetores é baixa. A variação pode ser calculada como
- Os seguintes cenários, embora menos comuns do que a distribuição não uniforme, podem ocorrer:
- Índice uniforme aproximado:quando a maioria das partições tem o mesmo número de vetores diferentes de zero e a variação do número de vetores é baixa, é um índice uniforme aproximado.
REINDEX
é necessário se os vetores de números em cada partição forem $> 8 * vetor médio$ emindex_creation_time
. - Índice esparso:um índice esparso também ocorre quando mais de 50% das partições estão vazias. Por exemplo, o índice esparso é criado quando várias exclusões ocorrem em uma tabela. Esse cenário faz com que os vetores sejam concentrados em um pequeno número de partições, o que aumenta o número de vetores em cada partição. Quando isso acontecer, exclua e recrie o índice.
- Índice uniforme aproximado:quando a maioria das partições tem o mesmo número de vetores diferentes de zero e a variação do número de vetores é baixa, é um índice uniforme aproximado.