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 執行個體,查詢遠端模型
您可以在資料庫叢集資訊清單中啟用 googleMLExtension,透過模型端點管理服務查詢遠端模型。
如要查詢 Vertex AI 模型,您必須設定 AlloyDB 服務帳戶與 Vertex AI,使用金鑰建立 Kubernetes 密鑰,並在資料庫叢集資訊清單中設定 Kubernetes 密鑰。
為 AlloyDB 服務帳戶新增 Vertex AI 權限
如要設定 AlloyDB Omni 查詢遠端 Vertex AI 模型,請按照下列步驟操作:
- 使用 建立服務帳戶。Google Cloud 
- 建立服務帳戶金鑰,並以 JSON 格式儲存至 - private-key.json檔案,然後下載。
- 將金鑰儲存在檔案系統的永久位置。在 AlloyDB Omni 伺服器的生命週期內,這個檔案都會位於這個位置。 - 記下檔案在檔案系統中的位置,後續步驟會用到。 
- 為適當的專案和服務帳戶新增 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 建立資料庫叢集
- 使用 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: "15.7.1" 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 字串編碼,例如- ChangeMe123的- Q2hhbmdlTWUxMjM=。
- CPU_COUNT:這個資料庫叢集中每個資料庫執行個體可用的 CPU 數量。
- MEMORY_SIZE:這個資料庫叢集的每個資料庫執行個體記憶體量。建議您將每個 CPU 的記憶體設為 8 GB。舉例來說,如果您在資訊清單中將- cpu設為- 2,建議將- memory設為- 16Gi。
- DISK_SIZE:每個資料庫執行個體的磁碟大小,例如- 10Gi。
 
- 套用資訊清單。 - 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 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]。