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_inline_filtering
Permet la prise en charge du filtrage intégré, qui interroge vos données et applique des filtres directement dans une opération de recherche de similarité vectorielle. Ces requêtes de similarité vectorielle utilisent des filtres sur les mêmes tables de base de données et effectuent une évaluation complète des filtres lors du calcul de la distance pour l'identification des voisins les plus proches. Cette option est désactivée par défaut.
Pour activer le filtrage intégré, définissez ce paramètre sur true. Si vous constatez une baisse des performances, définissez la valeur sur false.
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.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.
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/09/04 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Difficile à comprendre","hardToUnderstand","thumb-down"],["Informations ou exemple de code incorrects","incorrectInformationOrSampleCode","thumb-down"],["Il n'y a pas l'information/les exemples dont j'ai besoin","missingTheInformationSamplesINeed","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 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)."]]