Die folgenden Indexparameter und Datenbank-Flags werden zusammen verwendet, um das richtige Gleichgewicht zwischen Recall und QPS zu finden.
Abstimmungsparameter
Beschreibung
Optionstyp
max_num_levels
Die maximale Anzahl von Zentroid-Ebenen des K-Means-Clustering-Baums.
Index für zweistufigen Baum: Standardmäßig auf 1 für einen zweistufigen Baum festgelegt (1 Schwerpunktebene + unterste Blattebene).
Baumindex mit drei Ebenen: Standardmäßig auf 2 für einen Baum mit drei Ebenen festgelegt (2 Schwerpunktebenen + unterste Blattebene)
Legen Sie den Wert auf 2 fest, wenn die Anzahl der Vektorzeilen 100 Millionen Zeilen überschreitet.
Legen Sie den Wert auf 1 fest, wenn die Anzahl der Vektorzeilen weniger als 10 Millionen beträgt.
Legen Sie den Wert auf 1 oder 2 fest, wenn die Anzahl der Vektorzeilen zwischen 10 Millionen und 100 Millionen liegt, um die Indexerstellungszeit (auf 2 festgelegt) oder den Such-Recall (auf 1 festgelegt) zu optimieren.
Index erstellen (optional)
num_leaves
Die Anzahl der Partitionen, die auf diesen Index angewendet werden sollen. Die Anzahl der Partitionen, die Sie beim Erstellen eines Index anwenden, wirkt sich auf die Indexleistung aus. Wenn Sie die Anzahl der Partitionen für eine bestimmte Anzahl von Vektoren erhöhen, erstellen Sie einen detaillierteren Index, der den Recall und die Abfrageleistung verbessert. Dies führt jedoch zu längeren Indexerstellungszeiten.
Da dreistufige Bäume schneller erstellt werden als zweistufige Bäume, können Sie den Wert von num_leaves_value beim Erstellen eines dreistufigen Baumindex erhöhen, um eine bessere Leistung zu erzielen.
Index mit zwei Ebenen: Legen Sie diesen Wert auf einen beliebigen Wert zwischen 1 und 1048576 fest.
Für einen Index, bei dem ein Gleichgewicht zwischen schnellem Indexaufbau und guter Suchleistung besteht, verwenden Sie sqrt(ROWS) als Ausgangspunkt, wobei ROWS die Anzahl der Vektorzeilen ist. Die Anzahl der Vektoren in jeder Partition wird mit ROWS/sqrt(ROWS) = sqrt(ROWS).
berechnet. Da ein Index mit zweistufigem Baum für ein Dataset mit weniger als 10 Millionen Vektorzeilen erstellt werden kann, enthält jede Partition weniger als (sqrt(10M)) Vektoren, also 3200 Vektoren. Für eine optimale Qualität der Vektorsuche empfiehlt es sich, die Anzahl der Vektoren in jeder Partition zu minimieren. Die empfohlene Partitionsgröße beträgt etwa 100 Vektoren pro Partition. Legen Sie num_leaves also auf ROWS/100 fest. Wenn Sie 10 Millionen Vektoren haben,legen Sie num_leaves auf 100.000 fest.
Index mit drei Ebenen: Legen Sie diesen Wert auf einen beliebigen Wert zwischen 1 und 1048576 fest.
Wenn Sie sich nicht sicher sind, welchen Wert Sie auswählen sollen, verwenden Sie power(ROWS, 2/3) als Ausgangspunkt. Dabei ist ROWS die Anzahl der Vektorzeilen. Die Anzahl der Vektoren in jeder Partition wird mit ROWS/power(ROWS, 2/3) = power(ROWS, 1/3).
berechnet. Da ein dreistufiger Baumindex für ein Dataset mit mehr als 100 Millionen Vektorzeilen erstellt werden kann, enthält jede Partition mehr als (power(100M, 1/3)) Vektoren, also 465 Vektoren. Für eine optimale Qualität der Vektorsuche empfiehlt es sich, die Anzahl der Vektoren in jeder Partition zu minimieren. Die empfohlene Partitionsgröße beträgt etwa 100 Vektoren pro Partition. Legen Sie num_leaves also auf ROWS/100 fest. Wenn Sie 100 Millionen Vektoren haben, legen Sie num_leaves auf 1 Million fest.
Indexerstellung (erforderlich)
quantizer
Der Typ des Quantizers, den Sie für den K-Means-Baum verwenden möchten. Der Standardwert ist SQ8, was eine bessere Abfrageleistung bei minimalem Recall-Verlust (in der Regel weniger als 1–2%) bietet.
Legen Sie FLAT fest, wenn ein Recall von mindestens 99% erforderlich ist.
Index erstellen (optional)
scann.enable_pca
Aktiviert die Hauptkomponentenanalyse (Principal Component Analysis, PCA). Das ist eine Technik zur Dimensionsreduzierung, mit der die Größe des Einbettungsvektors automatisch reduziert wird, wenn möglich. Diese Option ist standardmäßig aktiviert.
Setzen Sie sie auf false, wenn Sie eine Verschlechterung des Erinnerungsvermögens feststellen.
Mit diesem Datenbankflag können Sie [die Anzahl der zu durchsuchenden Blätter oder Partitionen automatisch verwalten](/alloydb/omni/15.7.1/docs/ai/maintain-vector-indexes#manage-leave-to-search-split-partitions). Legen Sie diesen Wert auf die aktuelle Anzahl der Partitionen fest. Wenn Sie beispielsweise 1% der aktuellen Anzahl von Partitionen durchsuchen möchten, legen Sie diesen Wert auf 1 fest.
Sie können diesen Parameter auf einen beliebigen Wert zwischen 0 und 100 festlegen. Der Standardwert ist 0. In diesem Fall wird der Parameter deaktiviert und die Anzahl der zu durchsuchenden Blätter wird mit `scann.num_leaves_to_search` berechnet. Der Parameter ist standardmäßig deaktiviert.
Laufzeit der Abfrage (optional)
scann.num_leaves_to_search
Dieses Datenbankflag steuert die absolute Anzahl der Blätter oder Partitionen, die durchsucht werden sollen. So können Sie ein Gleichgewicht zwischen Recall und QPS herstellen. Der Standardwert ist 1% des in num_leaves festgelegten Werts.
Ein höherer Wert führt zu einem besseren Recall, aber zu einem niedrigeren QPS-Wert. Ein niedrigerer Wert führt zu einem geringeren Recall, aber zu einer höheren QPS.
Laufzeit der Abfrage (optional)
scann.pre_reordering_num_neighbors
Das Datenbank-Flag gibt an, wie viele Kandidatennachbarn in den Neusortierungsphasen berücksichtigt werden sollen, nachdem bei der ersten Suche eine Reihe von Kandidaten ermittelt wurde. Legen Sie diesen Parameter auf einen Wert fest, der höher ist als die Anzahl der Nachbarn, die von der Anfrage zurückgegeben werden sollen.
Ein höherer Wert führt zu einem besseren Recall, aber zu einem niedrigeren QPS. Setzen Sie diesen Wert auf 0, um die Neusortierung zu deaktivieren. Der Standardwert ist 0, wenn die Hauptkomponentenanalyse bei der Indexerstellung nicht aktiviert ist. Andernfalls ist der Standardwert 50 x K, wobei K das in der Abfrage angegebene LIMIT ist.
Laufzeit der Abfrage (optional)
scann.num_search_threads
Die Anzahl der Sucher-Threads für die Suche mit mehreren Threads. So lässt sich die Latenz einzelner Anfragen verringern, indem in latenzsensitiven Anwendungen mehr als ein Thread für die ScaNN-ANN-Suche verwendet wird. Diese Einstellung verbessert die Latenz einzelner Abfragen nicht, wenn die Datenbank bereits CPU-gebunden ist. Der Standardwert ist 2.
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Schwer verständlich","hardToUnderstand","thumb-down"],["Informationen oder Beispielcode falsch","incorrectInformationOrSampleCode","thumb-down"],["Benötigte Informationen/Beispiele nicht gefunden","missingTheInformationSamplesINeed","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-09-04 (UTC)."],[[["\u003cp\u003eThis page provides detailed reference information regarding the tuning parameters for the ScaNN Index.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003emax_num_levels\u003c/code\u003e, \u003ccode\u003enum_leaves\u003c/code\u003e, and \u003ccode\u003equantizer\u003c/code\u003e parameters are used during index creation and can be adjusted for optimal performance based on the size of the vector dataset.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003escann.enable_pca\u003c/code\u003e parameter, enabled by default, uses Principal Component Analysis to reduce embedding size, but can be disabled if recall deteriorates.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003escann.num_leaves_to_search\u003c/code\u003e, \u003ccode\u003escann.pre_reordering_num_neighbors\u003c/code\u003e, and \u003ccode\u003escann.num_search_threads\u003c/code\u003e are query runtime parameters that impact the trade-off between recall and QPS, and can be adjusted based on application requirements.\u003c/p\u003e\n"],["\u003cp\u003eAdjusting the \u003ccode\u003enum_leaves\u003c/code\u003e parameter when creating an index can create a more fine-grained index, improving recall and query performance at the cost of longer index creation times.\u003c/p\u003e\n"]]],[],null,["# ScaNN index reference\n\nSelect a documentation version: 15.7.1keyboard_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)."]]