AlloyDB Omni-Referenz für ScaNN-Indexe

Wählen Sie eine Dokumentationsversion aus:

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

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

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.

Optimierungsparameter 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.

Indexerstellung

(optional)

max_num_levels Maximale Anzahl von Zentroid-Ebenen des K-Means-Clustering-Baums. 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.

Indexerstellung

(optional)

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

Indexerstellung

(für manuell optimierte Indexe 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.

Setzen Sie ihn auf FLAT, wenn ein Recall von 99% oder höher 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.

Setzen Sie sie auf false wenn Sie eine Verschlechterung des Recalls feststellen.
Indexerstellung
(optional)
auto_maintenance Wartet einen ScaNN-Index automatisch. Wenn Ihr Dataset wächst, AlloyDB Omni analysiert und aktualisiert die Zentroide und teilt große Ausreißerpartitionen auf. Dadurch werden QPS und Suchergebnisse automatisch verbessert. Weitere Informationen finden Sie unter Indexe automatisch verwalten.

Indexerstellung

(optional)

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

Absolute Anzahl der zu durchsuchenden Partitionen. So können Sie ein Gleichgewicht zwischen Abfrage-Recall und QPS finden. Der Standardwert beträgt 1% von num_leaves.

Höhere Werte führen zu einem besseren Abfrage-Recall, aber zu niedrigeren QPS. Entsprechend führen niedrigere Werte zu einem schlechteren Abfrage-Recall, aber zu besseren QPS.

Abfragelaufzeit

(optional)

scann.pre_reordering_num_neighbors

Gibt die Anzahl der Kandidatennachbarn an, die in den Phasen der Neusortierung berücksichtigt werden sollen, nachdem bei der ersten Suche eine Reihe von Kandidaten ermittelt wurde. Setzen Sie diesen Parameter auf einen Wert, der höher ist als die Anzahl der Nachbarn, die von der Abfrage zurückgegeben werden sollen. Höhere Werte führen zu einem besseren Recall, aber zu niedrigeren QPS.

Der Standardwert ist 0. Dadurch wird die Neusortierung deaktiviert. Wenn PCA bei der Indexerstellung aktiviert ist, ist der Standardwert 50 x K, wobei K das in der Abfrage angegebene LIMIT ist.

Abfragelaufzeit

(optional)

scann.num_search_threads Die Anzahl der Suchthreads für die Suche mit mehreren Threads. So kann die Latenz einzelner Abfragen reduziert werden, 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)

scann.satisfy_limit (Vorschau)

Wenn der Wert auf relaxed_order gesetzt ist, wird das Datenbank-Flag verwendet, um einen unzureichenden Recall zu beheben. Ein unzureichender Recall kann auftreten, wenn der beobachtete Recall einer Abfrage unter den Ziel-Recall fällt. Das ist wahrscheinlicher, wenn Filter verwendet werden. Mit dieser Einstellung kann der Ziel-Recall erreicht werden, indem die Vektorsuche über das Limit num_leaves_to_search hinaus fortgesetzt wird, bis eine ausreichende Anzahl von Ergebnissen gefunden wurde. Abfragelaufzeit
(optional)
Mit diesem Datenbank-Flag wird eine Obergrenze für den Prozentsatz der gesamten Blätter festgelegt, die für Abfragen besucht werden können, die mit aktivierter Option scann.satisfy_limit ausgeführt werden. Dies ist die einzige verfügbare GUC-Obergrenze und gilt sowohl für den automatischen als auch für den manuellen Suchmodus. So wird verhindert, dass die Suche zu viele Ergebnisse liefert, was die Leistung erheblich beeinträchtigen kann. Diese Option ist anwendbar, wenn scann.satisfy_limit aktiviert ist.
Sie können diesen Parameter auf einen beliebigen Wert zwischen 0 und 100 setzen. Der Standardwert ist 15%. Dieser Standardwert basiert auf der Annahme, dass der Filter wahrscheinlich selektiv genug ist, wenn bei einer Suche mehr als 15% der Blätter untersucht werden müssen. In diesem Fall bietet die ANN-Suche (Approximate Nearest Neighbor) keinen Vorteil, sodass die Vorfilterung mit KNN (K-Nearest Neighbor) eine bessere Wahl ist.
Abfragelaufzeit
(optional)

Nächste Schritte