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

ドキュメントのバージョンを選択してください。

このページでは、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 Omni は、google_ml_integration 拡張機能を使用してリモートの ML モデルをクエリできます。

Vertex AI モデルをクエリする場合は、AlloyDB Omni をインストールする前に、Vertex AI で AlloyDB Omni サービス アカウントを構成する必要があります。

リモートモデルをクエリするように AlloyDB Omni を構成する手順は次のとおりです。

  1. Google Cloudを使用してサービス アカウントを作成します。

  2. JSON 形式でサービス アカウント キーを作成してダウンロードします。サービス アカウント キーをメモしておきます。この手順の後半で使用します。

  3. 作成したサービス アカウント キーを KEY_PATH にコピーします。鍵のパスは、AlloyDB Omni コンテナを実行するユーザーがアクセスして所有できるホスト上のパスである必要があります。

  4. Google Cloud プロジェクトで Vertex AI API を有効にします。

    gcloud services enable aiplatform.googleapis.com
    
  5. 適切なプロジェクトとサービス アカウントに 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: 手順 1 で作成したサービス アカウントの ID。これには、@PROJECT_ID.iam.gserviceaccount.com 接尾辞全体が含まれます例: my-service@my-project.iam.gserviceaccount.com

AlloyDB Omni 用に AlloyDB AI を構成する

AlloyDB Omni をインストールして AlloyDB AI を統合するには、root ユーザーとして次の操作を行います。

  1. クラウドベースのモデルをクエリするように AlloyDB Omni を構成するに記載されているすべての手順を完了します。

  2. 同じ名前のコンテナがすでに存在する場合は、そのコンテナを停止して削除します。

    Docker

    docker stop CONTAINER_NAME
    docker rm CONTAINER_NAME

    Docker

    docker stop CONTAINER_NAME
    docker rm CONTAINER_NAME

    Podman

    podman stop CONTAINER_NAME
    podman rm CONTAINER_NAME

    Podman

    podman stop CONTAINER_NAME
    podman rm CONTAINER_NAME

    次のように置き換えます。

    • CONTAINER_NAME: ホストマシンのコンテナ レジストリで AlloyDB Omni コンテナを割り当てる名前。例: my-omni-1
  3. 鍵をコンテナにマウントして、新しい AlloyDB Omni コンテナを起動します。

    Docker

    docker run -d --name CONTAINER_NAME \
    -e POSTGRES_PASSWORD=NEW_PASSWORD \
    -v DATA_DIR:/var/lib/postgresql/data \
    -v "KEY_PATH":/etc/postgresql/private-key.json \
    -p HOST_PORT:5432 \
    --restart=always \
    google/alloydbomni:latest
    

    Docker

    docker run -d --name CONTAINER_NAME \
    -e POSTGRES_PASSWORD=NEW_PASSWORD \
    -v DATA_DIR:/var/lib/postgresql/data \
    -v "KEY_PATH":/etc/postgresql/private-key.json \
    -p HOST_PORT:5432 \
    --restart=always \
    google/alloydbomni:latest
    

    Podman

    podman run -d --name CONTAINER_NAME \
    -e POSTGRES_PASSWORD=NEW_PASSWORD \
    -v DATA_DIR:/var/lib/postgresql/data \
    -v "KEY_PATH":/etc/postgresql/private-key.json \
    -p HOST_PORT:5432 \
    --restart=always \
    docker.io/google/alloydbomni:latest
    

    Podman

    podman run -d --name CONTAINER_NAME \
    -e POSTGRES_PASSWORD=NEW_PASSWORD \
    -v DATA_DIR:/var/lib/postgresql/data \
    -v "KEY_PATH":/etc/postgresql/private-key.json \
    -p HOST_PORT:5432 \
    --restart=always \
    docker.io/google/alloydbomni:latest
    

    次の変数を置き換えます。

    • CONTAINER_NAME: ホストマシンのコンテナ レジストリで AlloyDB Omni コンテナを割り当てる名前。例: my-omni-1
    • NEW_PASSWORD: 新しいコンテナの postgres ユーザーに作成後に割り当てられるパスワード。NEW_PASSWORD は、DATA_DIR が新しいロケーションの場合にのみ新しいパスワードを設定します。
    • DATA_DIR: データが保存されているホスト ディレクトリ パス。
    • KEY_PATH: サービス アカウント キー ファイルのパス。
    • HOST_PORT: コンテナが固有のポート 5432 を公開する、ホストマシン上の TCP ポート。ホストマシン上の PostgreSQL のデフォルト ポートも使用するには、5432 を指定します。
  4. AlloyDB Omni コンテナ内の postgres ユーザーが鍵ファイルを読み取れるようにします。

    Docker

    docker exec CONTAINER_NAME chown postgres /etc/postgresql/private-key.json
    docker exec CONTAINER_NAME chmod 600 /etc/postgresql/private-key.json

    Docker

    docker exec CONTAINER_NAME chown postgres /etc/postgresql/private-key.json
    docker exec CONTAINER_NAME chmod 600 /etc/postgresql/private-key.json

    Podman

    podman exec CONTAINER_NAME chown postgres /etc/postgresql/private-key.json
    podman exec CONTAINER_NAME chmod 600 /etc/postgresql/private-key.json

    Podman

    podman exec CONTAINER_NAME chown postgres /etc/postgresql/private-key.json
    podman exec CONTAINER_NAME chmod 600 /etc/postgresql/private-key.json

    次の変数を置き換えます。

    • CONTAINER_NAME: ホストマシンのコンテナ レジストリで AlloyDB Omni コンテナを割り当てる名前。例: my-omni-1
    • KEY_PATH: サービス アカウント キー ファイルのホストパス。
  5. 次の構成オプションを追加して、AlloyDB Omni を更新します。

    Docker

    docker exec CONTAINER_NAME sh -c "cat << EOF >> /var/lib/postgresql/data/postgresql.conf
    omni_enable_ml_agent_process = 'on'
    omni_google_cloud_private_key_file_path = '/etc/postgresql/private-key.json'
    EOF"
    

    Docker

    docker exec CONTAINER_NAME sh -c "cat << EOF >> /var/lib/postgresql/data/postgresql.conf
    omni_enable_ml_agent_process = 'on'
    omni_google_cloud_private_key_file_path = '/etc/postgresql/private-key.json'
    EOF"
    

    Podman

    podman exec CONTAINER_NAME sh -c "cat << EOF >> /var/lib/postgresql/data/postgresql.conf
    omni_enable_ml_agent_process = 'on'
    omni_google_cloud_private_key_file_path = '/etc/postgresql/private-key.json'
    EOF"
    

    Podman

    podman exec CONTAINER_NAME sh -c "cat << EOF >> /var/lib/postgresql/data/postgresql.conf
    omni_enable_ml_agent_process = 'on'
    omni_google_cloud_private_key_file_path = '/etc/postgresql/private-key.json'
    EOF"
    

    次の変数を置き換えます。

    • CONTAINER_NAME: ホストマシンのコンテナ レジストリで AlloyDB Omni コンテナを割り当てる名前。例: my-omni-1
  6. AlloyDB Omni コンテナを再起動します。

    Docker

    docker restart CONTAINER_NAME
    

    Docker

    docker restart CONTAINER_NAME
    

    Podman

    podman restart CONTAINER_NAME
    

    Podman

    podman restart CONTAINER_NAME
    

    次の変数を置き換えます。

    • CONTAINER_NAME: ホストマシンのコンテナ レジストリで AlloyDB Omni コンテナを割り当てる名前。例: my-omni-1

コンテナ化された psql を使用して接続する

コンテナ化された独自の psql のコピーを使用して AlloyDB Omni データベース サーバーに接続するには、次のコマンドを実行します。

Docker

docker exec -it CONTAINER_NAME psql -U postgres

Docker

docker exec -it CONTAINER_NAME psql -U postgres

Podman

podman exec -it CONTAINER_NAME psql -U postgres

Podman

podman exec -it CONTAINER_NAME psql -U postgres

次の変数を置き換えます。

  • CONTAINER_NAME: ホストマシンのコンテナ レジストリで AlloyDB Omni コンテナを割り当てる名前。例: my-omni-1

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

次のステップ