Esta página descreve as opções para manter os índices de vetores. A manutenção dos índices ajuda a garantir que estes se adaptam às alterações de dados que possam afetar a precisão dos resultados da pesquisa. Use as estratégias nesta página para evitar a degradação do desempenho das consultas à medida que o conjunto de dados cresce.
Antes de começar
Instale ou atualize as extensões
vector
ealloydb_scann
.Se as extensões
vector
ealloydb_scann
não estiverem instaladas, instale as versões mais recentes das extensões.CREATE EXTENSION IF NOT EXISTS vector; CREATE EXTENSION IF NOT EXISTS alloydb_scann;
Se as extensões
vector
ealloydb_scann
já estiverem instaladas, atualize-as para a versão mais recente.ALTER EXTENSION vector UPDATE; ALTER EXTENSION alloydb_scann UPDATE;
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
A funcionalidade de manutenção automática de índices permite que o AlloyDB faça a gestão incremental do índice para que, à medida que o conjunto de dados cresce, o AlloyDB analise e atualize continuamente os centroides e divida grandes partições de valores atípicos. Isto ajuda a manter o índice para consultas comparáveis por segundo (CPS) e a qualidade dos resultados da pesquisa. Todas as atualizações feitas pela manutenção automática são permanentes até à execução de uma manutenção subsequente.
Pode usar a flag da base de dados scann.enable_preview_features
(GUC) juntamente com o parâmetro auto_maintenance
ao nível do índice ao criar um índice ScaNN para ativar a manutenção automática de índices ScaNN.
A funcionalidade de manutenção automática do índice está ativada por predefinição para índices ScaNN
ajustados automaticamente. Para os índices criados manualmente, depois de ativar a flag scann.enable_preview_features
, pode definir o parâmetro auto_maintenance
durante a criação do índice ou usar a função scann_index_maintenance
para acionar a manutenção automática do índice a pedido.
Para permitir que o AlloyDB mantenha um índice automaticamente, ative a flag scann.enable_preview_features
:
gcloud alloydb instances update INSTANCE_ID \
--database-flags scann.enable_preview_features=on \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--project=PROJECT_ID
Substitua o seguinte:
INSTANCE_ID
: o ID da instância.REGION_ID
: a região onde a instância está localizada, por exemplo,us-central1
.CLUSTER_ID
: o ID do cluster onde a instância está colocada.PROJECT_ID
: o ID do projeto onde o cluster está localizado.
Todas as atualizações feitas ao índice como resultado da manutenção automática são permanentes até o AlloyDB atualizar novamente o índice.
Ative a manutenção automática durante a criação do índice
Para criar um índice ScaNN manual com a manutenção automática do índice ativada, execute o seguinte comando de exemplo:
CREATE INDEX INDEX_NAME ON TABLE \
USING scann (EMBEDDING_COLUMN DISTANCE_FUNCTION) \
WITH (mode=MANUAL, 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
.
Pode aumentar o débito da manutenção automática de índices em vários índices configurando a flag de base de dados scann.max_background_workers
. Aumentar o número de trabalhadores aumenta o número de índices processados numa unidade de tempo. Não reduz o tempo de processamento de um único índice. Opcionalmente, também pode definir a flag da base de dados
scann.maintenance_background_naptime_s
para controlar o atraso mínimo entre as execuções de manutenção automática do índice.
Configure o pct_leaves_to_search
para a manutenção automática do índice
Se ativou a manutenção automática de índices, o AlloyDB divide automaticamente as partições com base em heurísticas, por exemplo, dividindo partições atípicas grandes que excedam um determinado tamanho. À 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.
Invocar manualmente a manutenção do índice
Se quiser invocar a manutenção num índice específico a pedido, execute o seguinte comando. Esta função está disponível na versão 0.1.2
ou superior do alloydb_scann
.
Para usar esta função, primeiro tem de ativar a flag scann.enable_preview_features
, conforme descrito em Mantenha os índices automaticamente.
SELECT scann_index_maintenance('INDEX_NAME');
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.