Texteinbettungen generieren

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 Einbettungsmodell der Gemini Enterprise Agent Platform 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 google_ml.embedding() Funktion 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 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 Spalte complaints. In dieser TEXT-Spalte werden Käuferbeschwerden gespeichert, die zu den einzelnen Artikeln in Logs erfasst werden.

  • Die Datenbank kann in den 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 semantisch ähnliche Antworten auf solche Abfragen zurückgeben. 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 aus, um grundlegende Einbettungen zu generieren.

Hinweis

So lassen Sie AlloyDB Einbettungen generieren:

  • Stellen Sie als Nutzer postgres mit psql oder AlloyDB for PostgreSQL Studio eine Verbindung zu Ihrer Datenbank her.
  • Prüfen Sie, ob die Erweiterung google_ml_integration installiert ist.

    Prüfen Sie die Version der Erweiterung mit dem folgenden Befehl:

    SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration';
    

    Wenn Sie die Erweiterung aktualisieren müssen, verwenden Sie den Befehl ALTER EXTENSION google_ml_integration UPDATE;.

  • Bevor Sie Einbettungen aus einer AlloyDB-Datenbank generieren können, müssen Sie AlloyDB für die Verwendung mit der Agent Platform konfigurieren. Weitere Informationen finden Sie unter Datenbank in die Agent Platform einbinden.

  • Erteilen Sie Datenbanknutzern die Berechtigung, Einbettungen zu generieren.

    Wenn Sie psql verwenden, stellen Sie eine Verbindung zur Datenbank her, für die Sie Berechtigungen erteilen möchten:

    \c DB_NAME
    GRANT EXECUTE ON FUNCTION embedding TO "USER_NAME";
    

    Ersetzen Sie Folgendes:

    • DB_NAME: der Name der Datenbank, für die Sie Berechtigungen erteilen möchten.
    • USER_NAME: der Name des Nutzers, dem Sie Berechtigungen erteilen möchten.

    Wenn Sie AlloyDB for PostgreSQL Studio verwenden, wählen Sie in der Liste Datenbank den Namen der Datenbank aus, für die Sie Berechtigungen erteilen möchten. Erteilen Sie dem Nutzer die Berechtigung EXECUTE für die Funktion google_ml.embedding:

    GRANT EXECUTE ON FUNCTION google_ml.embedding TO "USER_NAME";
    

    Ersetzen Sie USER_NAME durch den Namen des Nutzers, dem Sie Berechtigungen erteilen möchten.

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 Gemini Enterprise Agent Platform-Endpunkt in verschiedenen Projekten befinden, gehen Sie so vor:

  1. 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'
         );
    
  2. 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

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