Eine Schritt-für-Schritt-Anleitung zur vollständigen Implementierung der Vektorsuche finden Sie im Leitfaden zum Ausführen einer Vektorsuche.
Parameter für die Abstimmung
Mit den folgenden Index- und Suchparametern wird das richtige Gleichgewicht zwischen Recall und Abfragen pro Sekunde (QPS) gefunden.
| 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 von der Abfrage zurückgegeben werden sollen. 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 Sucher-Threads 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) |
|
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 wird der Ziel-Recall erreicht, 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 KNN-Vorfilterung (K-Nearest Neighbor) eine bessere Wahl ist. |
Abfragelaufzeit (optional) |