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 を構成する手順は次のとおりです。
- Google Cloudを使用してサービス アカウントを作成します。 
- JSON 形式でサービス アカウント キーを作成してダウンロードします。サービス アカウント キーをメモしておきます。この手順の後半で使用します。 
- 作成したサービス アカウント キーを - KEY_PATHにコピーします。鍵のパスは、AlloyDB Omni コンテナを実行するユーザーがアクセスして所有できるホスト上のパスである必要があります。
- Google Cloud プロジェクトで Vertex AI API を有効にします。 - gcloud services enable aiplatform.googleapis.com 
- 適切なプロジェクトとサービス アカウントに 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 ユーザーとして次の操作を行います。
- クラウドベースのモデルをクエリするように AlloyDB Omni を構成するに記載されているすべての手順を完了します。 
- 同じ名前のコンテナがすでに存在する場合は、そのコンテナを停止して削除します。 - 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
 
- 鍵をコンテナにマウントして、新しい 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を指定します。
 
- 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: サービス アカウント キー ファイルのホストパス。
 
- 次の構成オプションを追加して、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
 
- 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 Omni で AlloyDB AI のインストールを確認する
インストールが正常に完了し、モデル予測が使用されていることを確認するには、次のコマンドを入力します。
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] です。