Documentation de référence sur l'index ScaNN AlloyDB Omni

Sélectionnez une version de la documentation :

Cette page fournit une documentation de référence détaillée sur les paramètres de réglage disponibles pour les index ScaNN (Scalable Nearest Neighbors) dans AlloyDB Omni.

Pour suivre un tutoriel détaillé sur l'implémentation de la recherche vectorielle du début à la fin, consultez le guide Effectuer une recherche vectorielle.

Paramètres de réglage

Les paramètres d'index et de requête suivants sont utilisés pour trouver le bon équilibre entre rappel et requêtes par seconde (RPS).

Paramètre de réglage Description Type d'option
mode Définit l'index ScaNN comme un index réglé automatiquement ou manuellement. Les options disponibles sont les suivantes :
  • AUTO : index réglé automatiquement
  • MANUAL : index réglé manuellement

Pour en savoir plus, consultez Créer un index ScaNN.

Création d'index

(facultatif)

max_num_levels Nombre maximal de niveaux de centroïdes de l'arborescence de clustering en K-moyennes. Pour savoir comment définir cette valeur, consultez Régler un index ScaNN.

Les valeurs disponibles sont les suivantes :

  • 1 : index ScaNN à deux niveaux
  • 2 : index ScaNN à trois niveaux
  • 3 : index ScaNN à quatre niveaux (preview)

Si vous définissez max_num_levels sur 3, vous devez également définir scann.max_allowed_num_levels sur 3. Pour en savoir plus, consultez Bonnes pratiques pour ajuster les index ScaNN.

Création d'index

(facultatif)

num_leaves Nombre de partitions à appliquer à cet index. Pour PostgreSQL 17 et versions ultérieures, la valeur maximale est 104857600. Pour PostgreSQL 16 et les versions antérieures, la valeur maximale est 30000000. Pour en savoir plus sur le choix de cette valeur, consultez Ajuster un index ScaNN et Bonnes pratiques pour ajuster les index ScaNN.

Création d'index

(obligatoire pour les index ajustés manuellement)

quantizer Type de quantificateur à utiliser pour l'arborescence k-moyennes. 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 valeur 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)
auto_maintenance Gérez automatiquement un index ScaNN de sorte que, à mesure que votre ensemble de données s'agrandit, AlloyDB Omni analyse et mette à jour les centroïdes, et divise les grandes partitions aberrantes. Cela améliore automatiquement les RPS et les résultats de recherche. Pour en savoir plus, consultez Gérer automatiquement les index.

Création d'index

(facultatif)

Gérez automatiquement le nombre de partitions recherchées par un index vectoriel. Pour en savoir plus, consultez Pourcentage de partitions recherchées.

Nombre absolu de partitions à rechercher. Cela vous permet d'obtenir un compromis entre le rappel de requête et le RPS. La valeur par défaut est de 1 % de num_leaves.

Des valeurs plus élevées améliorent le rappel des requêtes, mais réduisent le RPS. De même, des valeurs plus faibles entraînent un rappel de requête moins bon, mais un meilleur RPS.

Environnement d'exécution de requêtes

(facultatif)

scann.pre_reordering_num_neighbors

Spécifie le nombre de voisins candidats à prendre en compte lors des étapes de réorganisation une fois 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. Des valeurs plus élevées améliorent le rappel, mais réduisent le RPS.

La valeur par défaut est 0, ce qui désactive la réorganisation. Si l'ACP est activée lors de la création de l'index, la valeur par défaut est 50 x K, où K correspond à la valeur "LIMIT" spécifiée dans la requête.

Environnement d'exécution de requêtes

(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, car plusieurs threads sont utilisés 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)

scann.satisfy_limit (preview)

Lorsqu'il est défini sur relaxed_order, l'indicateur de base de données corrige un rappel insuffisant. Un rappel insuffisant peut se produire lorsque le rappel observé d'une requête est inférieur au rappel cible, ce qui est plus probable lors de l'utilisation de filtres. Ce paramètre permet d'atteindre le rappel cible en permettant à l'analyse vectorielle de continuer à rechercher au-delà de la limite num_leaves_to_search jusqu'à ce qu'un nombre suffisant de résultats soit trouvé. Durée d'exécution de la requête 
(facultatif)
Cet indicateur de base de données définit une limite supérieure pour le pourcentage de feuilles totales pouvant être visitées pour les requêtes que vous exécutez avec scann.satisfy_limit activé. Il s'agit du seul GUC de limite supérieure disponible. Il s'applique aux modes de recherche automatique et manuel. Cela empêche la recherche de dépasser la limite, ce qui pourrait dégrader considérablement les performances. Cela s'applique lorsque scann.satisfy_limit est activé.
Vous pouvez définir ce paramètre sur n'importe quelle valeur comprise entre 0 et 100. La valeur par défaut est 15%. Cette valeur par défaut est basée sur le principe que si une recherche doit examiner plus de 15 % des feuilles, le filtre est probablement suffisamment sélectif pour que la recherche du voisin le plus proche approximative (ANN) ne présente pas d'avantage, ce qui fait du préfiltrage des k plus proches voisins (KNN) un choix plus approprié.
Durée d'exécution de la requête 
(facultatif)

Étapes suivantes