Veja métricas do índice vetorial
Se a sua tabela for propensa a atualizações ou inserções frequentes, recomendamos que reindexe periodicamente o índice ScaNN existente para melhorar a precisão da capacidade de memorização do seu índice. Pode monitorizar as métricas de índice para ver as alterações nas distribuições de vetores ou nas mutações de vetores desde a criação do índice e, em seguida, reindexar em conformidade.
Para mais informações sobre as métricas, consulte o artigo Veja as métricas do índice vetorial.
Mantenha os índices automaticamente
Pode usar a flag da base de dados de scann.enable_index_maintenance
configuração unificada geral (GUC) juntamente com o parâmetro auto_maintenance
ao nível do índice ao criar um índice ScaNN. A utilização destas definições em conjunto permite ao AlloyDB gerir incrementalmente o índice e dividir grandes partições atípicas à medida que o conjunto de dados cresce. Ao dividir partições, o AlloyDB tenta oferecer melhores consultas por segundo (CPS) e resultados da pesquisa.
As atualizações de índices de manutenção automática persistem até o AlloyDB atualizar novamente o índice.
Para permitir que o AlloyDB mantenha um índice automaticamente, adicione a extensão alloydb_scann
ao parâmetro shared_preload_libraries
, ative a flag da base de dados scann.enable_index_maintenance
e, em seguida, carregue a extensão alloydb_scann
reiniciando a base de dados:
Carregue a extensão
alloydb_scann
para a listashared_preload_libraries
:sudo sed -r -i "s|(shared_preload_libraries\s*=\s*)'(.*)'.*$|\1'\2,alloydb_scann'|" DATA_DIR/postgresql.conf
Verifique se a configuração do parâmetro está definida corretamente:
grep -iE 'shared_preload_libraries' DATA_DIR/postgresql.conf
Ative o sinalizador
scann.enable_index_maintenance
definindo-o no ficheiropostgresql.conf
:scann.enable_index_maintenance = ON
Reinicie o AlloyDB Omni para que a alteração do parâmetro entre em vigor:
Docker
docker container restart CONTAINER_NAME
Substitua
CONTAINER_NAME
pelo nome que atribuiu ao contentor do AlloyDB Omni quando o iniciou.Podman
podman container restart CONTAINER_NAME
Substitua
CONTAINER_NAME
pelo nome que atribuiu ao contentor do AlloyDB Omni quando o iniciou.
Depois de ativar a flag scann.enable_index_maintenance
, pode ativar a manutenção automática para os índices ou ativar a função scann_index_maintenance
para invocar manualmente a manutenção.
Ative a manutenção automática durante a criação do índice
Para criar um índice ScaNN com a manutenção automática ativada, execute o seguinte comando de exemplo:
CREATE INDEX INDEX_NAME ON TABLE
USING scann (EMBEDDING_COLUMN DISTANCE_FUNCTION)
WITH (num_leaves=NUM_LEAVES_VALUE, auto_maintenance=on);
Substitua o seguinte:
INDEX_NAME
: o nome do índice que quer criar, por exemplo,my-scann-index
. Os nomes dos índices são partilhados na sua base de dados. Certifique-se de que cada nome de índice é exclusivo para cada tabela na sua base de dados.TABLE
: a tabela à qual adicionar o índice.EMBEDDING_COLUMN
: uma coluna que armazenavector
dados.DISTANCE_FUNCTION
: a função de distância a usar com este índice. Selecione uma das seguintes opções:Distância L2:
l2
Produto escalar:
dot_product
Distância do cosseno:
cosine
NUM_LEAVES_VALUE
: o número de partições a aplicar a este índice. Defina qualquer valor entre 1 e 1048576. Para mais informações sobre como decidir este valor, consulte o artigo Ajuste um índiceScaNN
.
Invocar manualmente a manutenção
Se quiser invocar a manutenção num índice específico a pedido, execute o seguinte comando:
SELECT AS scann_index_maintenance('INDEX_NAME');
Faça a gestão das folhas para pesquisar partições divididas automaticamente
Se ativou a manutenção automática de índices, o AlloyDB divide automaticamente as partições quando o limite de num_leaves
é atingido. À medida que o número de partições aumenta devido a estas divisões, deve ajustar o número de folhas a pesquisar para manter um desempenho ideal.
Para gerir o número de folhas a pesquisar automaticamente, use
pct_leaves_to_search
. Este parâmetro permite-lhe especificar uma percentagem do número de partições a pesquisar. Se espera que o conjunto de dados cresça significativamente, comece por definir o valor pct_leaves_to_search
como 1. O parâmetro está
desativado por predefinição.
Defina este valor como a percentagem do número atual de partições. Por exemplo, para pesquisar 1% do número atual de partições, defina este valor como 1
.
Pode definir este parâmetro para qualquer valor entre 0
e 100
.
O valor predefinido é 0
, que desativa este parâmetro e usa o elemento scann.num_leaves_to_search
para calcular o número de folhas a pesquisar.
Para definir a flag pct_leaves_to_search
na sua base de dados, execute o seguinte comando:
ALTER DATABASE DATABASE_NAME SET scann.pct_leaves_to_search = PERCENTAGE_LEAVES_TO_SEARCH;
Substitua o seguinte:
DATABASE_NAME
: o nome da base de dados.PERCENTAGE_LEAVES_TO_SEARCH
: a percentagem denum_leaves
a pesquisar.
Reconstrua manualmente o índice
Pode reconstruir manualmente o índice se quiser reconstruí-lo com as configurações especificadas quando foi criado.
Para reconstruir manualmente o índice, execute o seguinte comando:
REINDEX INDEX CONCURRENTLY INDEX_NAME;
Substitua INDEX_NAME
pelo nome do índice que quer
reconstruir, por exemplo, my-scann-index
. Os nomes dos índices são partilhados
na sua base de dados. Certifique-se de que cada nome de índice é exclusivo para cada tabela na sua base de dados.
Para mais informações sobre a reindexação no PostgreSQL, consulte o artigo REINDEX.