Référence de l'index ScaNN

Sélectionnez une version de la documentation :

Cette page fournit des informations de référence sur l'index ScaNN.

Paramètres de réglage

Les paramètres d'index et les indicateurs de base de données suivants sont utilisés ensemble pour trouver le bon équilibre entre rappel et RPS.

Paramètre de réglage Description Type d'option
max_num_levels Nombre maximal de niveaux de centroïdes de l'arbre de clustering K-means.
  • Index d'arborescence à deux niveaux : défini sur 1 par défaut pour une arborescence à deux niveaux (1 niveau de centroïde + niveau de feuille inférieur).
  • Index d'arborescence à trois niveaux : défini sur 2 par défaut pour une arborescence à trois niveaux (2 niveaux de centroïdes + niveau de feuille inférieur)
  • Définissez la valeur sur 2 si le nombre de lignes de vecteur dépasse 100 millions.
  • Définissez la valeur sur 1 si le nombre de lignes vectorielles est inférieur à 10 millions.
  • Définissez la valeur sur 1 ou 2 si le nombre de lignes de vecteur est compris entre 10 millions et 100 millions de lignes pour optimiser le temps de création de l'index (définissez la valeur sur 2) ou optimiser le rappel de recherche (définissez la valeur sur 1).
Création d'index
(facultatif)
num_leaves Nombre de partitions à appliquer à cet index. Le nombre de partitions que vous appliquez lors de la création d'un index a une incidence sur les performances de l'index. En augmentant le nombre de partitions pour un nombre défini de vecteurs, vous créez un index plus précis, ce qui améliore le rappel et les performances des requêtes. Toutefois, cela se fait au détriment de la durée de création des index.

Étant donné que les arbres à trois niveaux se construisent plus rapidement que ceux à deux niveaux, vous pouvez augmenter num_leaves_value lorsque vous créez un index d'arbre à trois niveaux pour améliorer les performances.
  • Index à deux niveaux : définissez cette valeur sur n'importe quelle valeur comprise entre 1 et 1048576.

    Pour un index qui équilibre la création rapide d'index et de bonnes performances de recherche, utilisez sqrt(ROWS) comme point de départ, où ROWS correspond au nombre de lignes de vecteur. Le nombre de vecteurs que contient chaque partition est calculé par
    ROWS/sqrt(ROWS) = sqrt(ROWS).

    Étant donné qu'un index arborescent à deux niveaux peut être créé sur un ensemble de données comportant moins de 10 millions de lignes de vecteurs, chaque partition contiendra moins de (sqrt(10M)) vecteurs, soit 3200 vecteurs. Pour une qualité de recherche vectorielle optimale, il est recommandé de minimiser le nombre de vecteurs dans chaque partition. La taille de partition recommandée est d'environ 100 vecteurs par partition. Définissez donc num_leaves sur ROWS/100. Si vous avez 10 millions de vecteurs,définissez num_leaves sur 100 000.
  • Index à trois niveaux : définissez cette valeur sur n'importe quelle valeur comprise entre 1 et 1048576.

    Si vous ne savez pas quelle valeur exacte sélectionner, utilisez power(ROWS, 2/3) comme point de départ, où ROWS correspond au nombre de lignes de vecteur. Le nombre de vecteurs que contient chaque partition est calculé par
    ROWS/power(ROWS, 2/3) = power(ROWS, 1/3).

    Étant donné qu'un index arborescent à trois niveaux peut être créé sur un ensemble de données comportant plus de 100 millions de lignes de vecteurs, chaque partition contiendra plus de
    (power(100M, 1/3)) vecteurs, soit 465 vecteurs. Pour une qualité de recherche vectorielle optimale, il est recommandé de minimiser le nombre de vecteurs dans chaque partition. La taille de partition recommandée est d'environ 100 vecteurs par partition. Définissez donc num_leaves sur ROWS/100. Si vous avez 100 millions de vecteurs, vous devez définir num_leaves sur 1 million.
Création d'index 
(obligatoire)
quantizer Type de quantificateur à utiliser pour l'arbre K-means. La valeur par défaut est définie sur SQ8, ce qui permet d'améliorer les performances des requêtes avec une perte de rappel minimale (généralement inférieure à 1 ou 2 %).

Définissez-la sur FLAT si un rappel de 99 % ou plus est requis.
Création d'index
(facultatif)
scann.enable_pca Active l'analyse des composants principaux (ACP), une technique de réduction de la dimensionnalité utilisée pour réduire automatiquement la taille de l'embedding lorsque cela est possible. Cette option est activée par défaut.

Définissez-la sur false si vous constatez une détérioration du rappel.
Création d'index
(facultatif)
scann.pct_leaves_to_search (Preview) Cet indicateur de base de données vous permet de [gérer automatiquement le nombre de feuilles ou de partitions à rechercher](/alloydb/omni/16.3.0/docs/ai/maintain-vector-indexes#manage-leave-to-search-split-partitions). Définissez cette valeur sur le nombre actuel de partitions. Par exemple, pour rechercher 1 % du nombre actuel de partitions, définissez cette valeur sur 1.

Vous pouvez définir ce paramètre sur n'importe quelle valeur comprise entre 0 et 100. La valeur par défaut est 0, ce qui désactive ce paramètre et utilise `scann.num_leaves_to_search` pour calculer le nombre de feuilles à rechercher. Ce paramètre est désactivé par défaut.
Durée d'exécution de la requête 
(facultatif)
scann.num_leaves_to_search Cet indicateur de base de données contrôle le nombre absolu de feuilles ou de partitions à rechercher, ce qui vous permet de trouver un équilibre entre le rappel et les RPS. La valeur par défaut est de 1 % de la valeur définie dans num_leaves.

Une valeur plus élevée entraînera un meilleur rappel, mais RPS plus faible. De même, une valeur plus faible entraînera un rappel plus faible, mais un RPS plus élevé.
Durée d'exécution de la requête 
(facultatif)
scann.pre_reordering_num_neighbors Lorsqu'il est défini, l'indicateur de base de données spécifie le nombre de voisins candidats à prendre en compte lors des étapes de réorganisation après que la recherche initiale a identifié un ensemble de candidats. Définissez ce paramètre sur une valeur supérieure au nombre de voisins que vous souhaitez que la requête renvoie.

Une valeur plus élevée améliore le rappel, mais réduit le RPS. Définissez cette valeur sur 0 pour désactiver le réordonnancement. La valeur par défaut est 0 si l'ACP n'est pas activée lors de la création de l'index. Sinon, la valeur par défaut est 50 x K, où K correspond à la limite spécifiée dans la requête.
Durée d'exécution de la requête 
(facultatif)
scann.num_search_threads Nombre de threads de recherche pour la recherche multithread. Cela peut aider à réduire la latence des requêtes uniques en utilisant plusieurs threads pour la recherche ScaNN ANN dans les applications sensibles à la latence. Ce paramètre n'améliore pas la latence des requêtes individuelles si la base de données est déjà liée au processeur. La valeur par défaut est 2. Durée d'exécution de la requête 
(facultatif)

Étapes suivantes