Vektorindex in AlloyDB AI auswählen

Wenn Sie die richtige Vektorsuchstrategie und den richtigen Index in AlloyDB AI auswählen, können Sie die Abfragelatenz und die Suchgenauigkeit für Ihre Arbeitslast ausbalancieren. Standardmäßig verwendet AlloyDB for PostgreSQL die exakte Suche nach k-nächsten Nachbarn (k-Nearest Neighbors, KNN), um ähnliche Vektoren zu finden. Wenn Sie einen Vektorindex erstellen, verwendet AlloyDB AI die Suche nach dem ungefähren nächsten Nachbarn (Approximate Nearest Neighbor, ANN), um die Abfrageleistung im großen Maßstab zu beschleunigen. Dabei wird ein konfigurierbarer Anteil des Recalls geopfert.

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.

Wenn Sie die Leistung der KNN-Suche weiter verbessern möchten, fügen Sie die Einbettungsspalte und andere Spalten, die sich auf Ihre Abfrage beziehen, dem Spaltenspeicher in der spaltenbasierten Engine hinzu. Sie können die Spalten manuell hinzufügen oder die Spalten mithilfe der automatischen Spaltenformatierung hinzufügen.

  • Ihre Anwendung reagiert sehr empfindlich auf Accuracy und Sie benötigen die exakten engsten Übereinstimmungen.
  • Sie haben Zehntausende von Vektoren.
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.
  • Ihre Anwendung erfordert eine niedrige Latenz.
  • Sie haben mehr als 100.000 Vektoren.

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 niedrigdimensionale Daten oder riesige Datasets, die den Arbeitsspeicher überschreiten.

Skaliert gut auf 10 Milliarden Vektoren.

Bietet im Vergleich zu HNSW in Standard-PostgreSQL mehrere Vorteile:

  • Bis zu sechsmal schnellere Vektorabfragen und bis zu zehnmal schnellere gefilterte Vektorsuchabfragen
  • Bis zu 16-mal schnellere Indexerstellung
  • Bis zu 24-mal höherer Schreibdurchsatz
  • Bis zu viermal weniger Arbeitsspeicher erforderlich
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 Speicher-Cache passen.

Skaliert gut auf 10–20 Millionen Vektoren.

Der HNSW-Index in AlloyDB, der durch die spaltenorientierte pgvector-Engine beschleunigt wird, bietet bis zu 5-mal 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.

Verwenden Sie die spaltenbasierte Engine, um die gefilterte KNN-Suche zu beschleunigen.

Nächste Schritte