AlloyDB Omni-Referenz für ScaNN-Indexe

Wählen Sie eine Dokumentationsversion aus:

Auf dieser Seite finden Sie eine detaillierte Referenz zu den Abstimmungsparametern, die für ScaNN-Indexe (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.

Abstimmungsparameter Beschreibung Optionstyp
mode Definiert den ScaNN-Index entweder als automatisch oder manuell abgestimmten 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 im K-Means-Clustering-Baum. Informationen zum Festlegen dieses Werts finden Sie unter ScaNN-Index abstimmen.

Folgende Werte sind verfügbar:

  • 1: Zweistufiger ScaNN-Index
  • 2: Dreistufiger ScaNN-Index
  • 3: Vierstufiger ScaNN-Index (Vorabversion)

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. Für PostgreSQL 17 und höher ist der Höchstwert 104857600. Für PostgreSQL 16 und niedriger ist der Höchstwert 30000000. Weitere Informationen zur Auswahl dieses Werts finden Sie unter ScaNN-Index abstimmen und Best Practices für die Abstimmung von ScaNN-Indexen.

Indexerstellung

(erforderlich für manuell abgestimmte Indexe)

quantizer Der Typ des Quantisierers, den Sie für den K-Means-Baum verwenden möchten. Der Standardwert ist auf SQ8 festgelegt. Dies bietet eine bessere Abfrageleistung bei minimalem Recall-Verlust (normalerweise weniger als 1–2 %).

Legen Sie den Wert auf FLAT fest, wenn ein Recall von 99 % oder höher erforderlich ist.
Index erstellen
(optional)
scann.enable_pca Aktiviert die Hauptkomponentenanalyse (Principal Component Analysis, PCA), 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.
Index erstellen
(optional)
auto_maintenance ScaNN-Index automatisch verwalten, damit AlloyDB Omni bei wachsendem Dataset Zentroiden analysiert und aktualisiert und große Ausreißerpartitionen aufteilt. Dadurch werden die Abfragen pro Sekunde und die Suchergebnisse automatisch verbessert. Weitere Informationen finden Sie unter Indexe automatisch verwalten.

Indexerstellung

(optional)

Die Anzahl der Partitionen, die ein Vektorindex durchsucht, automatisch verwalten. Weitere Informationen finden Sie unter Suchprozentsatz von Partitionen.

Absolute Anzahl der zu durchsuchenden Partitionen. So können Sie einen Kompromiss zwischen Abfrage-Recall und Abfragen pro Sekunde eingehen. Der Standardwert ist 1 % von num_leaves.

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

Abfragelaufzeit

(optional)

scann.pre_reordering_num_neighbors

Gibt die Anzahl der Nachbarkandidaten an, die während der Neusortierungsphasen berücksichtigt werden sollen, nachdem bei der ersten Suche eine Reihe von Kandidaten gefunden 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. Höhere Werte führen zu einem besseren Recall, aber zu einer niedrigeren QPS.

Der Standardwert ist 0, wodurch die Neuanordnung deaktiviert wird. Wenn PCA während 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 Multithread-Suche. Dies kann dazu beitragen, die Latenz einzelner Abfragen zu reduzieren, 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 (Vorabversion)

Wenn das Datenbank-Flag auf relaxed_order gesetzt ist, wird ein unzureichender Recall behoben. Ein unzureichender Recall kann auftreten, wenn der beobachtete Recall einer Abfrage unter den Ziel-Recall fällt. Dies ist wahrscheinlicher, wenn Filter verwendet werden. Mit dieser Einstellung können Sie den Ziel-Recall erreichen, da der Vektorscan über das Limit von num_leaves_to_search hinaus fortgesetzt wird, bis eine ausreichende Anzahl von Ergebnissen gefunden wurde. Abfragelaufzeit
(optional)
Dieses Datenbank-Flag legt eine Obergrenze für den Prozentsatz der gesamten Blätter fest, die für Abfragen besucht werden können, die Sie mit aktiviertem scann.satisfy_limit ausführen. Dies ist die einzige verfügbare GUC-Obergrenze und gilt sowohl für den automatischen als auch für den manuellen Suchmodus. Dadurch wird verhindert, dass die Suche über das Ziel hinausschießt, 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 Vorfilterung die bessere Wahl.
Abfragelaufzeit
(optional)

Nächste Schritte