Auf dieser Seite wird beschrieben, wie Sie Onlinevorhersagen aus einer AlloyDB Omni-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()zum Ausführen 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-KI-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 KI-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.
KI-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-KI-Modellendpunkt verwenden
Verwenden Sie die folgende Syntax für die SQL-Funktion ml_predict_row(), um eine Onlinevorhersage mit einem Vertex AI-KI-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 Google Cloud Region, in der sich das Modell befindet, z. B.us-central1ENDPOINT_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.