AlloyDB AI 是 AlloyDB Omni 中包含的一套功能,可让您构建企业生成式 AI 应用。如需详细了解 AlloyDB 的 AI/机器学习功能,请参阅构建生成式 AI 应用。
借助具有 AlloyDB AI 的 AlloyDB Omni,您可以查询远程机器学习模型,以使用从机器学习模型生成的在线预测和文本嵌入。具有 AlloyDB AI 的 AlloyDB Omni 还可以处理来自其他内容(例如图片)的向量嵌入,例如,如果您使用 google_ml.predict_row
接口并自行在查询中进行转换。
配置 AlloyDB Omni 实例以查询远程模型
AlloyDB Omni 可以使用 google_ml_integration
扩展程序查询远程机器学习模型。
(可选)如果您想查询 Vertex AI 模型,必须先使用 Vertex AI 配置 AlloyDB Omni 服务账号,然后再安装 AlloyDB Omni。
如需将 AlloyDB Omni 配置为查询远程模型,请按照以下步骤操作:
使用Google Cloud创建服务账号。
采用 JSON 格式创建服务账号密钥,并下载该密钥。记下服务账号密钥,因为您稍后在此过程中将使用它。
将您创建的服务账号密钥复制到
KEY_PATH
。密钥路径应是主机上可访问且由运行 AlloyDB Omni 容器的用户拥有的路径。在您的 Google Cloud 项目中启用 Vertex AI API。
gcloud services enable aiplatform.googleapis.com
向相应的项目和服务账号添加 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
。
为 AlloyDB Omni 配置 AlloyDB AI
如需安装 AlloyDB Omni 并集成 AlloyDB AI,请以根用户身份完成以下步骤:
完成配置 AlloyDB Omni 以查询云端模型中列出的所有步骤。
如果存在同名的现有容器,请将其停止并移除。
Docker
docker stop CONTAINER_NAME
docker rm CONTAINER_NAME
Docker
docker stop CONTAINER_NAME
docker rm CONTAINER_NAME
Podman
podman stop CONTAINER_NAME
podman rm CONTAINER_NAME
Podman
podman stop CONTAINER_NAME
podman rm CONTAINER_NAME
替换以下内容:
CONTAINER_NAME
:在宿主机的容器注册表中为 AlloyDB Omni 容器分配的名称。例如my-omni-1
。
启动新的 AlloyDB Omni 容器(将密钥装载到容器中)。
Docker
docker run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=NEW_PASSWORD \ -v DATA_DIR:/var/lib/postgresql/data \ -v "KEY_PATH":/etc/postgresql/private-key.json \ -p HOST_PORT:5432 \ --restart=always \ google/alloydbomni:latest
Docker
docker run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=NEW_PASSWORD \ -v DATA_DIR:/var/lib/postgresql/data \ -v "KEY_PATH":/etc/postgresql/private-key.json \ -p HOST_PORT:5432 \ --restart=always \ google/alloydbomni:latest
Podman
podman run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=NEW_PASSWORD \ -v DATA_DIR:/var/lib/postgresql/data \ -v "KEY_PATH":/etc/postgresql/private-key.json \ -p HOST_PORT:5432 \ --restart=always \ docker.io/google/alloydbomni:latest
Podman
podman run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=NEW_PASSWORD \ -v DATA_DIR:/var/lib/postgresql/data \ -v "KEY_PATH":/etc/postgresql/private-key.json \ -p HOST_PORT:5432 \ --restart=always \ docker.io/google/alloydbomni:latest
执行以下变量替换操作:
CONTAINER_NAME
:在宿主机的容器注册表中为 AlloyDB Omni 容器分配的名称。例如my-omni-1
。NEW_PASSWORD
:在创建新容器后为新容器的postgres
用户分配的密码。请注意,仅当DATA_DIR
是新位置时,NEW_PASSWORD
才会设置新密码。DATA_DIR
:存储数据的主机目录路径。KEY_PATH
:服务账号密钥文件的路径。HOST_PORT
:宿主机上的 TCP 端口,容器应将自己的端口5432
发布到该端口。如需也在宿主机上使用 PostgreSQL 默认端口,请指定5432
。
使密钥文件可供 AlloyDB Omni 容器内的
postgres
用户读取。Docker
docker exec CONTAINER_NAME chown postgres /etc/postgresql/private-key.json
docker exec CONTAINER_NAME chmod 600 /etc/postgresql/private-key.json
Docker
docker exec CONTAINER_NAME chown postgres /etc/postgresql/private-key.json
docker exec CONTAINER_NAME chmod 600 /etc/postgresql/private-key.json
Podman
podman exec CONTAINER_NAME chown postgres /etc/postgresql/private-key.json
podman exec CONTAINER_NAME chmod 600 /etc/postgresql/private-key.json
Podman
podman exec CONTAINER_NAME chown postgres /etc/postgresql/private-key.json
podman exec CONTAINER_NAME chmod 600 /etc/postgresql/private-key.json
执行以下变量替换操作:
CONTAINER_NAME
:在宿主机的容器注册表中为 AlloyDB Omni 容器分配的名称。例如my-omni-1
。KEY_PATH
:服务账号密钥文件的主机路径。
通过添加以下配置选项来更新 AlloyDB Omni。
Docker
docker exec CONTAINER_NAME sh -c "cat << EOF >> /var/lib/postgresql/data/postgresql.conf omni_enable_ml_agent_process = 'on' omni_google_cloud_private_key_file_path = '/etc/postgresql/private-key.json' EOF"
Docker
docker exec CONTAINER_NAME sh -c "cat << EOF >> /var/lib/postgresql/data/postgresql.conf omni_enable_ml_agent_process = 'on' omni_google_cloud_private_key_file_path = '/etc/postgresql/private-key.json' EOF"
Podman
podman exec CONTAINER_NAME sh -c "cat << EOF >> /var/lib/postgresql/data/postgresql.conf omni_enable_ml_agent_process = 'on' omni_google_cloud_private_key_file_path = '/etc/postgresql/private-key.json' EOF"
Podman
podman exec CONTAINER_NAME sh -c "cat << EOF >> /var/lib/postgresql/data/postgresql.conf omni_enable_ml_agent_process = 'on' omni_google_cloud_private_key_file_path = '/etc/postgresql/private-key.json' EOF"
执行以下变量替换操作:
CONTAINER_NAME
:在宿主机的容器注册表中为 AlloyDB Omni 容器分配的名称。例如my-omni-1
。
重启 AlloyDB Omni 容器。
Docker
docker restart CONTAINER_NAME
Docker
docker restart CONTAINER_NAME
Podman
podman restart CONTAINER_NAME
Podman
podman restart CONTAINER_NAME
执行以下变量替换操作:
CONTAINER_NAME
:在宿主机的容器注册表中为 AlloyDB Omni 容器分配的名称。例如my-omni-1
。
使用容器化 psql
进行连接
如需使用其自己的容器化 psql
副本连接到 AlloyDB Omni 数据库服务器,请运行以下命令:
Docker
docker exec -it CONTAINER_NAME psql -U postgres
Docker
docker exec -it CONTAINER_NAME psql -U postgres
Podman
podman exec -it CONTAINER_NAME psql -U postgres
Podman
podman exec -it CONTAINER_NAME psql -U postgres
执行以下变量替换操作:
CONTAINER_NAME
:在宿主机的容器注册表中为 AlloyDB Omni 容器分配的名称。例如my-omni-1
。
验证具有 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]
。