本页介绍了如何安装 AlloyDB Omni 并在其中集成 AlloyDB AI。
AlloyDB AI 是 AlloyDB Omni 附带的一套功能,可让您构建企业生成式 AI 应用。如需详细了解 AlloyDB 的 ML 功能,请参阅构建生成式 AI 应用。
借助 AlloyDB Omni 和 AlloyDB AI,您可以查询远程机器学习模型,以使用机器学习模型生成的在线预测和文本嵌入。内置 AlloyDB AI 的 AlloyDB Omni 还可以处理其他内容(例如图片)中的向量嵌入,例如,如果您使用 google_ml.predict_row
接口并在查询中自行进行转换。
根据您要将 AlloyDB Omni with AlloyDB AI 安装在何处,选择以下选项之一:
配置 AlloyDB Omni 实例以查询远程模型
您可以在数据库集群清单中启用 googleMLExtension
,以便使用模型端点管理功能查询远程模型。
(可选)如果您想查询 Vertex AI 模型,则必须使用 Vertex AI 配置 AlloyDB 服务账号,使用密钥创建 Kubernetes 密钥,并在数据库集群清单中设置 Kubernetes 密钥。
向 AlloyDB 服务账号添加 Vertex AI 权限
如需配置 AlloyDB Omni 以查询远程 Vertex AI 模型,请按以下步骤操作:
使用 Google Cloud创建服务账号。
创建服务账号密钥,将其以 JSON 格式保存到
private-key.json
文件中,然后下载该文件。将密钥存储在文件系统中的永久位置。它会在 AlloyDB Omni 服务器的整个生命周期内保留在此位置。
记下该文件在文件系统中的位置,您需要在后续步骤中使用该位置。
向相应的项目和服务账号添加 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 创建数据库集群
使用 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.0" 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 密钥。如果您想调用 Vertex AI 模型,则必须设置此选项。VERTEX_AI_REGION
(可选):您要将请求发送到的 Vertex AI 区域端点,例如us-west4
。默认值为us-central1
。ENCODED_PASSWORD
:默认postgres
用户角色的数据库登录密码,编码为 base64 字符串,例如ChangeMe123
的Q2hhbmdlTWUxMjM=
。CPU_COUNT
:此数据库集群中每个数据库实例可用的 CPU 数量。MEMORY_SIZE
:此数据库集群中每个数据库实例的内存量。我们建议将此值设置为每个 CPU 8 GB。例如,如果您在此清单中之前将cpu
设置为2
,则建议将memory
设置为16Gi
。DISK_SIZE
:每个数据库实例的磁盘大小,例如10Gi
。
应用清单。
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]
。