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
Stellen Sie sich eine Datenbank vor, die auf AlloyDB Omni 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
itemsenthält die Spaltecomplaints. In dieserTEXT-Spalte werden Käuferbeschwerden gespeichert, die zu den einzelnen Artikeln in Logs erfasst werden.Die Datenbank kann in den Vertex AI Model Garden eingebunden werden und ermöglicht so Zugriff auf die englischsprachigen
gemini-embedding-001-Modelle.
In dieser Datenbank werden zwar Beschwerden zu Artikeln 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 dazu beitragen, semantisch ähnliche Antworten auf solche Anfragen zurückzugeben. Wenn Sie Einbettungen anwenden, können Sie die Tabelle in diesem Beispiel nach Elementen abfragen, in denen Beschwerden eine semantische Ähnlichkeit mit einem bestimmten Text-Prompt haben, beispielsweise It was the
wrong color.
Wählen Sie eines der folgenden Schemas für die einfache Generierung von Einbettungen aus.
Hinweis
So lassen Sie AlloyDB Omni Einbettungen generieren:
-
AlloyDB Omni als Nutzer
postgresausführen und eine Verbindung herstellen -
Prüfen Sie, ob die Erweiterung
google_ml_integrationinstalliert ist.CREATE EXTENSION IF NOT EXISTS google_ml_integration CASCADE;
Wenn Sie nicht die erforderlichen Berechtigungen haben, wenden Sie sich an Ihren Datenbankadministrator, um das Update durchzuführen. Alternativ können Sie warten, bis die neue Version automatisch in Ihrem Cluster bereitgestellt wird.
-
Prüfen Sie, ob das Flag
google_ml_integration.enable_model_supportaufongesetzt ist. - Bevor Sie Einbettungen aus einer AlloyDB Omni-Datenbank generieren können, müssen Sie AlloyDB Omni für die Verwendung mit Vertex AI konfigurieren.
-
Datenbankbenutzern die Berechtigung zum Ausführen der Einbettungsfunktion erteilen, um Einbettungen zu generieren:
\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 Omni-Cluster und der Vertex AI-Endpunkt in verschiedenen Projekten befinden, gehen Sie so vor:
Führen Sie die folgende
CALL-Anweisung aus.CALL google_ml.create_model( model_id => 'gemini-embedding-001', model_request_url => 'https://REGION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION_ID/publishers/google/models/gemini-embedding-001:predict', model_provider => 'google', model_type => 'text_embedding', model_auth_type => 'alloydb_service_agent_iam', model_in_transform_fn => 'google_ml.vertexai_text_embedding_input_transform', model_out_transform_fn => 'google_ml.vertexai_text_embedding_output_transform' );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-Modell zur Einbettung
Führen Sie die folgende Anweisung aus, um Einbettungen für einen registrierten text-embedding-ada-002-Modellendpunkt von OpenAI zu generieren:
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 Omni, pgvector und Modellendpunktverwaltung
- Indexe erstellen und Vektoren abfragen
- Beispiel für einen Einbettungsworkflow