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:
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:
Se você definir |
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) |
scann.pct_leaves_to_search |
Gerencie automaticamente o número de partições que um índice de vetor pesquisa. Para mais informações, consulte Pesquisar porcentagem de partições. | |
scann.num_leaves_to_search
|
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
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 é |
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) |
|
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) |