Onlinevorhersagen aus AlloyDB-Datenbanken aufrufen

Auf dieser Seite wird beschrieben, wie Sie Onlinevorhersagen aus einer AlloyDB for PostgreSQL-Datenbank aufrufen.

Mit AlloyDB können Sie durch Aufrufen der Funktion ml_predict_row() Onlinevorhersagen in Ihrem SQL-Code abrufen. Weitere Informationen zur Verwendung von ML-Modellen (Machine Learning) mit AlloyDB finden Sie unter Generative AI-Anwendungen erstellen.

Hinweise

Bevor Sie Onlinevorhersagen aus einer AlloyDB-Datenbank aufrufen können, müssen Sie Ihre Datenbank vorbereiten und ein geeignetes ML-Modell auswählen.

Datenbank vorbereiten

  1. Richten Sie die Einbindung zwischen Ihrer Datenbank und Vertex AI ein.

  2. Datenbankbenutzern die Berechtigung dazu erteilen, die ml_predict_row()-Funktion zur Ausführung von Vorhersagen zu verwenden:

    1. Stellen Sie eine Verbindung von einem psql-Client zur primären Instanz des Clusters her, wie unter Verbindung eines psql-Clients mit einer Instanz herstellen beschrieben.

    2. Stellen Sie über die psql-Eingabeaufforderung eine Verbindung zur Datenbank her und gewähren Sie Berechtigungen:

      \c DB_NAME
      
      GRANT EXECUTE ON FUNCTION ml_predict_row TO USER_NAME;
      

      Ersetzen Sie Folgendes:

      • DB_NAME: der Name der Datenbank, für die die Berechtigungen gewährt werden müssen.

      • USER_NAME: der Name des Nutzers, dem die Berechtigungen erteilt werden müssen.

ML-Modell auswählen

Wenn Sie die Funktion ml_predict_row() aufrufen, müssen Sie den Speicherort eines ML-Modells angeben. Das von Ihnen angegebene Modell kann eines der folgenden sein:

  • Ein Modell, das in Vertex AI Model Garden ausgeführt wird.

    Die Funktion ml_predict_row() unterstützt das Aufrufen von Vorhersagen nur für tabellarische oder benutzerdefinierte Modelle.

  • Ein Vertex AI-Modell mit einem aktiven Endpunkt, für den Sie die IAM-Berechtigung (Identity and Access Management) haben.

    AlloyDB unterstützt keine privaten Endpunkte für das Abrufen von Onlinevorhersagen.

Onlinevorhersagen aufrufen

Mit der SQL-Funktion ml_predict_row() haben Sie die Möglichkeit, Onlinevorhersagen für Ihre Daten aufzurufen.

Das Format des Anfangsarguments der Funktion hängt davon ab, ob das ML-Modell, das Sie verwenden möchten, sich im Vertex AI Model Garden befindet oder ein Endpunkt ist, der in einem Google Cloud -Projekt ausgeführt wird.

Modell in Vertex AI Model Garden verwenden

Zum Aufrufen einer Onlinevorhersage mit einem ML-Modell, das in Vertex AI Model Garden ausgeführt wird, verwenden Sie die folgende Syntax für die SQL-Funktion ml_predict_row():

SELECT ml_predict_row('projects/PROJECT_ID/locations/REGION_ID/publishers/google/models/MODEL_ID', '{ CONTENTS }');

Ersetzen Sie Folgendes:

  • PROJECT_ID: die ID Ihres Google Cloud -Projekts

  • REGION_ID: Die ID der Google Cloud -Region, in der sich das Modell befindet, z. B. us-central1 für gemini-pro

  • MODEL_ID: die ID des zu verwendenden ML-Modells, z. B. „gemini-pro“

  • CONTENTS: Die Eingaben für den Vorhersageaufruf im JSON-Format

Wenn sich das ML-Modell im selben Projekt und in derselben Region wie Ihr AlloyDB-Cluster befindet, können Sie das erste Argument dieser Funktion abkürzen:

SELECT ml_predict_row('publishers/google/models/MODEL_ID', '{ CONTENTS }');

Informationen zu den JSON-Antwortnachrichten des Modells finden Sie in der Referenz zum Foundation Model der generativen KI.

Beispiele finden Sie unter Beispielaufrufe.

Vertex AI-Modellendpunkt verwenden

Verwenden Sie die folgende Syntax für die SQL-Funktion ml_predict_row(), um eine Onlinevorhersage mit einem Vertex AI-Modellendpunkt aufzurufen:

SELECT ml_predict_row('projects/PROJECT_ID/locations/REGION_ID/endpoints/ENDPOINT_ID', '{ CONTENTS }');

Ersetzen Sie Folgendes:

  • PROJECT_ID: die ID des Google Cloud -Projekts, in dem sich das Modell befindet

  • REGION_ID: Die ID der Google Cloud -Region, in der sich das Modell befindet, z. B. us-central1

  • ENDPOINT_ID: die ID des Modellendpunkts

  • CONTENTS: Die Eingaben für den Vorhersageaufruf im JSON-Format

Wenn sich der Endpunkt im selben Projekt und in derselben Region wie Ihr AlloyDB-Cluster befindet, können Sie das erste Argument dieser Funktion abkürzen:

SELECT ml_predict_row('endpoints/ENDPOINT_ID', '{ CONTENTS }');

Informationen zu den JSON-Antwortnachrichten des Modells finden Sie unter PredictResponse.

Beispielaufrufe

Im folgenden Beispiel wird gemini-pro verwendet, das im Model Garden verfügbar ist, um Text basierend auf einem kurzen Prompt zu generieren, der als Literalargument für ml_predict_row() bereitgestellt wird:

select ML_PREDICT_ROW('projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-1.0-pro:generateContent', '{
  "contents": [{
    "role": "user",
    "parts": [{
      "text": "What is AlloyDB?"
    }]
  }]
}');

Die Antwort ist ein JSON-Objekt. Weitere Informationen zum Format des Objekts finden Sie unter Antworttext.

Im nächsten Beispiel wird das vorherige so geändert:

  • Im Beispiel wird der Inhalt der Spalte messages.message der aktuellen Datenbank als Eingabe verwendet.

  • Im Beispiel wird die Verwendung der json_build_object()-Funktion als Unterstützung bei der Formatierung der Funktionsparameter veranschaulicht.


select ML_PREDICT_ROW('projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-1.0-pro:generateContent', json_build_object('contents', json_build_object('text', message))) from messages;

Das zurückgegebene JSON-Objekt enthält jetzt für jede Zeile in der Tabelle messages einen Eintrag im Array predictions.

Da die Antwort ein JSON-Objekt ist, können Sie bestimmte Felder mit dem PostgreSQL-Pfeiloperator abrufen:

select ML_PREDICT_ROW('projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-1.0-pro:generateContent', json_build_object('contents', json_build_object('text', message)))->'predictions'->0->'content' FROM messages;

Weitere Beispielargumente für ml_predict_row() finden Sie in der Kurzanleitung zur Verwendung der Vertex AI API.