AlloyDB Omni-Referenz für ScaNN-Indexe

Wählen Sie eine Dokumentationsversion aus:

Auf dieser Seite finden Sie eine detaillierte Referenz für die Tuning-Parameter, die für Scalable Nearest Neighbors-Indizes (ScaNN) in AlloyDB Omni verfügbar sind.

Eine detaillierte Anleitung zur Implementierung der Vektorsuche von Anfang bis Ende finden Sie im Leitfaden zum Ausführen einer Vektorsuche.

Parameter für die Abstimmung

Die folgenden Index- und Abfrageparameter werden verwendet, um das richtige Gleichgewicht zwischen Recall und Abfragen pro Sekunde (QPS) zu finden.

Abstimmungsparameter Beschreibung Optionstyp
mode Definiert den ScaNN-Index als automatisch oder manuell optimierten Index. Folgende Optionen sind verfügbar:
  • AUTO: automatisch optimierter Index
  • MANUAL: manuell optimierter Index

Weitere Informationen finden Sie unter ScaNN-Index erstellen.

Index erstellen

(optional)

max_num_levels Maximale Anzahl von Zentroid-Ebenen im K-Means-Clustering-Baum. Eine Anleitung zum Festlegen dieses Werts finden Sie unter ScaNN-Index abstimmen.

Folgende Werte sind verfügbar:

  • 1: ScaNN-Index mit zwei Ebenen
  • 2: ScaNN-Index mit drei Ebenen
  • 3: ScaNN-Index mit vier Ebenen (Vorschau)

Wenn Sie max_num_levels auf 3 setzen, müssen Sie auch scann.max_allowed_num_levels auf 3 setzen. Weitere Informationen finden Sie unter Best Practices für die Optimierung von ScaNN-Indexen.

Index erstellen

(optional)

num_leaves Anzahl der Partitionen, die auf diesen Index angewendet werden sollen. Der Höchstwert beträgt 30000000. Weitere Informationen zur Auswahl dieses Werts finden Sie unter ScaNN-Index abstimmen und Best Practices für die Optimierung von ScaNN-Indexen.

Index erstellen

(erforderlich für manuell optimierte Indexe)

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)
auto_maintenance ScaNN-Indexe automatisch verwalten, sodass AlloyDB Omni bei wachsenden Datasets Schwerpunkte analysiert und aktualisiert und große Ausreißerpartitionen aufteilt. Dadurch werden QPS und Suchergebnisse automatisch verbessert. Weitere Informationen finden Sie unter Indexe automatisch verwalten.

Index erstellen

(optional)

Die Anzahl der Partitionen, die von einem Vektorindex durchsucht werden, wird automatisch verwaltet. Weitere Informationen finden Sie unter Prozentsatz der Partitionen durchsuchen.

Absolute Anzahl der zu durchsuchenden Partitionen. So können Sie ein Gleichgewicht zwischen Recall und QPS erzielen. Der Standardwert ist 1% von num_leaves.

Höhere Werte führen zu einem besseren Recall bei Abfragen, aber zu einer niedrigeren QPS. Niedrigere Werte führen zu einem schlechteren Recall, aber zu einer besseren QPS.

Laufzeit der Abfrage

(optional)

scann.pre_reordering_num_neighbors

Gibt die Anzahl der in den Neusortierungsphasen zu berücksichtigenden Kandidatennachbarn an, 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. Höhere Werte führen zu einem besseren Recall, aber zu einer niedrigeren QPS.

Der Standardwert ist 0, wodurch die Neuordnung deaktiviert wird. Wenn die PCA während der Indexerstellung aktiviert ist, ist der Standardwert 50 x K, wobei K der in der Abfrage angegebene LIMIT-Wert 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)

scann.satisfy_limit (Vorabversion)

Wenn dieser Wert auf relaxed_order festgelegt ist, wird mit dem Datenbank-Flag das Problem des unzureichenden Erinnerungsvermögens behoben. Ein unzureichender Recall kann auftreten, wenn der beobachtete Recall einer Anfrage unter dem Ziel-Recall liegt. Das ist wahrscheinlicher, wenn Filter verwendet werden. Mit dieser Einstellung lässt sich der Ziel-Recall erreichen, da die Vektorsuche über das num_leaves_to_search-Limit hinaus fortgesetzt wird, bis eine ausreichende Anzahl von Ergebnissen gefunden wurde. Laufzeit der Abfrage
(optional)
Mit diesem Datenbankflag wird eine Obergrenze für den Prozentsatz der besuchten Blätter für Abfragen festgelegt, die Sie mit aktivierter scann.satisfy_limit ausführen. Dies ist die einzige verfügbare Obergrenze für GUC und sie gilt sowohl für den automatischen als auch für den manuellen Suchmodus. So wird verhindert, dass die Suche zu weit geht, was die Leistung erheblich beeinträchtigen könnte. Dies gilt, wenn scann.satisfy_limit aktiviert ist.
Sie können diesen Parameter auf einen beliebigen Wert zwischen 0 und 100 festlegen. Der Standardwert ist 15%. Dieser Standardwert basiert auf der Annahme, dass der Filter wahrscheinlich selektiv genug ist, sodass die ANN-Suche (Approximate Nearest Neighbor) keinen Vorteil bietet, wenn bei einer Suche mehr als 15% der Blätter untersucht werden müssen. In diesem Fall ist die KNN-Suche (K-Nearest Neighbor) mit Vorabfilterung die bessere Wahl.
Laufzeit der Abfrage
(optional)

Nächste Schritte