Referenz zum ScaNN-Index

Wählen Sie eine Dokumentenversion 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.

Parameter für die Abstimmung Beschreibung Optionstyp
max_num_levels Die maximale Anzahl von Zentroid-Ebenen des K-Means-Clustering-Baums.
  • Zweistufiger Baumindex: Standardmäßig auf 1 für einen zweistufigen Baum festgelegt (1 Zentroid-Ebene + untere Blattebene).
  • Baumindex mit drei Ebenen: Standardmäßig auf 2 für einen dreistufigen Baum festgelegt (2 Zentroid-Ebenen + untere Blattebene).
  • Legen Sie den Wert auf 2 fest, wenn die Anzahl der Vektorzeilen 100 Millionen übersteigt.
  • 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. So können Sie die Index-Build-Dauer optimieren (auf 2 festlegen) oder den Such-Recall optimieren (auf 1 festlegen).
Indexerstellung
(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 feineren 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 erhöhen, wenn Sie einen dreistufigen Baumindex erstellen, um eine bessere Leistung zu erzielen.
  • Zweistufiger Index: Legen Sie für diesen Wert einen beliebigen Wert zwischen 1 und 1048576 fest.

    Für einen Index, der eine schnelle Indexerstellung und eine gute Suchleistung bietet, verwenden Sie sqrt(ROWS) als Ausgangspunkt. ROWS ist die Anzahl der Vektorzeilen. Die Anzahl der Vektoren in jeder Partition wird mit der folgenden Formel berechnet:
    ROWS/sqrt(ROWS) = sqrt(ROWS).

    Da ein zweistufiger Baumindex 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 Vektorsuchqualität 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.
  • Dreistufiger Index: Legen Sie für diesen Wert einen beliebigen Wert zwischen 1 und 1048576 fest.

    Wenn Sie sich bei der Auswahl des genauen Werts nicht sicher sind, verwenden Sie power(ROWS, 2/3) als Ausgangspunkt. ROWS ist die Anzahl der Vektorzeilen. Die Anzahl der Vektoren in jeder Partition wird mit der folgenden Formel berechnet:
    ROWS/power(ROWS, 2/3) = power(ROWS, 1/3).

    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 Vektorsuchqualität 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 Quantisierers, den Sie für den K-Means-Baum verwenden möchten. Der Standardwert ist auf SQ8 festgelegt, was eine bessere Abfrageleistung bei minimalem Recall-Verlust (in der Regel weniger als 1–2%) bietet.

Legen Sie ihn auf FLAT fest, wenn ein Recall von mindestens 99% erforderlich ist.
Indexerstellung
(optional)
scann.enable_pca Aktiviert die Hauptkomponentenanalyse (Principal Component Analysis, PCA). Dies ist eine Technik zur Dimensionsreduzierung, mit der die Größe der Einbettung nach Möglichkeit automatisch reduziert wird. Diese Option ist standardmäßig aktiviert.

Legen Sie den Wert auf false fest, wenn Sie eine Verschlechterung des Recalls feststellen.
Indexerstellung
(optional)
scann.pct_leaves_to_search (Preview) Mit diesem Datenbank-Flag können Sie [die Anzahl der zu durchsuchenden Blätter oder Partitionen automatisch verwalten](/alloydb/omni/containers/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 der Partitionen durchsuchen möchten, legen Sie diesen Wert auf 1 fest.

Sie können für diesen Parameter einen beliebigen Wert zwischen 0 und 100 festlegen. Der Standardwert ist 0. Dadurch wird dieser Parameter deaktiviert und die Anzahl der zu durchsuchenden Blätter wird mit `scann.num_leaves_to_search` berechnet. Der Parameter ist standardmäßig deaktiviert.
Abfragelaufzeit
(optional)
scann.num_leaves_to_search Mit diesem Datenbank-Flag wird die absolute Anzahl der zu durchsuchenden Blätter oder Partitionen gesteuert. So können Sie ein Gleichgewicht zwischen Recall und QPS finden. Der Standardwert beträgt 1% des in num_leaves festgelegten Werts.

Ein höherer Wert führt zu einem besseren Recall, aber zu einer niedrigeren QPS. Entsprechend führt ein niedrigerer Wert zu einem niedrigeren Recall, aber zu einer höheren QPS.
Abfragelaufzeit
(optional)
scann.pre_reordering_num_neighbors Wenn dieses Datenbank-Flag festgelegt ist, gibt es die Anzahl der Kandidatennachbarn an, die während der Neuordnung berücksichtigt werden sollen, nachdem bei der ersten Suche eine Reihe von Kandidaten ermittelt wurde. Legen Sie für diesen Parameter einen Wert fest, der höher ist als die Anzahl der Nachbarn, die von der Abfrage zurückgegeben werden sollen.

Ein höherer Wert führt zu einem besseren Recall, aber zu einer niedrigeren QPS. Legen Sie diesen Wert auf 0 fest, um die Neuordnung zu deaktivieren. Der Standardwert ist 0, wenn die PCA während der Indexerstellung nicht aktiviert ist. Andernfalls ist der Standardwert 50 x K, wobei K das in der Abfrage angegebene LIMIT ist.
Abfragelaufzeit
(optional)
scann.num_search_threads Die Anzahl der Sucher-Threads für die Suche mit mehreren Threads. Dies kann die Latenz einzelner Abfragen verringern, indem mehr als ein Thread für die ScaNN-ANN-Suche in latenzempfindlichen Anwendungen verwendet wird. Diese Einstellung verbessert die Latenz einzelner Abfragen nicht, wenn die Datenbank bereits CPU-gebunden ist. Der Standardwert ist 2. Abfragelaufzeit
(optional)

Nächste Schritte