在 AlloyDB Omni 中安裝 AlloyDB AI

選取說明文件版本:

本頁說明如何安裝 AlloyDB Omni 及整合 AlloyDB AI。

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 查詢遠端模型,請按照下列步驟操作:

  1. 使用 建立服務帳戶。Google Cloud

  2. 建立 JSON 格式的服務帳戶金鑰,然後下載。請記下服務帳戶金鑰,因為稍後會在本程序中使用。

  3. 將您建立的服務帳戶金鑰複製到 KEY_PATH。金鑰路徑應為主機上可存取的路徑,且由將執行 AlloyDB Omni 容器的使用者擁有。

  4. 在專案中啟用 Vertex AI API。 Google Cloud

    gcloud services enable aiplatform.googleapis.com
    
  5. 為適當的專案和服務帳戶新增 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,請以根使用者身分完成下列步驟:

  1. 完成「設定 AlloyDB Omni 來查詢雲端式模型」一文列出的所有步驟。

  2. 如果已有同名的現有容器,請停止並移除該容器。

    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
  3. 啟動新的 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
  4. 讓 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:服務帳戶金鑰檔案的主機路徑。
  5. 新增下列設定選項,更新 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
  6. 重新啟動 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]

後續步驟