本页介绍了如何安装 AlloyDB Omni 并集成 AlloyDB AI。
AlloyDB AI 是 AlloyDB Omni 附带的一套功能,可让您构建企业生成式 AI 应用。如需详细了解 AlloyDB 的 AI/ML 功能,请参阅构建生成式 AI 应用。
借助 AlloyDB Omni 和 AlloyDB AI,您可以查询远程机器学习模型,以使用机器学习模型生成的在线预测和文本嵌入。结合使用 AlloyDB Omni 和 AlloyDB AI 还可以处理其他内容(例如图片)中的向量嵌入,例如,如果您使用 google_ml.predict_row
接口并在查询中自行进行转换。
根据您要将 AlloyDB Omni with AlloyDB AI 安装在何处,选择以下选项之一:
配置 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
:您在第 1 步中创建的服务账号的 ID。其中包括完整的@PROJECT_ID.iam.gserviceaccount.com
后缀。例如my-service@my-project.iam.gserviceaccount.com
。
为 AlloyDB Omni 配置 AlloyDB AI
如需安装 AlloyDB Omni 并集成 AlloyDB AI,请以 root 用户身份完成以下步骤:
完成配置 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
进行连接
如需使用 AlloyDB Omni 数据库服务器自己的容器化 psql
副本连接到该服务器,请运行以下命令:
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]
。