Referência do índice ScaNN do AlloyDB Omni

Selecione uma versão da documentação:

Esta página fornece uma referência detalhada para os 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 Como realizar uma pesquisa vetorial.

Parâmetros de ajuste

Os parâmetros de índice e consulta a seguir são usados para encontrar o equilíbrio certo de recall e consultas por segundo (QPS, na sigla em inglês).

Parâmetro de ajuste Descrição Tipo de opção
mode Define o índice ScaNN como um índice ajustado automaticamente ou manualmente índice. 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 clusterização 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 defina scann.max_allowed_num_levels como 3. Para mais informações, consulte Práticas recomendadas para ajustar índices ScaNN.

Criação de índice

(opcional)

num_leaves Número de partições a serem aplicadas a esse índice. 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

(necessá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 que oferece melhor performance de consulta com perda mínima de recall (normalmente menos de 1 a 2%).

Defina como FLAT se for necessário um recall de 99% ou mais.
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 da incorporação quando possível. Essa opção é ativada por padrão.

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

Criação de índice

(opcional)

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

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

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

Tempo de execução da consulta

(opcional)

scann.pre_reordering_num_neighbors

Especifica o número de vizinhos candidatos a serem considerados durante os reordenação estágios 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 melhor recall, mas QPS mais baixo.

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 LIMITE especificado na consulta.

Tempo de execução da consulta

(opcional)

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

scann.satisfy_limit (pré-lançamento)

Quando definido como relaxed_order, o flag do banco de dados resolve o recall insuficiente. O recall insuficiente pode ocorrer quando o recall observado de uma consulta fica abaixo do recall de destino, o que é mais provável ao usar filtros. Essa configuração ajuda a alcançar o recall de destino, permitindo que a verificação de vetor continue pesquisando além do limite num_leaves_to_search até que um número suficiente de resultados seja encontrado. Tempo de execução da consulta
(opcional)
Esse flag de banco de dados define um limite máximo na porcentagem de folhas totais que podem ser visitadas para consultas executadas com scann.satisfy_limit ativado. Esse é o único limite máximo de GUC disponível e se aplica aos modos de pesquisa automática e manual. Ele impede que a pesquisa ultrapasse o limite, o que pode prejudicar significativamente a performance. 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 é baseado no princípio de que, se uma pesquisa precisar examinar mais de 15% das folhas, o filtro provavelmente será 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 do vizinho mais próximo (KNN, na sigla em inglês) uma escolha mais adequada.
Tempo de execução da consulta
(opcional)

A seguir