このページでは、AlloyDB Omni をインストールして AlloyDB AI を統合する方法について説明します。
AlloyDB AI は、エンタープライズ生成 AI アプリケーションを構築できる AlloyDB Omni に含まれる一連の機能です。AlloyDB の AI / ML 機能の詳細については、生成 AI アプリケーションを作成するをご覧ください。
AlloyDB Omni で AlloyDB AI を使用すると、リモート ML モデルをクエリして、ML モデルから生成されたオンライン予測とテキスト エンベディングを操作できます。また、google_ml.predict_row
インターフェースを使用してクエリ内で変換を行うなど、画像などの他のコンテンツからベクトル エンベディングを処理することもできます。
AlloyDB Omni と AlloyDB AI をインストールする場所に応じて、次のいずれかのオプションを選択します。
リモートモデルをクエリするように AlloyDB Omni インスタンスを構成する
データベース クラスタ マニフェストで googleMLExtension
を有効にすると、モデル エンドポイント管理を使用してリモートモデルをクエリできます。
Vertex AI モデルをクエリする場合は、Vertex AI で AlloyDB サービス アカウントを構成し、その鍵を使用して Kubernetes Secret を作成して、データベース クラスタ マニフェストに Kubernetes Secret を設定する必要があります。
AlloyDB サービス アカウントに Vertex AI 権限を追加する
リモート 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
マニフェストの作成時に使用される Secret の名前。例:vertex-ai-key-alloydb
PATH_TO_SERVICE_ACCOUNT_KEY
:private-key.json
サービス アカウント キーをダウンロードした場所のパス。NAMESPACE
: データベース クラスタの Namespace。
AlloyDB Omni Operator をインストールする
AlloyDB Omni Operator をインストールするの手順に沿って、AlloyDB Omni Operator をインストールします。
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 Secret。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=
の Secret を使用してデータベース クラスタを作成した場合、ここで使用するログイン パスワードは 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]
です。