Auf dieser Seite werden die Strategien für die Vektorsuche in AlloyDB AI beschrieben und es wird erläutert, wann die einzelnen Strategien verwendet werden sollten. Standardmäßig verwendet AlloyDB for PostgreSQL die Suche nach k-nächsten Nachbarn (k-Nearest Neighbors, KNN), um Vektoren zu finden, die einer Anfrage ähneln. Vektorindexe implementieren eine Suchstrategie namens Approximate Nearest Neighbor (ANN). Wenn Sie einen Vektorindex erstellen, verwendet AlloyDB AI ANN, was eine bessere Leistung als KNN bietet. Wenn Sie einen Vektorindex auswählen, müssen Sie ein Gleichgewicht zwischen Abfragelatenz und Erinnerung finden.
Mit Recall wird gemessen, wie effektiv bei einer Suche alle relevanten Elemente für eine bestimmte Anfrage abgerufen werden. Angenommen, Sie haben 100 Einbettungen, die jeweils eine Entität in Ihrer Datenbank darstellen. Sie fragen Ihre Einbettungen mit einem Zielvektor ab und begrenzen die Ergebnisse auf 10. Bei einer KNN-Vektorsuche werden die 10 genauesten Vektoren mithilfe einer Brute-Force-Berechnungsmethode gefunden, was zu einem Recall von 100% führt. AlloyDB AI verwendet diese Methode standardmäßig, wenn kein Vektorsuchindex erstellt oder ausgewählt wird. Wenn Sie einen Vektorindex in AlloyDB erstellen, wird in der Regel ANN verwendet. Dabei werden Vektoren möglicherweise nach Ähnlichkeit partitioniert, um den Abruf zu beschleunigen. Daher sind die 10 Vektoren, die im vorherigen Beispiel zurückgegeben wurden, möglicherweise nicht genau die 10 Vektoren, die die geringste Distanz haben. Wenn 9 der 10 abgerufenen Vektoren die nächsten im Raum zu Ihrem Anfragevektor sind, beträgt der Recall 90%. Weitere Informationen finden Sie unter Recall von Vektorabfragen messen.
Die Abfragelatenz gibt an, wie schnell die Suchergebnisse generiert werden. Die Latenz wird beispielsweise anhand der Zeit berechnet, die für eine Suche benötigt wird, um die Vektoren zurückzugeben, nachdem Sie eine Anfrage gesendet haben.
Suchstrategie auswählen
Wenn Sie die Vektorsuche in AlloyDB ausführen, haben Sie die folgenden Suchstrategien zur Auswahl:
| Suchanzeigen-Strategie | Beschreibung | Anwendungsfälle |
| K-Nearest Neighbors (KNN) |
Ein Algorithmus, der die k-nächsten Nachbardatenpunkte für einen bestimmten Abfrage-Datenpunkt findet. Wenn Sie eine Vektorsuche ohne Indexerstellung durchführen, wird standardmäßig eine KNN-Suche ausgeführt. Um die Leistung der KNN-Suche weiter zu verbessern, fügen Sie Ihre Einbettungsspalte und andere Spalten, die sich auf Ihre Anfrage beziehen, dem Spaltenspeicher in der spaltenorientierten Engine hinzu. Sie können die Spalten manuell hinzufügen oder automatische Spaltenformatierung verwenden. |
|
| Approximate Nearest Neighbors (ANN) | Ein Algorithmus, der die ungefähr nächstgelegenen Datenpunkte findet. Bei ANN werden Datenpunkte von Bestandskunden anhand von Ähnlichkeiten in kleine Gruppen unterteilt. |
|
Die beiden gängigen ANN-basierten Vektorindextypen für AlloyDB sind ScaNN und HNSW. Anhand der folgenden Richtlinien können Sie entscheiden, welcher Indextyp für Ihren Anwendungsfall am besten geeignet ist:
| Indextyp | Geeignet für | Vorteile | Beschleunigung der spaltenbasierten Engine |
| ScaNN |
In der Regel gut geeignet für Daten mit niedriger Dimensionalität oder für umfangreiche Datasets, die den Arbeitsspeicher überschreiten. Lässt sich gut auf 10 Milliarden Vektoren skalieren. |
Bietet mehrere Vorteile gegenüber HNSW in Standard-PostgreSQL:
|
Die Vektorsuche mit dem ScaNN-Index kann durch die spaltenbasierte Engine von AlloyDB beschleunigt werden. Weitere Informationen finden Sie unter Vektorsuche mit der spaltenorientierten Engine beschleunigen. |
| HNSW |
In der Regel gut geeignet für höherdimensionale Daten, die größtenteils in den In-Memory-Cache passen. Lässt sich gut auf 10 bis 20 Millionen Vektoren skalieren. |
Das spaltenbasierte pgvector-Modul mit beschleunigtem HNSW-Index in AlloyDB bietet bis zu viermal schnellere Vektorabfragen als Standard-PostgreSQL. | Die Vektorsuche mit dem HNSW-Index kann durch die spaltenbasierte Engine von AlloyDB beschleunigt werden. Weitere Informationen finden Sie unter Vektorsuche mit der spaltenorientierten Engine beschleunigen. |
Google empfiehlt, einen Vektorindex zu erstellen, um die Leistung Ihrer Vektorsuche-Abfragen zu optimieren. Weitere Informationen zur Verwendung des ANN-Index für Ähnlichkeitssuchen finden Sie unter Indexe mit ScaNN erstellen.
Um die gefilterte KNN-Suche zu beschleunigen, verwenden Sie die spaltenbasierte Engine.
Nächste Schritte
- Indexe erstellen und Vektoren mit ScaNN abfragen
- Indexe mit HNSW erstellen
- Leistung von Vektorabfragen optimieren