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.
Hinweis
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
Richten Sie die Einbindung zwischen Ihrer Datenbank und Vertex AI ein.
Erteilen Sie Datenbanknutzern die Berechtigung, die Funktion
ml_predict_row()zur Ausführung von Vorhersagen zu verwenden:Stellen Sie eine Verbindung von einem
psql-Client zur primären Instanz des Clusters her, wie unter psql-Client mit einer Instanz verbinden beschrieben.Stellen Sie über die psql-Eingabeaufforderung eine Verbindung zur Datenbank her und erteilen 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 erteilt werden müssen.
USER_NAME: der Name des Nutzers, für den 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 sich das ML-Modell, das Sie verwenden möchten, 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 ProjektsREGION_ID: die ID der Google Cloud Region, in der sich das Modell befindet, z. B.us-central1für gemini-proMODEL_ID: die ID des zu verwendenden ML-Modells, z. B. gemini-proCONTENTS: die Eingaben für den Vorhersageaufruf im JSON-Format
Wenn das ML-Modell im selben Projekt und in derselben Region wie Ihr AlloyDB-Cluster gespeichert ist, 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 befindetREGION_ID: die ID der Region, in der sich das Modell befindet, z. B.us-central1Google CloudENDPOINT_ID: die ID des ModellendpunktsCONTENTS: 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,
das im Model Garden verfügbar ist, verwendet, 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.messageder aktuellen Datenbank als Eingabe verwendet.Im Beispiel wird die Verwendung der Funktion the
json_build_object()function 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 unter Kurzanleitung zur Verwendung der Vertex AI
API.