Informações gerais sobre a performance da consulta de vetor ScaNN

Esta página oferece uma visão geral conceitual de como melhorar a performance da consulta de vetores com o índice ScaNN.

O índice ScaNN usa indexação baseada em quantização de árvore. Em técnicas de quantização em árvore, os índices aprendem uma árvore de pesquisa com uma função de quantização (ou hash). Quando você executa uma consulta, a árvore de pesquisa é usada para podar o espaço de pesquisa, enquanto a quantização é usada para compactar o tamanho do índice. Essa poda acelera a pontuação da similaridade (ou seja, distância) entre o vetor de consulta e os vetores do banco de dados.

Para alcançar uma alta taxa de consultas por segundo (QPS) e uma alta recuperação com as consultas de vizinho mais próximo, é necessário particionar a árvore do índice ScaNN de uma forma mais adequada aos seus dados e consultas.

Uma característica comum da geração atual de modelos de inserção de alta dimensionalidade é que eles ainda podem reter muitas informações com dimensionalidade muito menor. Por exemplo, 90% das informações podem ser retidas com apenas 20% das dimensões da inserção. Para ajudar a acelerar esses conjuntos de dados, o AlloyDB ScaNN vai realizar automaticamente a redução de dimensão usando a análise de componentes principais (consulte scann.enable_pca abaixo) nos vetores indexados, o que reduz ainda mais o uso da CPU e da memória para a pesquisa de vetores. Como a redução de dimensão ainda causa uma pequena perda de recuperação no índice, o AlloyDB ScaNN compensa isso com uma etapa inicial de classificação com um número maior de candidatos de vetores PCA do índice e, em seguida, os classifica novamente pelos vetores originais (consulte scann.pre_reordering_num_neighbors).

A seguir