このページでは、AlloyDB Omni をインストールして AlloyDB AI を統合する方法について説明します。
AlloyDB AI は、エンタープライズ生成 AI アプリケーションを構築できる AlloyDB Omni に含まれる一連の機能です。AlloyDB の ML 機能の詳細については、生成 AI アプリケーションを作成するをご覧ください。
AlloyDB AI を搭載した AlloyDB Omni では、リモート ML モデルをクエリして、ML モデルから生成されたオンライン予測とテキスト エンベディングを操作できます。AlloyDB AI を搭載した AlloyDB Omni は、画像などの他のコンテンツからベクトル エンベディングを処理することもできます。たとえば、google_ml.predict_row
インターフェースを使用してクエリ内で変換を行う場合などです。
AlloyDB AI で AlloyDB Omni をインストールする場所に応じて、次のいずれかのオプションを選択します。
リモートモデルをクエリするように AlloyDB Omni インスタンスを構成する
データベース クラスタ マニフェストで googleMLExtension
を有効にすると、モデル エンドポイント管理を使用してリモートモデルをクエリできます。
必要に応じて、Vertex AI モデルをクエリする場合は、Vertex AI で AlloyDB サービス アカウントを構成し、キーを使用して Kubernetes シークレットを作成し、データベース クラスタ マニフェストに Kubernetes シークレットを設定する必要があります。
Vertex AI 権限を AlloyDB サービス アカウントに追加する
リモートの Vertex AI モデルをクエリするように AlloyDB Omni を構成する手順は次のとおりです。
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 Secret を作成する
前の手順でダウンロードしたサービス アカウント キーに基づいて Kubernetes Secret を作成するには、次のコマンドを実行します。
kubectl create secret generic SECRET_NAME \
--from-file=PATH_TO_SERVICE_ACCOUNT_KEY/private-key.json \
-n NAMESPACE
次のように置き換えます。
SECRET_NAME
: AlloyDB Omni が AlloyDB AI 機能にアクセスできるようにDBCluster
マニフェストを作成するときに使用されるシークレットの名。例:vertex-ai-key-alloydb
PATH_TO_SERVICE_ACCOUNT_KEY
:private-key.json
サービス アカウント キーをダウンロードした場所のパス。NAMESPACE
: データベース クラスタの Namespace。
AlloyDB Omni オペレーターをインストールする
AlloyDB Omni オペレーターをインストールするの手順に沿って、AlloyDB Omni オペレーターをインストールします。
AlloyDB AI を使用してデータベース クラスタを作成する
AlloyDB AI を使用してデータベース クラスタを作成します。
googleMLExtension
フィールドでenabled
をtrue
に設定すると、リモートモデルをクエリできます。Vertex AI モデルをクエリする場合は、vertexAIKeyRef
を Kubernetes Secret に設定します。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.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 文字列としてエンコードされます(例:ChangeMe123
の場合はQ2hhbmdlTWUxMjM=
)。CPU_COUNT
: このデータベース クラスタ内の各データベース インスタンスで使用できる CPU の数。MEMORY_SIZE
: このデータベース クラスタのデータベース インスタンスあたりのメモリ量。CPU ごとに 8 ギガバイトに設定することをおすすめします。たとえば、このマニフェストの前半で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]
です。