Auf dieser Seite wird beschrieben, wie Sie Vorhersagen aufrufen oder Einbettungen mit einem Modell generieren und den Modellendpunkt dann bei der Modellendpunktverwaltung registrieren.
Weitere Informationen zur Funktion
google_ml.create_model()
finden Sie in der Referenz zur Verwaltung von Modellendpunkten.
Hinweise
- Wenn für Ihren Modellendpunkt eine Authentifizierung erforderlich ist, aktivieren Sie die Erweiterung
google_ml_integration.
- Richten Sie die Authentifizierung entsprechend dem Modellanbieter ein.
- Achten Sie darauf, dass Sie mit dem Standardnutzernamen
postgresauf Ihre Datenbank zugreifen.
Erweiterung aktivieren
Setzen Sie das Datenbank-Flag
google_ml_integration.enable_model_supportfür Ihre Instanz aufon. Weitere Informationen zum Festlegen dieser Datenbank-Flags finden Sie unter Datenbank-Flags konfigurieren.Verbindung zur primären Instanz herstellen, entweder über einen
psql-Client oder über Cloud SQL Studio.Führen Sie den folgenden Befehl aus, um sicherzustellen, dass die
google_ml_integration-Erweiterung auf Version 1.4.2 aktualisiert wird:ALTER EXTENSION google_ml_integration UPDATE TO '1.4.2'Fügen Sie die Erweiterung
google_ml_integrationVersion 1.4.2 mitpsqlhinzu: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_USERdurch den Namen des PostgreSQL-Nutzers, der kein Super Admin sein darf.
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 Cloudgehostet 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, das Sie zum Herstellen einer Verbindung zur Datenbank verwenden, Vertex AI-Berechtigungen hinzufügen. Weitere Informationen zur Einbindung in Vertex AI finden Sie unter Cloud SQL in Vertex AI einbinden.
Authentifizierung für benutzerdefinierte Modelle einrichten
In diesem Abschnitt wird beschrieben, wie Sie die Authentifizierung einrichten, wenn Sie Secret Manager verwenden. Für alle Modelle mit Ausnahme von Vertex AI-Modellendpunkten können Sie Ihre API-Schlüssel oder Inhabertokens in Secret Manager speichern.
Wenn Ihr Modellendpunkt die Authentifizierung nicht über Secret Manager verarbeitet, ist dieser Abschnitt optional. Wenn Ihr Modellendpunkt beispielsweise HTTP-Header zum Übergeben von Authentifizierungsinformationen verwendet oder überhaupt keine Authentifizierung verwendet, müssen Sie die Schritte in diesem Abschnitt nicht ausführen.
So erstellen und verwenden Sie einen API-Schlüssel oder ein Inhabertoken:
Erstellen Sie ein Secret in Secret Manager. Weitere Informationen finden Sie unter Secret erstellen und auf die Secret-Version zugreifen.
Der Secret-Name und der Secret-Pfad 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_NAMEund ersetzen Sie INSTANCE_NAME durch den Namen der Instanz. Der Wert neben dem ParameterserviceAccountEmailAddressist die E-Mail-Adresse.
Texteinbettungsmodelle mit integrierter Unterstützung
In diesem Abschnitt wird beschrieben, wie Sie Modellendpunkte für die Modellendpunktverwaltung registrieren.
Vertex AI-Modelle für Einbettungen
Die Modellendpunktverwaltung bietet integrierte Unterstützung für alle Versionen der Modelle text-embedding-gecko, text-embedding und gemini-embedding von Vertex AI. Verwenden Sie den qualifizierten Namen, um die Modellversion auf textembedding-gecko@001 oder textembedding-gecko@002 festzulegen.
Da Vertex AI-Einbettungsmodellendpunkt-IDs standardmäßig von der Modellendpunktverwaltung unterstützt werden, können Sie sie 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 Modellendpunkt textembedding-gecko@002 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');
Benutzerdefinierte Texteinbettungsmodelle
In diesem Abschnitt wird beschrieben, wie Sie benutzerdefinierte Modellendpunkte registrieren, die in Netzwerken innerhalb von Google Cloudgehostet werden.
Wenn Sie vom Kunden gehostete Modellendpunkte für Texteinbettungen hinzufügen, müssen Sie Transformationsfunktionen und optional benutzerdefinierte HTTP-Header erstellen. Beim Hinzufügen von benutzerdefinierten gehosteten generischen Modellendpunkten müssen Sie optional benutzerdefinierte HTTP-Header generieren und die Modellanfrage-URL festlegen.
Im folgenden Beispiel wird der Texteinbettungsmodellendpunkt custom-embedding-model hinzugefügt, der von Cymbal gehostet wird und sich in Google Cloudbefindet. Mit den Transformationsfunktionen cymbal_text_input_transform
und cymbal_text_output_transform
wird das Ein- und Ausgabeformat des Modells in das Ein- und Ausgabeformat der Vorhersagefunktion transformiert.
So registrieren Sie vom Kunden gehostete Modellendpunkte für Texteinbettungen:
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 festgelegt haben und die später bei der Registrierung eines Modellendpunkts verwendet wird, z. B.key1.SECRET_MANAGER_SECRET_ID: Die Secret-ID, die beim Erstellen des Secrets im Secret Manager festgelegt wurde.PROJECT_ID: Die ID Ihres Projekts in Google Cloud .VERSION_NUMBER: Die Versionsnummer der Secret-ID.
Erstellen Sie die Transformationsfunktionen für Ein- und Ausgabe basierend auf der folgenden Signatur für die Vorhersagefunktion für Modellendpunkte für Texteinbettungen. Weitere Informationen zum Erstellen von Transformationsfunktionen finden Sie unter Beispiel für Transformationsfunktionen.
Im Folgenden finden Sie Beispiel-Transformationsfunktionen, die speziell für den Modellendpunkt
custom-embedding-modelfü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 zum Erstellen von Modellen auf, um den benutzerdefinierten Endpunkt für das Einbettungsmodell 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 Modellendpunkt, den Sie definieren, 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 Texteinbettungen und allgemeinen Modellendpunkten, z. B.https://cymbal.com/models/text/embeddings/v1. Achten Sie darauf, dass der Modellendpunkt über eine interne IP-Adresse erreichbar ist. Die Verwaltung von Modellendpunkten unterstützt keine externen IP-Adressen.MODEL_QUALIFIED_NAME: Erforderlich, wenn für Ihren Modellendpunkt ein qualifizierter Name verwendet wird. Der vollständig qualifizierte Name, falls der Modellendpunkt mehrere Versionen hat.SECRET_ID: Die Secret-ID, die Sie zuvor imgoogle_ml.create_sm_secret()-Verfahren verwendet haben.
Allgemeine Modelle
In diesem Abschnitt wird beschrieben, wie Sie einen allgemeinen Modellendpunkt vom Typgemini-pro aus Vertex AI Model Garden registrieren, der keine integrierte Unterstützung bietet.
Sie können jeden generischen Modellendpunkt registrieren, der in Google Cloudgehostet wird.
Cloud SQL unterstützt nur Modellendpunkte, die über Vertex AI Model Garden verfügbar sind, und Modellendpunkte, die in Netzwerken innerhalb von Google Cloudgehostet 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 Modellendpunkt gemini-1.0-pro zu registrieren:
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');
Ersetzen Sie Folgendes:
MODEL_ID: Eine eindeutige ID für den Modellendpunkt, den Sie definieren (z. B.
gemini-1). Auf diese Modell-ID wird für Metadaten verwiesen, die der Modellendpunkt zum Generieren von Einbettungen oder zum Aufrufen von Vorhersagen benötigt.PROJECT_ID: Die ID Ihres Projekts in Google Cloud .
Weitere Informationen finden Sie unter Vorhersagen für allgemeine Modellendpunkte aufrufen.