Cloud SQL in Vertex AI einbinden

Auf dieser Seite wird beschrieben, wie Sie Cloud SQL in Vertex AI einbinden. Mit dieser Einbindung können Sie Large Language Models (LLMs), die in Vertex AI gehostet werden, auf eine Cloud SQL for PostgreSQL-Datenbank Version 12 und höher anwenden.

Durch die Einbindung von Cloud SQL in Vertex AI können Sie die semantischen und prädiktiven ML-Modelle (maschinelles Lernen) auf Ihre Daten anwenden. Diese Einbindung erweitert die PostgreSQL-Syntax um zwei Funktionen zum Abfragen von Modellen:

  • Rufen Sie Vorhersagen auf, um ein Modell mit SQL innerhalb einer Transaktion aufzurufen.
  • Generieren Sie Einbettungen, damit ein LLM Text-Prompts in numerische Vektoren übersetzt. Diese Vektoreinbettungen können Sie dann als Eingaben in pgvector-Funktionen anwenden. Dazu gehören Methoden zum Vergleichen und Sortieren von Textbeispielen entsprechend ihrer relativen semantischen Entfernung.

Dadurch können Sie Echtzeitvorhersagen treffen und direkt in der Datenbank wertvolle Informationen gewinnen, Ihre Workflows optimieren und Ihre Entscheidungsfindungsfunktionen verbessern.

Weitere Informationen zu Vertex AI finden Sie unter Einführung in Vertex AI.

Hinweise

  1. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  4. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  5. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

Datenbankeinbindung mit Vertex AI aktiviere 

Führen Sie folgende Schritte aus, um die Datenbankeinbindung in Vertex AI zu aktivieren:

  1. Aktivieren Sie die erforderlichen Google Cloud APIs.

    Console

    1. Rufen Sie die Seite APIs & Dienste auf.
    2. Wählen Sie Ihr Projekt aus der Projektliste aus.
    3. Wenn die API-Bibliothek nicht geöffnet ist, wählen Sie im Navigationsmenü die Option Bibliothek aus.
    4. Klicken Sie auf die APIs, die Sie aktivieren möchten. Aktivieren Sie für dieses Verfahren die Cloud SQL Admin API und die Vertex AI API.

    5. Nachdem Sie die einzelnen APIs ausgewählt haben, klicken Sie auf Aktivieren.

    gcloud

    1. Öffnen Sie Cloud Shell, um direkt über den Browser Befehlszeilenzugriff auf Ihre Google Cloud-Ressourcen zu erhalten.
    2. Aktivieren Sie die erforderlichen APIs mit dem Befehl gcloud services enable:
      gcloud services enable sqladmin.googleapis.com \
      enable aiplatform.googleapis.com
    3. Mit diesem Befehl werden die folgenden APIs aktiviert:
      • Cloud SQL Admin API
      • Vertex AI API

  2. Erstellen oder aktualisieren Sie eine Cloud SQL-Instanz, damit die Instanz in Vertex AI eingebunden werden kann.

    gcloud

    Die Instanz erstellen

    Verwenden Sie zum Erstellen der Cloud SQL-Instanz den Befehl gcloud sql instances create.

    gcloud sql instances create INSTANCE_NAME \
    --database-version=DATABASE_VERSION \
    --tier=MACHINE_TYPE \
    --region=REGION_NAME \
    --enable-google-ml-integration \
    --database-flags cloudsql.enable_google_ml_integration=on
    

    Ersetzen Sie die folgenden Werte:

    • INSTANCE_NAME: Name der Instanz
    • DATABASE_VERSION: Datenbankversion für die Instanz (z. B. POSTGRES_13)
    • MACHINE_TYPE: der gewünschte Maschinentyp für die Instanz
    • REGION_NAME: Name der Region für die Instanz

    Instanz aktualisieren

    Zum Aktualisieren der Instanz verwenden Sie den Befehl gcloud sql instances patch.

    gcloud sql instances patch INSTANCE_NAME \
    --enable-google-ml-integration \
    --database-flags cloudsql.enable_google_ml_integration=on
    

    Wenn diese Aktualisierung einen Wert ändert, der einen Neustart notwendig macht, werden Sie aufgefordert, mit der Änderung fortzufahren oder sie abzubrechen.

    REST Version 1

    Die Instanz erstellen

    Verwenden Sie dieses Beispiel, um die Instanz zu erstellen. Eine vollständige Liste der Parameter für diesen Aufruf finden Sie auf der Seite Instanzen: insert. Informationen zu den Instanzeinstellungen, einschließlich der gültigen Werte für die Region, finden Sie unter Instanzeinstellungen.

    Ersetzen Sie diese Werte in den folgenden Anfragedaten:

    • PROJECT_ID: die ID oder Projektnummer des Google Cloud-Projekts, das die Instanz enthält
    • INSTANCE_NAME: Name der Instanz
    • REGION_NAME: Name der Region für die Instanz
    • DATABASE_VERSION: Enum-String der Datenbankversion (z. B. POSTGRES_13)
    • PASSWORD: Passwort für den root-Nutzer
    • MACHINE_TYPE: Enum-String des Maschinentyps (Stufe), z. B.: db-custom-[CPUS]-[MEMORY_MBS]
    • EDITION_TYPE: Ihre Cloud SQL-Version.

    Sie müssen auch das Objekt enableGoogleMlIntegration in die Anfrage aufnehmen. Legen Sie nach Bedarf die folgenden Parameter fest:

    • enableGoogleMlIntegration: Wenn dieser Parameter auf true gesetzt ist, können Cloud SQL-Instanzen eine Verbindung zu Vertex AI herstellen, um Anfragen für Echtzeitvorhersagen und Statistiken an die KI zu übergeben.
    • cloudsql.enable_google_ml_integration: Wenn dieser Parameter auf on gesetzt ist, kann Cloud SQL in Vertex AI eingebunden werden.

    HTTP-Methode und URL:

    POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances

    JSON-Text anfordern:

    {
      "name": "INSTANCE_NAME",
      "region": "REGION_NAME",
      "databaseVersion": "DATABASE_VERSION",
      "rootPassword": "PASSWORD",
      "settings": {
        "tier": "MACHINE_TYPE",
        "edition": "EDITION_TYPE",
        "enableGoogleMlIntegration": "true" | "false"
        "databaseFlags":
          {
            "name": "cloudsql.enable_google_ml_integration",
            "value": "on" | "off"
          }
      }
    }
    

    Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

    Sie sollten in etwa folgende JSON-Antwort erhalten:

    {
      "kind": "sql#operation",
      "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
      "status": "PENDING",
      "user": "user@example.com",
      "insertTime": "2019-09-25T22:19:33.735Z",
      "operationType": "CREATE",
      "name": "OPERATION_ID",
      "targetId": "INSTANCE_ID",
      "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
      "targetProject": "PROJECT_ID"
    }
    

    Instanz aktualisieren

    Verwenden Sie dieses Beispiel, um die Instanz zu aktualisieren. Eine vollständige Liste der Parameter für diesen Aufruf finden Sie auf der Seite Instanzen: insert.

    Wenn diese Aktualisierung einen Wert ändert, der einen Neustart notwendig macht, werden Sie aufgefordert, mit der Änderung fortzufahren oder sie abzubrechen.

    Ersetzen Sie diese Werte in den folgenden Anfragedaten:

    • PROJECT_ID: die ID oder Projektnummer des Google Cloud-Projekts, das die Instanz enthält
    • INSTANCE_NAME: Name der Instanz

    HTTP-Methode und URL:

    PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

    JSON-Text anfordern:

    {
      "settings": {
        "enableGoogleMlIntegration": true,
        "databaseFlags":
          {
            "name": "cloudsql.enable_google_ml_integration",
            "value": "on"
          }
       }
    }

    Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

    Sie sollten in etwa folgende JSON-Antwort erhalten:

    {
      "kind": "sql#operation",
      "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME",
      "status": "PENDING",
      "user": "user@example.com",
      "insertTime": "2020-01-16T02:32:12.281Z",
      "operationType": "UPDATE",
      "name": "OPERATION_ID",
      "targetId": "INSTANCE_NAME",
      "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
      "targetProject": "PROJECT_ID"
    }
    

    REST v1beta4

    Die Instanz erstellen

    Verwenden Sie dieses Beispiel, um die Instanz zu erstellen. Eine vollständige Liste der Parameter für diesen Aufruf finden Sie auf der Seite Instanzen: insert. Informationen zu den Instanzeinstellungen, einschließlich der gültigen Werte für die Region, finden Sie unter Instanzeinstellungen.

    Ersetzen Sie diese Werte in den folgenden Anfragedaten:

    • PROJECT_ID: die ID oder Projektnummer des Google Cloud-Projekts, das die Instanz enthält
    • INSTANCE_NAME: Name der Instanz
    • REGION_NAME: Name der Region für die Instanz
    • DATABASE_VERSION: Enum-String der Datenbankversion (z. B. POSTGRES_13)
    • PASSWORD: Passwort für den root-Nutzer
    • MACHINE_TYPE: Enum-String des Maschinentyps (Stufe), z. B.: db-custom-[CPUS]-[MEMORY_MBS]
    • EDITION_TYPE: Ihre Cloud SQL-Version.

    Sie müssen auch das Objekt enableGoogleMlIntegration in die Anfrage aufnehmen. Legen Sie nach Bedarf die folgenden Parameter fest:

    • enableGoogleMlIntegration: Wenn dieser Parameter auf true gesetzt ist, können Cloud SQL-Instanzen eine Verbindung zu Vertex AI herstellen, um Anfragen für Echtzeitvorhersagen und Statistiken an die KI zu übergeben.
    • cloudsql.enable_google_ml_integration: Wenn dieser Parameter auf on gesetzt ist, kann Cloud SQL in Vertex AI eingebunden werden.

    HTTP-Methode und URL:

    POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances

    JSON-Text anfordern:

    {
      "name": "INSTANCE_NAME",
      "region": "REGION_NAME",
      "databaseVersion": "DATABASE_VERSION",
      "rootPassword": "PASSWORD",
      "settings": {
        "tier": "MACHINE_TYPE",
        "edition": "EDITION_TYPE",
        "enableGoogleMlIntegration": "true" | "false"
        "databaseFlags":
          {
            "name": "cloudsql.enable_google_ml_integration",
            "value": "on" | "off"
          }
      }
    }
    

    Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

    Sie sollten in etwa folgende JSON-Antwort erhalten:

    {
      "kind": "sql#operation",
      "targetLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
      "status": "PENDING",
      "user": "user@example.com",
      "insertTime": "2019-09-25T22:19:33.735Z",
      "operationType": "CREATE",
      "name": "OPERATION_ID",
      "targetId": "INSTANCE_ID",
      "selfLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
      "targetProject": "PROJECT_ID"
    }
    

    Instanz aktualisieren

    Verwenden Sie dieses Beispiel, um die Instanz zu aktualisieren. Eine vollständige Liste der Parameter für diesen Aufruf finden Sie auf der Seite Instanzen: insert.

    Wenn diese Aktualisierung einen Wert ändert, der einen Neustart notwendig macht, werden Sie aufgefordert, mit der Änderung fortzufahren oder sie abzubrechen.

    Ersetzen Sie diese Werte in den folgenden Anfragedaten:

    • PROJECT_ID: die ID oder Projektnummer des Google Cloud-Projekts, das die Instanz enthält
    • INSTANCE_NAME: Name der Instanz

    HTTP-Methode und URL:

    PATCH https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME

    JSON-Text anfordern:

    {
      "settings": {
        "enableGoogleMlIntegration": true,
        "databaseFlags":
          {
            "name": "cloudsql.enable_google_ml_integration",
            "value": "on"
          }
       }
    }

    Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

    Sie sollten in etwa folgende JSON-Antwort erhalten:

    {
      "kind": "sql#operation",
      "targetLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME",
      "status": "PENDING",
      "user": "user@example.com",
      "insertTime": "2020-01-16T02:32:12.281Z",
      "operationType": "UPDATE",
      "name": "OPERATION_ID",
      "targetId": "INSTANCE_NAME",
      "selfLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
      "targetProject": "PROJECT_ID"
    }
    

  3. Gewähren Sie dem Cloud SQL-Dienstkonto IAM-Berechtigungen (Identity and Access Management) für den Zugriff auf Vertex AI.

    gcloud

    Verwenden Sie den Befehl gcloud projects add-iam-policy-binding, um dem Cloud SQL-Dienstkonto für das Projekt, in dem sich die Cloud SQL-Instanz befindet, Vertex AI-Berechtigungen hinzuzufügen:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
      --role="roles/aiplatform.user"

    Ersetzen Sie die folgenden Werte:
    • PROJECT_ID: ID des Projekts mit dem Vertex AI-Endpunkt. Cloud SQL verwendet diesen Endpunkt, um das in Vertex AI gehostete LLM zuzugreifen.
    • SERVICE_ACCOUNT_EMAIL: Die E-Mail-Adresse des 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 Cloud SQL-Instanz. Neben dem Parameter serviceAccountEmailAddress wird die E-Mail-Adresse angezeigt.

  4. Installieren Sie die Erweiterung google_ml_integration in einer Datenbank der primären Cloud SQL-Instanz. Diese Datenbank enthält Daten, für die Sie Vorhersagen erhalten möchten.

    1. Verbinden Sie einen psql-Client mit der primären Instanz, wie unter Verbindung über einen psql-Client herstellen beschrieben.
    2. Stellen Sie über die Eingabeaufforderung psql eine Verbindung zur Datenbank her:
      \c DB_NAME

      Ersetzen Sie DB_NAME durch den Namen der Datenbank, in der Sie die Erweiterung installieren möchten.

    3. Installieren Sie die Erweiterung:
      CREATE EXTENSION IF NOT EXISTS google_ml_integration CASCADE;

Fehlerbehebung

Dieser Abschnitt enthält Informationen zu Problemen bei der Einbindung von Cloud SQL in Vertex AI sowie Schritte zur Fehlerbehebung.

Problem Fehlerbehebung
Fehlermeldung: Google ML integration API is supported only on Postgres version 12 or above. Zum Aktivieren der Vertex AI-Einbindung in Cloud SQL benötigen Sie die Cloud SQL for PostgreSQL-Datenbank Version 12 oder höher. Informationen zum Upgrade Ihrer Datenbank auf diese Version finden Sie unter Direkte Datenbankaktualisierung durchführen.
Fehlermeldung: Google ML Integration API is not supported on shared core instance. Please upsize your machine type. Wenn Sie für den Maschinentyp Ihrer Instanz einen freigegebenen Kern ausgewählt haben, können Sie die Vertex AI-Einbindung nicht in Cloud SQL aktivieren. Führen Sie ein Upgrade Ihres Maschinentyps auf einen dedizierten Kern durch. Weitere Informationen finden Sie unter Maschinentyp.
Fehlermeldung: Google ML Integration is unsupported for this maintenance version. Please follow https://cloud.google.com/sql/docs/postgres/self-service-maintenance to update the maintenance version of the instance. Zum Aktivieren der Vertex AI-Einbindung in Cloud SQL muss die Wartungsversion Ihrer Instanz R20240130 oder höher sein. Informationen zum Upgrade Ihrer Instanz auf diese Version finden Sie unter Self-Service-Wartung.
Fehlermeldung: Cannot invoke ml_predict_row if 'cloudsql.enable_google_ml_integration' is off. Das Datenbank-Flag cloudsql.enable_google_ml_integration ist deaktiviert. Cloud SQL kann nicht in Vertex AI eingebunden werden.

Verwenden Sie zum Aktivieren dieses Flags den Befehl gcloud sql instances patch:

gcloud sql instances patch INSTANCE_NAME --database-flags cloudsql.enable_google_ml_integration=on

Ersetzen Sie INSTANCE_NAME durch den Namen der primären Cloud SQL-Instanz.
Fehlermeldung: Failed to connect to remote host: Connection refused. Die Einbindung zwischen Cloud SQL und Vertex AI ist nicht aktiviert. Verwenden Sie zum Aktivieren dieser Einbindung den gcloud sql instances patch-Befehl:

gcloud sql instances patch INSTANCE_NAME
--enable-google-ml-integration


Ersetzen Sie INSTANCE_NAME durch den Namen der primären Cloud SQL-Instanz.
Fehlermeldung: Vertex AI API has not been used in project PROJECT_ID before or it is disabled. Enable it by visiting /apis/api/aiplatform.googleapis.com/overview?project=PROJECT_ID then retry. Die Vertex AI-API ist nicht aktiviert. Weitere Informationen zum Aktivieren dieser API finden Sie unter Datenbankeinbindung mit Vertex AI aktivieren.
Fehlermeldung: Permission 'aiplatform.endpoints.predict' denied on resource. Vertex AI-Berechtigungen werden dem Cloud SQL-Dienstkonto für das Projekt, in dem sich die Cloud SQL-Instanz befindet, nicht hinzugefügt. Weitere Informationen zum Hinzufügen dieser Berechtigungen zum Dienstkonto finden Sie unter Datenbankeinbindung mit Vertex AI aktivieren.
Fehlermeldung: Publisher Model `projects/PROJECT_ID/locations/REGION_NAME/publishers/google/models/MODEL_NAME` not found. Das ML-Modell oder das LLM sind in Vertex AI nicht vorhanden.
Fehlermeldung: Resource exhausted: grpc: received message larger than max. Die Größe der Anfrage, die Cloud SQL an Vertex AI übergibt, überschreitet das gRPC-Limit von 4 MB pro Anfrage.
Fehlermeldung: Cloud SQL attempts to send a request to Vertex AI. However, the instance is in the %s region, but the Vertex AI endpoint is in the %s region. Make sure the instance and endpoint are in the same region. Cloud SQL versucht, eine Anfrage an Vertex AI zu senden. Die Instanz befindet sich jedoch in einer, der Vertex AI-Endpunkt in einer anderen Region. Zur Behebung dieses Problems müssen sich sowohl die Instanz als auch der Endpunkt in derselben Region befinden.
Fehlermeldung: The Vertex AI endpoint isn't formatted properly. Der Vertex AI-Endpunkt ist nicht richtig formatiert. Weitere Informationen finden Sie unter Private Endpunkte für Onlinevorhersagen verwenden.
Fehlermeldung: Quota exceeded for aiplatform.googleapis.com/online_prediction_requests_per_base_model with base model: textembedding-gecko. Die Anzahl der Anfragen, die Cloud SQL an Vertex AI übergibt, überschreitet das Limit von 1.500 Anfragen pro Minute, Region, Modell und Projekt.

Nächste Schritte