Auf dieser Seite wird beschrieben, wie Sie Vorhersagen aufrufen oder mit einem Modell Einbettungen generieren und dann den Modellendpunkt bei der Modellendpunktverwaltung registrieren.
Weitere Informationen zur Funktion google_ml.create_model()
finden Sie in der Referenz zur Modellendpunktverwaltung.
Hinweise
Wenn der Modellendpunkt eine Authentifizierung erfordert, aktivieren Sie die Erweiterung
google_ml_integration
.Richten Sie die Authentifizierung entsprechend dem Modellanbieter ein.
Verwenden Sie den Standardnutzernamen
postgres
, um auf Ihre Datenbank zuzugreifen.
Erweiterung aktivieren
Legen Sie das
google_ml_integration.enable_model_support
-Datenbankflag für Ihre Instanz aufon
fest. Weitere Informationen zum Festlegen von Datenbank-Flags finden Sie unter Datenbank-Flags konfigurieren.Stellen Sie entweder über einen
psql
-Client oder Cloud SQL Studio eine Verbindung zu Ihrer primären Instanz her.Führen Sie den folgenden Befehl aus, um sicherzustellen, dass die
google_ml_integration
-Erweiterung auf Version 1.4.2 aktualisiert wurde:ALTER EXTENSION google_ml_integration UPDATE TO '1.4.2'
So fügen Sie die Erweiterung
google_ml_integration
Version 1.4.2 mitpsql
hinzu:CREATE EXTENSION google_ml_integration VERSION '1.4.2';
Optional: Gewähren Sie einem PostgreSQL-Nutzer, der kein Super Admin ist, die Berechtigung zum Verwalten von Modellmetadaten:
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA google_ml TO NON_SUPER_USER;
Ersetzen Sie
NON_SUPER_USER
durch den nicht super PostgreSQL-Nutzernamen.
Authentifizierung einrichten
In den folgenden Abschnitten wird beschrieben, wie Sie die Authentifizierung einrichten, bevor Sie einen Vertex AI-Modellendpunkt oder Modellendpunkte hinzufügen, die in Google Cloud gehostet werden.
Authentifizierung für Vertex AI einrichten
Wenn Sie die Google Vertex AI-Modellendpunkte verwenden möchten, müssen Sie dem IAM-basierten Cloud SQL-Dienstkonto, mit dem Sie eine Verbindung zur Datenbank herstellen, Vertex AI-Berechtigungen hinzufügen. Weitere Informationen zur Einbindung in Vertex AI finden Sie unter Cloud SQL in Vertex AI einbinden.
Authentifizierung für benutzerdefiniert gehostete Modelle einrichten
In diesem Abschnitt wird beschrieben, wie Sie die Authentifizierung einrichten, wenn Sie Secret Manager verwenden. Sie können Ihre API-Schlüssel oder Bearer-Tokens für alle Modelle mit Ausnahme von Vertex AI-Modellendpunkten in Secret Manager speichern.
Wenn die Authentifizierung für Ihren Modellendpunkt nicht über Secret Manager erfolgt, ist dieser Abschnitt optional. Wenn Ihr Modellendpunkt beispielsweise HTTP-Header zum Übergeben von Authentifizierungsinformationen verwendet oder die Authentifizierung überhaupt nicht verwendet, müssen Sie die Schritte in diesem Abschnitt nicht ausführen.
So erstellen und verwenden Sie einen API-Schlüssel oder ein Bearer-Token:
Erstellen Sie ein Secret in Secret Manager. Weitere Informationen finden Sie unter Secret erstellen und auf Secret-Version zugreifen.
Der Name und der Pfad des Secrets werden in der SQL-Funktion
google_ml.create_sm_secret()
verwendet.Gewähren Sie der Cloud SQL-Instanz Berechtigungen für den Zugriff auf das Secret.
gcloud secrets add-iam-policy-binding SECRET_ID \ --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role="roles/secretmanager.secretAccessor"
Ersetzen Sie Folgendes:
SECRET_ID
: die Secret-ID im Secret Manager.SERVICE_ACCOUNT_EMAIL
: die E-Mail-Adresse des IAM-basierten Cloud SQL-Dienstkontos. Verwenden Sie zum Ermitteln dieser E-Mail-Adresse den Befehlgcloud sql instances describe INSTANCE_NAME
und ersetzen Sie INSTANCE_NAME durch den Namen der Instanz. Der Wert neben dem ParameterserviceAccountEmailAddress
ist die E-Mail-Adresse.
Texteinbettungsmodelle mit integrierter Unterstützung
In diesem Abschnitt wird beschrieben, wie Sie Modellendpunkte für die Modellendpunktverwaltung registrieren.
Vertex AI-Embedding-Modelle
Die Modellendpunktverwaltung bietet integrierte Unterstützung für alle Versionen des text-embedding-gecko
-Modells von Vertex AI. Verwenden Sie den qualifizierten Namen, um die Modellversion auf textembedding-gecko@001
oder textembedding-gecko@002
festzulegen.
Da sowohl die Modellendpunkt-IDs textembedding-gecko
als auch textembedding-gecko@001
bereits bei der Modellendpunktverwaltung registriert sind, können Sie eine der beiden direkt als Modell-ID verwenden. Für diese Modelle richtet die Erweiterung automatisch Standardtransformationsfunktionen ein.
Die Cloud SQL-Instanz und das Vertex AI-Modell, das Sie abfragen, müssen sich in derselben Region befinden.
Rufen Sie die Funktion create_model
auf, um den textembedding-gecko@002
-Modellendpunkt zu registrieren:
CALL
google_ml.create_model(
model_id => 'textembedding-gecko@002',
model_provider => 'google',
model_qualified_name => 'textembedding-gecko@002',
model_type => 'text_embedding',
model_auth_type => 'cloudsql_service_agent_iam');
Benutzerdefiniert gehostete Texteinbettungsmodelle
In diesem Abschnitt erfahren Sie, wie Sie benutzerdefinierte Modellendpunkte registrieren, die in Netzwerken in Google Cloud gehostet werden.
Wenn Sie benutzerdefinierte Endpunkte für ein Modell zum Einbetten von Text hinzufügen möchten, müssen Sie Transformationsfunktionen und optional benutzerdefinierte HTTP-Header erstellen. Wenn Sie hingegen benutzerdefinierte generische Modellendpunkte hinzufügen, müssen Sie optional benutzerdefinierte HTTP-Header generieren und die URL der Modellanfrage festlegen.
Im folgenden Beispiel wird der Endpunkt des custom-embedding-model
-Text-Embedding-Modells hinzugefügt, das von Cymbal gehostet wird, das wiederum in Google Cloud gehostet wird. Mit den Transformationsfunktionen cymbal_text_input_transform
und cymbal_text_output_transform
werden das Eingabe- und Ausgabeformat des Modells in das Eingabe- und Ausgabeformat der Vorhersagefunktion umgewandelt.
So registrieren Sie Endpunkte für benutzerdefinierte gehostete Modelle für Text-Embeddings:
Rufen Sie das im Secret Manager gespeicherte Secret auf:
CALL google_ml.create_sm_secret( secret_id => 'SECRET_ID', secret_path => 'projects/project-id/secrets/SECRET_MANAGER_SECRET_ID/versions/VERSION_NUMBER');
Ersetzen Sie Folgendes:
SECRET_ID
: Die Secret-ID, die Sie festlegen und die anschließend beim Registrieren eines Modellendpunkts verwendet wird, z. B.key1
.SECRET_MANAGER_SECRET_ID
: Die Secret-ID, die Sie beim Erstellen des Secrets im Secret Manager festgelegt haben.PROJECT_ID
ist die ID Ihres Google Cloud-Projekts.VERSION_NUMBER
: die Versionsnummer der Secret-ID.
Erstellen Sie die Eingabe- und Ausgabetransformationsfunktionen anhand der folgenden Signatur für die Vorhersagefunktion für Endpunkte von Modelleinbettungen. Weitere Informationen zum Erstellen von Transformationsfunktionen finden Sie im Beispiel für Transformationsfunktionen.
Im Folgenden finden Sie Beispielfunktionen für die Transformation, die speziell für den Endpunkt des
custom-embedding-model
-Modells für Texteinbettungen gelten:-- Input Transform Function corresponding to the custom model endpoint CREATE OR REPLACE FUNCTION cymbal_text_input_transform(model_id VARCHAR(100), input_text TEXT) RETURNS JSON LANGUAGE plpgsql AS $$ DECLARE transformed_input JSON; model_qualified_name TEXT; BEGIN SELECT json_build_object('prompt', json_build_array(input_text))::JSON INTO transformed_input; RETURN transformed_input; END; $$; -- Output Transform Function corresponding to the custom model endpoint CREATE OR REPLACE FUNCTION cymbal_text_output_transform(model_id VARCHAR(100), response_json JSON) RETURNS REAL[] LANGUAGE plpgsql AS $$ DECLARE transformed_output REAL[]; BEGIN SELECT ARRAY(SELECT json_array_elements_text(response_json->0)) INTO transformed_output; RETURN transformed_output; END; $$;
Rufen Sie die Funktion „create model“ auf, um den Endpunkt des benutzerdefinierten Einbettungsmodells zu registrieren:
CALL google_ml.create_model( model_id => 'MODEL_ID', model_request_url => 'REQUEST_URL', model_provider => 'custom', model_type => 'text_embedding', model_auth_type => 'secret_manager', model_auth_id => 'SECRET_ID', model_qualified_name => 'MODEL_QUALIFIED_NAME', model_in_transform_fn => 'cymbal_text_input_transform', model_out_transform_fn => 'cymbal_text_output_transform');
Ersetzen Sie Folgendes:
MODEL_ID
: erforderlich. Eine eindeutige ID für den von Ihnen definierten Modellendpunkt (z. B.custom-embedding-model
). Auf diese Modell-ID wird für Metadaten verwiesen, die der Modellendpunkt zum Generieren von Einbettungen oder zum Aufrufen von Vorhersagen benötigt.REQUEST_URL
: erforderlich. Der modellspezifische Endpunkt beim Hinzufügen von benutzerdefinierten Text-Embeddings und generischen Modellendpunkten, z. B.https://cymbal.com/models/text/embeddings/v1
. Achten Sie darauf, dass der Modellendpunkt über eine interne IP-Adresse zugänglich ist. Die Endpunktverwaltung für Modelle unterstützt keine externen IP-Adressen.MODEL_QUALIFIED_NAME
: Erforderlich, wenn für den Modellendpunkt ein qualifizierter Name verwendet wird. Der vollständige qualifizierte Name, falls der Modellendpunkt mehrere Versionen hat.SECRET_ID
: die Secret-ID, die Sie zuvor bei dergoogle_ml.create_sm_secret()
-Prozedur verwendet haben.
Generische Modelle
In diesem Abschnitt wird beschrieben, wie Sie einen generischen gemini-pro
-Modellendpunkt aus Vertex AI Model Garden registrieren, der keine integrierte Unterstützung hat. Sie können jeden generischen Modellendpunkt registrieren, der in Google Cloud gehostet wird.
Cloud SQL unterstützt nur Modellendpunkte, die über den Vertex AI Model Garden verfügbar sind, und Modellendpunkte, die in Google Cloud-Netzwerken gehostet werden.
Gemini-Modell
Im folgenden Beispiel wird der Modellendpunkt gemini-1.0-pro
aus dem Vertex AI Model Garden hinzugefügt.
Rufen Sie die Funktion create model
auf, um den gemini-1.0-pro
-Modellendpunkt zu registrieren:
```sql
CALL
google_ml.create_model(
model_id => 'MODEL_ID',
model_request_url => 'https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-1.0-pro:streamGenerateContent',
model_provider => 'google',
model_auth_type => 'cloudsql_service_agent_iam');
```
Replace the following:
* <code><var>MODEL_ID</var></code>: a unique ID for the model endpoint that you define (for example,<br> `gemini-1`). This model ID is referenced for metadata that the model endpoint needs to generate embeddings or invoke predictions.
* <code><var>PROJECT_ID</var></code>: the ID of your Google Cloud project.
Weitere Informationen finden Sie unter Vorhersagen für Endpunkte für generische Modelle aufrufen.