AlloyDB Omni に AlloyDB AI をインストールする

このページでは、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 を構成する手順は次のとおりです。

  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 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 を使用してデータベース クラスタを作成する

  1. AlloyDB AI を使用してデータベース クラスタを作成します。

    googleMLExtension フィールドで enabledtrue に設定すると、リモートモデルをクエリできます。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 ギガバイトに設定することをおすすめします。たとえば、このマニフェストの前半で cpu2 に設定した場合は、memory16Gi に設定することをおすすめします。

    • 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 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] です。

次のステップ