Os parâmetros de índice e flags de banco de dados a seguir são usados juntos para encontrar o equilíbrio certo de recall e QPS.
Parâmetro de ajuste
Descrição
Tipo de opção
max_num_levels
O número máximo de níveis de centroide da árvore de clustering k-means.
Índice de árvore de dois níveis: definido como 1 por padrão para uma árvore de dois níveis (1 nível de centroide + nível de folha inferior).
Índice de árvore de três níveis: definido como 2 por padrão para uma árvore de três níveis (dois níveis de centroide + nível de folha inferior)
Defina o valor como 2 se o número de linhas de vetor exceder 100 milhões.
Defina o valor como 1 se o número de linhas de vetor for inferior a 10 milhões.
Defina como 1 ou 2 se o número de linhas de vetor estiver entre 10 milhões e 100 milhões para otimizar o tempo de criação do índice (defina como 2) ou otimizar a recuperação da pesquisa (defina como 1).
Criação de índice (opcional)
num_leaves
O número de partições a serem aplicadas a este índice. O número de partições aplicadas ao criar um índice afeta o desempenho dele. Ao aumentar as partições para um determinado número de vetores, você cria um índice mais refinado, o que melhora a recuperação e o desempenho da consulta. No entanto, isso aumenta o tempo de criação do índice.
Como as árvores de três níveis são criadas mais rápido do que as de dois níveis, é possível aumentar o num_leaves_value ao criar um índice de árvore de três níveis para melhorar o desempenho.
Índice de dois níveis: defina esse valor como qualquer valor entre 1 e 1048576.
Para um índice que equilibra a criação rápida de índice e um bom desempenho de pesquisa, use sqrt(ROWS) como ponto de partida, em que ROWS é o número de linhas de vetor. O número de vetores que cada partição contém é calculado por ROWS/sqrt(ROWS) = sqrt(ROWS).
Como um índice de árvore de dois níveis pode ser criado em um conjunto de dados com menos de 10 milhões de linhas de vetores, cada partição terá menos de (sqrt(10M)) vetores, que são 3200 vetores. Para uma qualidade ideal da pesquisa de vetores, é recomendável minimizar o número de vetores em cada partição. O tamanho recomendado é de cerca de 100 vetores por partição. Portanto, defina num_leaves como ROWS/100. Se você tiver 10 milhões de vetores,defina num_leaves como 100.000.
Índice de três níveis: defina esse valor como qualquer valor entre 1 e 1048576.
Se você não tiver certeza sobre o valor exato, use power(ROWS, 2/3) como ponto de partida, em que ROWS é o número de linhas de vetor. O número de vetores que cada partição contém é calculado por ROWS/power(ROWS, 2/3) = power(ROWS, 1/3).
Como um índice de árvore de três níveis pode ser criado em um conjunto de dados com mais de 100 milhões de linhas de vetor, cada partição terá mais de (power(100M, 1/3)) vetores, que são 465 vetores. Para uma qualidade ideal da pesquisa de vetores, é recomendável minimizar o número de vetores em cada partição. O tamanho recomendado é de cerca de 100 vetores por partição. Portanto, defina num_leaves como ROWS/100. Se você tiver 100 milhões de vetores, defina num_leaves como 1 milhão.
Criação de índice (obrigatório)
quantizer
O tipo de quantizador que você quer usar para a árvore K-means. O valor padrão é SQ8, que oferece melhor desempenho 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_inline_filtering
Ativa o suporte à filtragem inline, que consulta seus dados e aplica filtros diretamente em uma operação de pesquisa de similaridade vetorial. Essas consultas de similaridade de vetores usam filtros nas mesmas tabelas de banco de dados e concluem a avaliação do filtro ao calcular a distância para identificação do vizinho mais próximo. Essa opção é desativada por padrão.
Para ativar a filtragem inline, defina esse parâmetro como true. Se você notar uma deterioração na performance, defina como false.
Ativa a análise de componentes principais (PCA), uma técnica de redução de dimensão usada para reduzir automaticamente o tamanho do encadeamento quando possível. Essa opção é ativada por padrão.
Defina como false se você notar uma deterioração na capacidade de recall.
Criação de índice (opcional)
scann.num_leaves_to_search
Essa flag de banco de dados controla o número absoluto de folhas ou partições a serem pesquisadas, permitindo que você faça uma troca entre recall e QPS. O valor padrão é 1% do valor definido em num_leaves.
Um valor maior resulta em um recall melhor, mas em um QPS menor. Da mesma forma, um valor menor resulta em recall menor, mas QPS maior.
Tempo de execução da consulta (opcional)
scann.pre_reordering_num_neighbors
Quando definida, a flag do banco de dados 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 com um valor maior do que o número de vizinhos que você quer que a consulta retorne.
Um valor mais alto resulta em um recall melhor, mas em um QPS mais baixo. Defina esse valor como 0 para desativar a reordenação. O padrão é 0 se a PCA não estiver ativada durante a criação do índice. Caso contrário, o padrão é 50 x K, em que K é o LIMIT 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 de rede neural aproximada (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.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Informações incorretas ou exemplo de código","incorrectInformationOrSampleCode","thumb-down"],["Não contém as informações/amostras de que eu preciso","missingTheInformationSamplesINeed","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-09-04 UTC."],[],[],null,["# ScaNN Index reference\n\nSelect a documentation version: 15.12.0keyboard_arrow_down\n\n- [Current (16.8.0)](/alloydb/omni/current/docs/reference/scann-index-reference)\n- [16.8.0](/alloydb/omni/16.8.0/docs/reference/scann-index-reference)\n- [16.3.0](/alloydb/omni/16.3.0/docs/reference/scann-index-reference)\n- [15.12.0](/alloydb/omni/15.12.0/docs/reference/scann-index-reference)\n- [15.7.1](/alloydb/omni/15.7.1/docs/reference/scann-index-reference)\n- [15.7.0](/alloydb/omni/15.7.0/docs/reference/scann-index-reference)\n\n\u003cbr /\u003e\n\nThis page provides reference material for the ScaNN index.\n\n\u003cbr /\u003e\n\nTuning parameters\n-----------------\n\nThe following index parameters and database flags are used together to find the right balance of recall and QPS.\n\nOption type Index creation Query runtime \n\nWhat's next\n-----------\n\n- [Get started with vector embeddings using AlloyDB AI](https://codelabs.developers.google.com/alloydb-ai-embedding#0)."]]