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 als automatisch oder manuell abgestimmten
Index. Die verfügbaren Optionen sind:
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.
Die verfügbaren Werte sind:
Wenn Sie |
Indexerstellung (optional) |
num_leaves |
Anzahl der Partitionen, die auf diesen Index angewendet werden sollen. Der Maximalwert 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 abgestimmte 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), eine Technik zur Dimensionsreduktion, 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) |
scann.pct_leaves_to_search |
Verwaltet automatisch die Anzahl der Partitionen, die von einem Vektorindex durchsucht werden. Weitere Informationen finden Sie unter Prozentsatz der Partitionen durchsuchen. | |
scann.num_leaves_to_search
|
Absolute Anzahl der zu durchsuchenden Partitionen. So können Sie ein Gleichgewicht zwischen
Abfrage-Recall und QPS finden. Der Standardwert beträgt 1% von
Höhere Werte führen zu einem besseren Abfrage-Recall, aber zu niedrigeren QPS. Ähnlich 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 während der Neusortierungsphasen 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 die Abfrage zurückgeben soll. Höhere Werte führen zu einem besseren Recall, aber zu niedrigeren QPS.
Der Standardwert ist |
Abfragelaufzeit (optional) |
scann.num_search_threads |
Die Anzahl der Suchthreads für die Suche mit mehreren Threads. 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) |
|
Wenn der Wert auf relaxed_order gesetzt ist, wird mit dem Datenbank-Flag ein unzureichender Recall behoben. 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 aktiviertem 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. Sie verhindert, dass die Suche zu viele Ergebnisse liefert, was die Leistung erheblich beeinträchtigen kann. Diese Einstellung gilt, 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) |