AlloyDB AI 是 AlloyDB Omni 內含的一系列功能,可讓您建構企業生成式 AI 應用程式。如要進一步瞭解 AlloyDB 的 AI/ML 功能,請參閱「建構生成式 AI 應用程式」。
AlloyDB Omni 搭配 AlloyDB AI 可讓您查詢遠端 ML 模型,並使用 ML 模型產生的線上預測和文字嵌入。如果您使用 google_ml.predict_row
介面,並在查詢中自行翻譯,AlloyDB Omni 搭配 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 容器的使用者擁有。在專案中啟用 Vertex AI API。 Google Cloud
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
使用者在建立後獲派的密碼。請注意,只有在NEW_PASSWORD
是新地點時,DATA_DIR
才會設定新密碼。DATA_DIR
:儲存資料的主機目錄路徑。KEY_PATH
:服務帳戶金鑰檔案的路徑。HOST_PORT
:容器應將自己的通訊埠5432
發布至主機的 TCP 通訊埠。如要在主機上使用 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]
。