将 Cloud SQL 与 Vertex AI 集成

本页面介绍了如何将 Cloud SQL 与 Vertex AI 集成。借助此集成,您可以将托管在 Vertex AI 中的大语言模型 (LLM) 应用于 Cloud SQL for PostgreSQL 数据库版本 12 及更高版本。

通过将 Cloud SQL 与 Vertex AI 集成,您可以将机器学习 (ML) 模型的语义和预测能力应用于您的数据。此集成通过用于查询模型的两个函数扩展 SQL 语法:

  • 调用预测以在事务中使用 SQL 调用模型。
  • 生成嵌入以使嵌入模型将文本提示转换为数值向量。然后,您可以将这些向量嵌入作为输入应用于 vector 函数。这包括根据文本样本的相对语义距离对其进行比较和排序的方法。

因此,您可以直接在数据库中进行实时预测并获得有价值的数据洞见,从而简化工作流并增强决策制定能力。

如需详细了解 Vertex AI,请参阅 Vertex AI 简介

准备工作

  1. In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Verify that billing is enabled for your Cloud de Confiance project.

  3. 启用必要的 Cloud de Confiance by S3NS API。

    控制台

    1. 进入 API 和服务页面
    2. 从项目列表中,选择一个项目。
    3. 如果 API 库未打开,请从导航菜单中选择
    4. 点击您要启用的 API。对于此过程,请启用 Cloud SQL Admin APIVertex AI API

    5. 选择每个 API 后,点击启用

    gcloud

    1. 打开 Cloud Shell,以直接在浏览器中通过命令行访问您的 Cloud de Confiance by S3NS 资源。
    2. 如需启用所需的 API,请使用 gcloud services enable 命令:
      gcloud services enable sqladmin.googleapis.com \
      enable aiplatform.googleapis.com
    3. 此命令会启用以下 API:
      • Cloud SQL Admin API
      • Vertex AI API

  4. 授予 Cloud SQL 服务账号访问 Vertex AI 的 Identity and Access Management (IAM) 权限。
  5. gcloud

    如需为 Cloud SQL 服务账号添加 Cloud SQL 实例所在的项目的 Vertex AI 权限,请使用 gcloud projects add-iam-policy-binding 命令:

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

    进行以下替换:
    • PROJECT_ID:具有 Vertex AI 端点的项目的 ID。Cloud SQL 使用此端点来访问 Vertex AI 中托管的 LLM。
    • SERVICE_ACCOUNT_EMAIL:Cloud SQL 服务账号的电子邮件地址。

      如需查找此电子邮件地址,请使用 gcloud sql instances describe INSTANCE_NAME 命令,并将 INSTANCE_NAME 替换为 Cloud SQL 实例的名称。serviceAccountEmailAddress 参数旁边显示的值即电子邮件地址。

启用数据库与 Vertex AI 的集成

如需启用数据库与 Vertex AI 的集成,请完成以下步骤:

  1. 创建或更新 Cloud SQL 实例,使该实例可以与 Vertex AI 集成。

    gcloud

    创建实例

    如需创建 Cloud SQL 实例,请使用 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

    进行以下替换:

    • INSTANCE_NAME:实例的名称
    • DATABASE_VERSION:实例的数据库版本(例如 POSTGRES_13
    • MACHINE_TYPE:实例的机器类型
    • REGION_NAME:实例的区域名称

    更新实例

    如需更新实例,请使用 gcloud sql instances patch 命令。

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

    如果此更新修改的值需要重启实例,系统会提示您继续进行更改或取消操作。

    REST v1

    创建实例

    使用此示例创建实例。如需查看此调用的完整参数列表,请参阅 instances:insert 页面。如需了解实例设置,包括有效区域值,请参阅实例设置

    在使用任何请求数据之前,请先进行以下替换:

    • PROJECT_ID:包含实例的 Cloud de Confiance 项目的 ID 或项目编号
    • INSTANCE_NAME:实例的名称
    • REGION_NAME:实例的区域名称
    • DATABASE_VERSION:数据库版本的枚举字符串(例如:POSTGRES_13
    • PASSWORDroot 用户的密码
    • MACHINE_TYPE:机器(层级)类型的枚举字符串,例如:db-custom-[CPUS]-[MEMORY_MBS]
    • EDITION_TYPE:您的 Cloud SQL 版本

    您还必须在请求中添加 enableGoogleMlIntegration 对象。根据需要设置以下参数:

    • enableGoogleMlIntegration:当此参数设置为 true 时,Cloud SQL 实例可以连接到 Vertex AI,以将针对实时预测和数据洞见的请求传递给 AI
    • cloudsql.enable_google_ml_integration:当此参数设置为 on 时,Cloud SQL 可以与 Vertex AI 集成

    HTTP 方法和网址:

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

    请求 JSON 正文:

    {
      "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"
          }
      }
    }
    

    如需发送您的请求,请展开以下选项之一:

    您应该收到类似以下内容的 JSON 响应:

    {
      "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"
    }
    

    更新实例

    使用此示例更新实例。如需查看此调用的完整参数列表,请参阅 instances.patch 页面。

    如果此更新修改的值需要重启实例,系统会提示您继续进行更改或取消操作。

    在使用任何请求数据之前,请先进行以下替换:

    • PROJECT_ID:包含实例的 Cloud de Confiance 项目的 ID 或项目编号
    • INSTANCE_NAME:实例的名称

    HTTP 方法和网址:

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

    请求 JSON 正文:

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

    如需发送您的请求,请展开以下选项之一:

    您应该收到类似以下内容的 JSON 响应:

    {
      "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"
    }