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
Richten Sie die Einbindung zwischen Ihrer Datenbank und Vertex AI ein.
Datenbankbenutzern die Berechtigung dazu erteilen, die
ml_predict_row()
-Funktion zur Ausführung von Vorhersagen zu verwenden: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.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 sollen
USER_NAME: der Name des Nutzers, dem die Berechtigungen erteilt werden sollen
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 -ProjektsREGION_ID
: Die ID der Google Cloud -Region, in der sich das Modell befindet, z. B.us-central1
für gemini-proMODEL_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 befindetREGION_ID
: Die ID der Google Cloud -Region, in der sich das Modell befindet, z. B.us-central1
ENDPOINT_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 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.