在 AlloyDB Omni 中安装 AlloyDB AI

本页面介绍了如何安装 AlloyDB Omni 并集成 AlloyDB AI。

AlloyDB AI 是 AlloyDB Omni 中包含的一套功能,可让您构建企业生成式 AI 应用。如需详细了解 AlloyDB 的 AI/ML 功能,请参阅构建生成式 AI 应用

借助具有 AlloyDB AI 的 AlloyDB Omni,您可以查询远程机器学习模型,以使用从机器学习模型生成的在线预测和文本嵌入。具有 AlloyDB AI 的 AlloyDB Omni 还可以处理来自其他内容(例如图片)的向量嵌入,例如,如果您使用 google_ml.predict_row 接口并自行在查询中进行转换。

根据您要在其中安装具有 AlloyDB AI 的 AlloyDB Omni 的位置,选择以下选项之一:

将 AlloyDB Omni 实例配置为查询远程模型

您可以在数据库集群清单中启用 googleMLExtension,以使用模型端点管理查询远程模型。

(可选)如果您想查询 Vertex AI 模型,必须使用 Vertex AI 配置 AlloyDB 服务账号,使用密钥创建 Kubernetes Secret,并在数据库集群清单中设置 Kubernetes Secret。

向 AlloyDB 服务账号添加 Vertex AI 权限

如需将 AlloyDB Omni 配置为查询远程 Vertex AI 模型,请按照以下步骤操作:

  1. 使用Google Cloud创建服务账号

  2. 创建服务账号密钥,并将其以 JSON 格式保存到 private-key.json 文件中,然后下载该文件。

  3. 将密钥存储在文件系统中的永久位置中。在 AlloyDB Omni 服务器的生命周期内,它都驻留在此位置。

    记下该文件在文件系统中的位置,您需要在后续步骤中使用它。

  4. 向相应的项目和服务账号添加 Vertex AI Identity and Access Management (IAM) 权限。

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

    替换以下内容:

    • PROJECT_ID:您的 Google Cloud 项目的 ID。

    • SERVICE_ACCOUNT_ID:您在上一步中创建的服务账号的 ID。其中包括完整的 @PROJECT_ID.iam.gserviceaccount.com 后缀,例如 my-service@my-project.iam.gserviceaccount.com

使用服务账号密钥创建 Kubernetes Secret

如需根据上述步骤中下载的服务账号密钥创建 Kubernetes Secret,请运行以下命令:

kubectl create secret generic SECRET_NAME \
--from-file=PATH_TO_SERVICE_ACCOUNT_KEY/private-key.json \
-n NAMESPACE

替换以下内容:

  • SECRET_NAME:创建 DBCluster 清单时使用的 Secret 名称,以让 AlloyDB Omni 访问 AlloyDB AI 功能。例如 vertex-ai-key-alloydb

  • PATH_TO_SERVICE_ACCOUNT_KEY:您下载 private-key.json 服务账号密钥的位置的路径。

  • NAMESPACE:数据库集群的命名空间。

安装 AlloyDB Omni operator

按照安装 AlloyDB Omni operator 中列出的步骤安装 AlloyDB Omni operator。

使用 AlloyDB AI 创建数据库集群

  1. 使用 AlloyDB AI 创建数据库集群。

    googleMLExtension 字段下将 enabled 设置为 true 后,您就可以查询远程模型。如果您想查询 Vertex AI 模型,请将 vertexAIKeyRef 设置为 Kubernetes Secret。

    apiVersion: v1
    kind: Secret
    metadata:
      name: db-pw-DB_CLUSTER_NAME
    type: Opaque
    data:
      DB_CLUSTER_NAME: "ENCODED_PASSWORD"
    ---
    apiVersion: alloydbomni.dbadmin.goog/v1
    kind: DBCluster
    metadata:
      name: DB_CLUSTER_NAME
    spec:
    databaseVersion: "15.7.1"
    primarySpec:
        adminUser:
          passwordRef:
            name: db-pw-DB_CLUSTER_NAME
        features:
          googleMLExtension:
            enabled: true
            config:
              vertexAIKeyRef: VERTEX_AI_SECRET_NAME
              vertexAIRegion: VERTEX_AI_REGION
        resources:
          cpu: CPU_COUNT
          memory: MEMORY_SIZE
          disks:
          - name: DataDisk
            size: DISK_SIZE
            storageClass: standard
    

    替换以下内容:

    • DB_CLUSTER_NAME:此数据库集群的名称,例如 my-db-cluster

    • VERTEX_AI_SECRET_NAME(可选):您在上述步骤中创建的 Vertex AI Secret。如果您想调用 Vertex AI 模型,则必须设置此选项。

    • VERTEX_AI_REGION(可选):您要将请求发送到的 Vertex AI 区域端点,例如 us-west4。默认值为 us-central1

    • ENCODED_PASSWORD:默认 postgres 用户角色的数据库登录密码(以 base64 字符串编码),例如 ChangeMe123Q2hhbmdlTWUxMjM=

    • CPU_COUNT:此数据库集群中每个数据库实例可用的 CPU 数量。

    • MEMORY_SIZE:此数据库集群中每个数据库实例的内存量。建议将此值设置为每个 CPU 8 千兆字节。例如,如果您在此清单中之前将 cpu 设置为 2,则我们建议将 memory 设置为 16Gi

    • DISK_SIZE:每个数据库实例的磁盘大小,例如 10Gi

  2. 应用清单。

    kubectl apply -f DB_CLUSTER_YAML

    替换以下内容:

    • DB_CLUSTER_YAML:此数据库集群清单文件的名称,例如 alloydb-omni-db-cluster.yaml

使用预安装的 psql 进行连接

您可以使用已安装在运行数据库的 Pod 上的 psql 客户端建立测试连接。

为此,请运行以下命令:

export DBPOD=`kubectl get pod --selector=alloydbomni.internal.dbadmin.goog/dbcluster=DB_CLUSTER_NAME,alloydbomni.internal.dbadmin.goog/task-type=database -o jsonpath='{.items[0].metadata.name}'`
kubectl exec -ti $DBPOD -c database -- psql -h localhost -U postgres

DB_CLUSTER_NAME 替换为数据库集群的名称。该名称与您在创建数据库集群时声明的名称相同。

输入该命令后,数据库服务器会提示您输入密码。 输入您在创建数据库集群时,作为 Kubernetes Secret 提供的 base64 编码版本的密码。例如,如果您使用 Secret Q2hhbmdlTWUxMjM= 创建了数据库集群,则此处要使用的登录密码为 ChangeMe123

验证具有 AlloyDB AI 的 AlloyDB Omni 安装

如需验证安装是否成功并使用模型预测,请输入以下内容:

CREATE EXTENSION IF NOT EXISTS google_ml_integration CASCADE;

SELECT array_dims(embedding('text-embedding-005', 'AlloyDB AI')::real[]);

输出类似于以下内容:

array_dims
------------
[1:768]
(1 row) 

在上一个查询中,embedding() 调用会为输入文本 AlloyDB AI 生成嵌入。array_dims 会返回 embedding() 返回的数组的维度。由于 text-embedding-005 模型返回具有 768 个维度的输出,因此输出为 [768]

后续步骤