Remote-KI-Modelle mithilfe der Modellendpunktverwaltung registrieren und aufrufen

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

  • Richten Sie die Authentifizierung entsprechend dem Modellanbieter ein.
  • Achten Sie darauf, dass Sie den postgres-Standardnutzernamen verwenden, um auf Ihre Datenbank zuzugreifen.

Erweiterung aktivieren

  1. Legen Sie das Datenbank-Flag google_ml_integration.enable_model_support für Ihre Instanz auf on fest. Weitere Informationen zum Festlegen von Datenbank-Flags finden Sie unter Datenbank-Flags konfigurieren.

  2. Verbindung zur primären Instanz herstellen, entweder über einen psql-Client oder über Cloud SQL Studio.

  3. 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'
    
  4. Fügen Sie die Erweiterung google_ml_integration Version 1.4.2 mit psql hinzu:

      CREATE EXTENSION google_ml_integration VERSION '1.4.2';
    
  5. 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 PostgreSQL-Nutzernamen, der kein Superuser ist.

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 Trusted Cloud by S3NSgehostet 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 gehostete 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 Bearer-Tokens in Secret Manager speichern.

Wenn Ihr Modellendpunkt die Authentifizierung über Secret Manager nicht verarbeitet, ist dieser Abschnitt optional. Wenn Ihr Modellendpunkt beispielsweise HTTP-Header verwendet, um Authentifizierungsinformationen zu übergeben, 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 Bearer-Token:

  1. 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.

  2. 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 Befehl gcloud sql instances describe INSTANCE_NAME und ersetzen Sie INSTANCE_NAME durch den Namen der Instanz. Der Wert neben dem Parameter serviceAccountEmailAddress 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-Modelle für Einbettungen

Die Verwaltung von Modellendpunkten 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-Einbettungsmodell-Endpunkt-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');

Benutzerdefiniert gehostete Texteinbettungsmodelle

In diesem Abschnitt wird beschrieben, wie Sie benutzerdefinierte Modellendpunkte registrieren, die in Netzwerken innerhalb von Trusted Cloud by S3NSgehostet werden.

Wenn Sie benutzerdefinierte Endpunkte für selbst gehostete Modelle für Texteinbettungen hinzufügen, müssen Sie Transformationsfunktionen und optional benutzerdefinierte HTTP-Header erstellen. Wenn Sie hingegen benutzerdefinierte, selbst gehostete generische Modellendpunkte hinzufügen, müssen Sie optional benutzerdefinierte HTTP-Header generieren und die Modellanfrage-URL festlegen.

Im folgenden Beispiel wird der von Cymbal gehostete Endpunkt des custom-embedding-model-Modells für Texteinbettung hinzugefügt, der in Trusted Cloud by S3NSgehostet wird. 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 benutzerdefinierte Endpunkte für selbst gehostete Modelle für Texteinbettungen:

  1. 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 Trusted Cloud by S3NS Projekts.
    • VERSION_NUMBER: Die Versionsnummer der Secret-ID.
  2. Erstellen Sie die Transformationsfunktionen für Ein- und Ausgabe basierend auf der folgenden Signatur für die Vorhersagefunktion für Endpunkte von Modelle für Texteinbettungen. Weitere Informationen zum Erstellen von Transformationsfunktionen finden Sie unter Beispiel für Transformationsfunktionen.

    Im Folgenden finden Sie Beispieltransformationsfunktionen, die speziell für den Endpunkt des Texteinbettungsmodells custom-embedding-model 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;
    $$;
    
  3. 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 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 Texteinbettungs- 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 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 im Verfahren google_ml.create_sm_secret() verwendet haben.

Generische Modelle

In diesem Abschnitt wird gezeigt, wie Sie einen generischen gemini-pro-Modellendpunkt aus Vertex AI Model Garden registrieren, der keine integrierte Unterstützung bietet. Sie können jeden generischen Modellendpunkt registrieren, der in Trusted Cloud by S3NSgehostet wird.

Cloud SQL unterstützt nur Modellendpunkte, die über Vertex AI Model Garden verfügbar sind, und Modellendpunkte, die in Netzwerken innerhalb von Trusted Cloud by S3NSgehostet werden.

Gemini-Modell

Im folgenden Beispiel wird der gemini-1.0-pro-Modellendpunkt 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, die 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 Trusted Cloud by S3NS Projekts.

Weitere Informationen finden Sie unter Vorhersagen für generische Modellendpunkte aufrufen.

Nächste Schritte