Referenz zum ScaNN-Index

Wählen Sie eine Dokumentationsversion aus:

Auf dieser Seite finden Sie Referenzmaterial für den ScaNN-Index.

Parameter für die Abstimmung

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.
Index erstellen 
(optional)
scann.pct_leaves_to_search (Preview) 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. Laufzeit der Abfrage
(optional)

Nächste Schritte