Die google_ml_integration
-Erweiterung enthält Einbettungsfunktionen in zwei verschiedenen Namespaces: public
und google_ml
. Auf dieser Seite wird beschrieben, wie Sie Texteinbettungen mit Funktionen aus diesen Namespaces generieren.
Die Funktion embedding()
im Schema public
kann mit jedem Vertex AI-Einbettungsmodell verwendet werden, ohne den Endpunkt zu registrieren. Wenn Sie benutzerdefinierte Informationen wie den Aufgabentyp übergeben möchten, registrieren Sie den Endpunkt und verwenden Sie dann die Funktion google_ml.embedding()
im google_ml
-Schema. Weitere Informationen zum Registrieren eines Endpunkts finden Sie unter Modell registrieren.
Funktionsweise von Einbettungen
Angenommen, Sie haben eine Datenbank, die auf AlloyDB ausgeführt wird und die folgenden Merkmale aufweist:
Die Datenbank enthält eine Tabelle,
items
. Jede Zeile in dieser Tabelle beschreibt einen Artikel, den Ihr Unternehmen verkauft.Die Tabelle
items
enthält die Spaltecomplaints
. In dieserTEXT
-Spalte werden Käuferbeschwerden gespeichert, die zu den einzelnen Artikeln protokolliert werden.Die Datenbank kann in den Vertex AI Model Garden eingebunden werden und ermöglicht so Zugriff auf die
gemini-embedding-001
-Modelle.
In dieser Datenbank werden zwar Beschwerden über Artikel gespeichert, diese Beschwerden werden jedoch als Nur-Text gespeichert, was die Abfrage erschwert. Wenn Sie beispielsweise sehen möchten, welche Artikel die meisten Beschwerden von Kunden haben, die eine falsche Farbversion erhalten haben, können Sie normale SQL-Abfragen auf der Tabelle ausführen und nach verschiedenen Schlüsselwortübereinstimmungen suchen. Bei diesem Ansatz werden jedoch nur Zeilen berücksichtigt, die genau diese Keywords enthalten.
Eine einfache SQL-Abfrage wie SELECT * FROM item WHERE complaints LIKE
"%wrong color%"
gibt beispielsweise keine Zeile zurück, in der das Feld complaints
nur
The picture shows a blue one, but the one I received was red
enthält.
SQL-Abfragen mit LLM-basierten Einbettungen können dabei helfen, semantisch ähnliche Antworten auf solche Anfragen zurückzugeben. Wenn Sie Einbettungen anwenden, können Sie die Tabelle in diesem Beispiel nach Elementen abfragen, deren Beschwerden eine semantische Ähnlichkeit mit einem bestimmten Text-Prompt haben, beispielsweise It was the
wrong color
.
Wählen Sie eines der folgenden Schemas aus, um Einbettungen zu generieren.
Hinweise
So lassen Sie Einbettungen von AlloyDB generieren:
- Stellen Sie mit
psql
oder AlloyDB for PostgreSQL Studio alspostgres
-Nutzer eine Verbindung zu Ihrer Datenbank her. - Prüfen Sie, ob die Erweiterung
google_ml_integration
installiert ist. - Prüfen Sie, ob das Flag
google_ml_integration.enable_model_support
aufon
gesetzt ist. - Bevor Sie Einbettungen aus einer AlloyDB-Datenbank generieren können, müssen Sie AlloyDB für die Verwendung mit Vertex AI konfigurieren. Weitere Informationen finden Sie unter Datenbank in Vertex AI einbinden.
Datenbankbenutzern die Berechtigung zum Ausführen der Einbettungsfunktion zum Generieren von Einbettungen erteilen:
\c DB_NAME; GRANT EXECUTE ON FUNCTION google_ml.embedding TO USER_NAME;
Ersetzen Sie Folgendes:
DB_NAME: der Name der Datenbank, für die die Berechtigungen gewährt werden sollen
USER_NAME: der Name des Nutzers, dem die Berechtigungen erteilt werden sollen
Einbettungen generieren
Verwenden Sie die SQL-Funktion google_ml.embedding()
, um Texteinbettungsmodelle aufzurufen.
Führen Sie die folgende Abfrage aus, um das Modell aufzurufen und Einbettungen zu generieren:
SELECT
google_ml.embedding(
model_id => 'MODEL_ID',
content => 'CONTENT');
Ersetzen Sie Folgendes:
MODEL_ID
: die qualifizierte Modell-ID, z. B.gemini-embedding-001
.CONTENT
: Der Text, der in eine Vektoreinbettung übersetzt werden soll.
Beispiele für das Generieren von Einbettungen
In diesem Abschnitt finden Sie einige Beispiele für das Generieren von Einbettungen mit einem registrierten Modellendpunkt.
Gemini-Einbettungsmodelle
Führen Sie die folgende Anweisung aus, um Einbettungen für einen registrierten gemini-embedding-001
-Modellendpunkt zu generieren:
SELECT
google_ml.embedding(
model_id => 'gemini-embedding-001',
content => 'AlloyDB is a managed, cloud-hosted SQL database service');
Wenn sich Ihr AlloyDB-Cluster und der Vertex AI-Endpunkt in verschiedenen Projekten befinden, legen Sie model_id
auf den qualifizierten Pfad des Endpunkts fest, z. B. projects/PROJECT_ID/locations/REGION_ID/publishers/google/models/gemini-embedding-001
.
Führen Sie die folgende Anweisung aus, um Einbettungen für einen registrierten gemini-embedding-001
-Modellendpunkt zu generieren:
SELECT
google_ml.embedding(
model_id => 'gemini-embedding-001',
content => 'AlloyDB is a managed, cloud-hosted SQL database service');
OpenAI-Einbettungsmodell
Um Einbettungen für einen registrierten text-embedding-ada-002
-Modellendpunkt von OpenAI zu generieren, führen Sie die folgende Anweisung aus:
SELECT
google_ml.embedding(
model_id => 'text-embedding-ada-002',
content => 'e-mail spam');
Führen Sie die folgende Anweisung aus, um Einbettungen für registrierte text-embedding-3-small
- oder text-embedding-3-large
-Modellendpunkte von OpenAI zu generieren:
SELECT
google_ml.embedding(
model_id => 'text-embedding-3-small',
content => 'Vector embeddings in AI');
Nächste Schritte
- Suchen nach Vektorähnlichkeiten durchführen
- Informationen zum Erstellen eines Smart Shopping Assistant mit AlloyDB, pgvector und der Modellendpunktverwaltung
- Indizes erstellen und Vektoren abfragen
- Beispiel für einen Einbettungsworkflow