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:
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:
Wenn Sie |
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) |
scann.pct_leaves_to_search |
Die Anzahl der Partitionen, die ein Vektorindex durchsucht, automatisch verwalten. Weitere Informationen finden Sie unter Suchprozentsatz von Partitionen. | |
scann.num_leaves_to_search
|
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 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 |
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) |
|
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) |