Referência do índice ScaNN do AlloyDB Omni

Selecione uma versão da documentação:

Nesta página, você encontra uma referência detalhada dos parâmetros de ajuste disponíveis para índices de vizinhos mais próximos escalonáveis (ScaNN, na sigla em inglês) no AlloyDB Omni.

Para um tutorial detalhado sobre como implementar a pesquisa vetorial do início ao fim, consulte o guia sobre como realizar uma pesquisa vetorial.

Parâmetros de ajuste

Os seguintes parâmetros de índice e consulta são usados para encontrar o equilíbrio certo entre recall e consultas por segundo (QPS).

Parâmetro de ajuste Descrição Tipo de opção
mode Define o índice ScaNN como um índice ajustado de forma automática ou manual. As opções disponíveis são as seguintes:
  • AUTO: índice ajustado automaticamente
  • MANUAL: índice ajustado manualmente

Para mais informações, consulte Criar um índice ScaNN.

Criação de índice

(opcional)

max_num_levels Número máximo de níveis de centroide da árvore de clustering k-means. Para orientações sobre como definir esse valor, consulte Ajustar um índice ScaNN.

Os valores disponíveis são os seguintes:

  • 1: índice ScaNN de dois níveis
  • 2: índice ScaNN de três níveis
  • 3: índice ScaNN de quatro níveis (pré-lançamento)

Se você definir max_num_levels como 3, também será necessário definir scann.max_allowed_num_levels como 3. Para mais informações, consulte Práticas recomendadas para ajustar índices do ScaNN.

Criação de índice

(opcional)

num_leaves Número de partições a serem aplicadas a esse índice. Para o PostgreSQL 17 e versões mais recentes, o valor máximo é 104857600. Para o PostgreSQL 16 e versões anteriores, o valor máximo é 30000000. Para mais informações sobre como escolher esse valor, consulte Ajustar um índice ScaNN e Práticas recomendadas para ajustar índices ScaNN.

Criação de índice

(obrigatório para índices ajustados manualmente)

quantizer O tipo de quantizador que você quer usar para a árvore K-means. O valor padrão é definido como SQ8, o que melhora o desempenho da consulta com perda mínima de recall (normalmente menos de 1% a 2%).

Defina como FLAT se um recall de 99% ou mais for necessário.
Criação de índice
(opcional)
scann.enable_pca Ativa a análise de componentes principais (PCA, na sigla em inglês), que é uma técnica de redução de dimensão usada para reduzir automaticamente o tamanho do embedding quando possível. Essa opção é ativada por padrão.

Defina como false se você observar uma deterioração no recall.
Criação de índice
(opcional)
auto_maintenance Manter automaticamente um índice ScaNN para que, à medida que o conjunto de dados cresce, o AlloyDB Omni analise e atualize os centroides e divida as partições grandes de outliers. Isso melhora automaticamente as QPS e os resultados da pesquisa. Para mais informações, consulte Manter índices automaticamente.

Criação de índice

(opcional)

Gerencie automaticamente o número de partições que um índice de vetor pesquisa. Para mais informações, consulte Pesquisar porcentagem de partições.

Número absoluto de partições a serem pesquisadas. Isso permite que você escolha entre o recall de consulta e as QPS. O valor padrão é 1% de num_leaves.

Valores mais altos resultam em um recall de consulta melhor, mas em um QPS menor. Da mesma forma, valores mais baixos resultam em um recall de consulta pior, mas em um QPS melhor.

Ambiente de execução da consulta

(opcional)

scann.pre_reordering_num_neighbors

Especifica o número de vizinhos candidatos a serem considerados durante as etapas de reordenação depois que a pesquisa inicial identifica um conjunto de candidatos. Defina esse parâmetro como um valor maior que o número de vizinhos que você quer que a consulta retorne. Valores mais altos resultam em um recall melhor, mas em um QPS menor.

O padrão é 0, que desativa a reordenação. Se a PCA estiver ativada durante a criação do índice, o padrão será 50 x K, em que K é o LIMIT especificado na consulta.

Ambiente de execução da consulta

(opcional)

scann.num_search_threads O número de linhas de execução de pesquisa para pesquisa de várias linhas de execução. Isso pode ajudar a reduzir a latência de uma única consulta usando mais de uma linha de execução para a pesquisa de ANN do ScaNN em aplicativos sensíveis à latência. Essa configuração não melhora a latência de uma única consulta se o banco de dados já estiver vinculado à CPU. O valor padrão é 2. Ambiente de execução da consulta
(opcional)

scann.satisfy_limit (Pré-lançamento)

Quando definida como relaxed_order, a flag de banco de dados resolve o problema de recall insuficiente. O recall insuficiente pode ocorrer quando o recall observado de uma consulta fica abaixo do recall desejado, o que é mais provável ao usar filtros. Essa configuração ajuda a alcançar o recall desejado, permitindo que a verificação de vetor continue pesquisando além do limite de num_leaves_to_search até que um número suficiente de resultados seja encontrado. Ambiente de execução da consulta
(opcional)
Essa flag de banco de dados define um limite superior para a porcentagem de folhas totais que podem ser visitadas para consultas executadas com scann.satisfy_limit ativado. Esse é o único GUC de limite superior disponível e se aplica aos modos de pesquisa automático e manual. Isso evita que a pesquisa ultrapasse o limite, o que pode prejudicar significativamente o desempenho. Isso é aplicável quando scann.satisfy_limit está ativado.
É possível definir esse parâmetro com qualquer valor entre 0 e 100. O valor padrão é 15%. Esse valor padrão se baseia no princípio de que, se uma pesquisa precisar examinar mais de 15% das folhas, é provável que o filtro seja seletivo o suficiente para que a pesquisa de vizinho mais próximo aproximado (ANN, na sigla em inglês) não ofereça um benefício, tornando a pré-filtragem de vizinho mais próximo k (KNN, na sigla em inglês) uma escolha mais adequada.
Ambiente de execução da consulta
(opcional)

A seguir