在 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 AI 的位置,選取下列其中一個選項:

設定 AlloyDB Omni 執行個體,查詢遠端模型

您可以在資料庫叢集資訊清單中啟用 googleMLExtension,透過模型端點管理服務查詢遠端模型。

如要查詢 Vertex AI 模型,您必須設定 AlloyDB 服務帳戶與 Vertex AI,使用金鑰建立 Kubernetes 密鑰,並在資料庫叢集資訊清單中設定 Kubernetes 密鑰。

為 AlloyDB 服務帳戶新增 Vertex AI 權限

如要設定 AlloyDB Omni 查詢遠端 Vertex AI 模型,請按照下列步驟操作:

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

  2. 建立服務帳戶金鑰,並以 JSON 格式儲存至 private-key.json 檔案,然後下載。

  3. 將金鑰儲存在檔案系統的永久位置。在 AlloyDB Omni 伺服器的生命週期內,這個檔案都會位於這個位置。

    記下檔案在檔案系統中的位置,後續步驟會用到。

  4. 為適當的專案和服務帳戶新增 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 密鑰

如要根據先前步驟下載的服務帳戶金鑰建立 Kubernetes 密鑰,請執行下列指令:

kubectl create secret generic SECRET_NAME \
--from-file=PATH_TO_SERVICE_ACCOUNT_KEY/private-key.json \
-n NAMESPACE

更改下列內容:

  • :建立 DBCluster 資訊清單時使用的密鑰名稱,可讓 AlloyDB Omni 存取 AlloyDB AI 功能。SECRET_NAME例如:vertex-ai-key-alloydb

  • PATH_TO_SERVICE_ACCOUNT_KEY:您下載 private-key.json 服務帳戶金鑰的路徑。

  • NAMESPACE:資料庫叢集的命名空間。

安裝 AlloyDB Omni 運算子

按照「安裝 AlloyDB Omni 運算子」一文中的步驟,安裝 AlloyDB Omni 運算子。

使用 AlloyDB AI 建立資料庫叢集

  1. 使用 AlloyDB AI 建立資料庫叢集。

    googleMLExtension 欄位下將 enabled 設為 true,即可查詢遠端模型。如要查詢 Vertex AI 模型,請將 vertexAIKeyRef 設為 Kubernetes 密鑰。

    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: "16.8.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 字串編碼,例如 ChangeMe123Q2hhbmdlTWUxMjM=

    • CPU_COUNT:這個資料庫叢集中每個資料庫執行個體可用的 CPU 數量。

    • MEMORY_SIZE:這個資料庫叢集的每個資料庫執行個體記憶體量。建議您將每個 CPU 的記憶體設為 8 GB。舉例來說,如果您先前在這個資訊清單中將 cpu 設為 2,建議將 memory 設為 16Gi

    • DISK_SIZE:每個資料庫執行個體的磁碟大小,例如 10Gi

  2. 套用資訊清單。

    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 編碼密碼。舉例來說,如果您使用 Q2hhbmdlTWUxMjM= 密碼建立資料庫叢集,則這裡使用的登入密碼為 ChangeMe123

驗證 AlloyDB Omni 和 AlloyDB AI 安裝作業

如要確認安裝是否成功並使用模型預測,請輸入下列內容:

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]

後續步驟