Mit der Vektorähnlichkeitssuche, auch bekannt als Suche nach dem nächsten Nachbarn, in AlloyDB for PostgreSQL können Sie die Zeilen in Ihrer Datenbank finden, die einem Abfragevektor semantisch am ähnlichsten sind. Nachdem Sie Einbettungen gespeichert und indexiert haben, können Sie pgvector-Operatoren und Distanzfunktionen verwenden, um Ihre AlloyDB-Datenbank nach den nächsten Nachbarn zu durchsuchen.
Weitere Informationen zum Speichern von Vektoreinbettungen und zum Erstellen eines Index finden Sie unter Vektoreinbettungen speichern und Indizes erstellen.
Ähnlichkeitssuche mit Vektoreingabe ausführen
Geben Sie für die Ähnlichkeitssuche die Tabelle, die Einbettungsspalte, die Distanzfunktion, die Zieleinbettung und die Anzahl der zurückzugebenden Zeilen an. Sie können auch die Funktion embedding() verwenden, um Text in einen Vektor zu übersetzen und den Vektor dann mit pgvector-Operatoren mit gespeicherten Einbettungen zu vergleichen.
Wenn Sie die semantisch nächsten Nachbarn für einen Einbettungsvektor finden möchten, können Sie die folgende Beispielabfrage ausführen. Dabei legen Sie dieselbe Distanzfunktion fest, die Sie beim Erstellen des Index verwendet haben.
SELECT * FROM TABLE
ORDER BY EMBEDDING_COLUMN DISTANCE_FUNCTION_QUERY ['EMBEDDING']
LIMIT ROW_COUNT
Ersetzen Sie Folgendes:
TABLE: Die Tabelle, die die Einbettung enthält, mit der der Text verglichen werden soll.EMBEDDING_COLUMN: Die Spalte mit den gespeicherten Einbettungen.DISTANCE_FUNCTION_QUERY: Die Distanzfunktion, die für diese Abfrage verwendet werden soll. Wählen Sie je nach der beim Erstellen des Index verwendeten Distanzfunktion eine der folgenden Optionen aus:L2-Distanz:
<->Inneres Produkt:
<#>Kosinus-Distanz:
<=>
EMBEDDING: Der Einbettungsvektor, für den Sie die nächsten gespeicherten semantischen Nachbarn finden möchten.ROW_COUNT: Die Anzahl der zurückzugebenden Zeilen.Geben Sie
1an, wenn Sie nur das beste Ergebnis erhalten möchten.
Weitere Beispiele hierzu finden Sie unter Abfragen.
Ähnlichkeitssuche mit pgvector und Texteingabe ausführen
Sie können auch die Funktion embedding() verwenden, um
den Text in einen Vektor zu übersetzen und die Datenbankzeilen mit den semantisch
ähnlichsten Einbettungen zu finden. Die Standarderweiterung pgvector PostgreSQL wurde
für AlloyDB angepasst und wird als vector bezeichnet. Sie wenden
den Vektor auf einen der pgvector Operatoren für die Suche nach dem nächsten Nachbarn an, z. B.
<=> für die Kosinus-Distanz.
Da embedding() ein real-Array zurückgibt, müssen Sie den
embedding()-Aufruf explizit in vector umwandeln, um diese Werte mit pgvector
-Operatoren zu verwenden.
CREATE EXTENSION IF NOT EXISTS vector;
SELECT * FROM TABLE
ORDER BY EMBEDDING_COLUMN::vector
<=> google_ml.embedding('MODEL_IDVERSION_TAG', 'TEXT')
LIMIT ROW_COUNT
Ersetzen Sie Folgendes:
MODEL_ID: Die ID des Modells, das abgefragt werden soll.Wenn Sie den Model Garden verwenden, geben Sie
text-embedding-005als Modell-ID an. Dies sind die cloudbasierten Modelle, die AlloyDB für Texteinbettungen verwenden kann. Weitere Informationen finden Sie unter Texteinbettungen.- (Optional)
VERSION_TAG: Das Versions-Tag des abzufragenden Modells. Stellen Sie dem Tag@voran.Wenn Sie eines der englischen Modelle
text-embedding-005mit der Gemini Enterprise Agent Platform verwenden, geben Sie eines der Versions-Tags an, z. B.text-embedding-005, das unter Modellversionen aufgeführt ist.Google empfiehlt dringend, immer das Versions Tag anzugeben. Wenn Sie das Versions-Tag nicht angeben, verwendet AlloyDB die neueste Modellversion, was zu unerwarteten Ergebnissen führen kann.
TABLE: Die Tabelle, die abgefragt werden soll.EMBEDDING_COLUMN: Die Spalte mit den gespeicherten Einbettungen.TEXT: Der Text, der in eine Vektoreinbettung übersetzt werden soll.ROW_COUNT: Die Anzahl der zurückzugebenden Zeilen.
Um die gefilterte KNN-Suche zu beschleunigen, können Sie die spaltenbasierte Engine von AlloyDB verwenden. Weitere Informationen finden Sie unter Gefilterte Vektorsuche beschleunigen (Vorschau) und Spaltenbasierte Engine konfigurieren.
Nächste Schritte
- Anleitung zur Vektorsuche
- Leistung von Vektorabfragen optimieren
- Messwerte für Vektorindexe
- Informationen zum Erstellen eines Smart Shopping Assistant mit AlloyDB, pgvector und der Verwaltung von Modellendpunkten.
- Erfahren Sie mehr über die Referenz zur Verwaltung von Modellendpunkten.