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