Private Service Connect を使用すると、異なるグループ、チーム、プロジェクト、組織に属する VPC ネットワーク全体でサービスをプライベートに利用できます。VPC ネットワーク内部で定義した IP アドレスを使用してサービスを公開し、使用できます。また、ベクトル検索エンドポイントでは、ベクトル類似性検索を実行できます。
ベクトル検索エンドポイントで Private Service Connect を有効にするのは、次のようなユースケースに適しています。
- ベクトル検索サービスのバックエンドに、低レイテンシかつ安全に接続する必要がある。
- 排他的 VPC ピアリング予約用の IP 空間が限られている。
- 複数のユーザー VPC ネットワークから、サービスを提供するバックエンドにアクセスする必要がある。
Private Service Connect の設定の詳細については、Virtual Private Cloud(VPC)ドキュメントの Private Service Connect の概要をご覧ください。
インデックス エンドポイントを作成する
エンドポイントを作成するときに Private Service Connect を有効にする必要があります。この手順は、Vertex AI で他のエンドポイントを作成するときと同様です。
REST
PROJECT: Vertex AI リソースを作成するサービス プロジェクトの ID。
REGION: ネットワーク リージョン。
DISPLAY_NAME: エンドポイントに付ける表示名。この名前はエンドポイントの ID の作成に使用され、後で更新することはできません。
VPC_PROJECTS: 共有 VPC の設定の場合、これは VPC ホスト プロジェクトのカンマ区切りリストです。スタンドアロン VPC 設定の場合、これは PROJECT と同じです。
PROJECT=PROJECT_ID
VPC_PROJECT=VPC_PROJECT_ID
REGION=us-central1
VERTEX_ENDPOINT=REGION-aiplatform.googleapis.com
curl -H "Content-Type: application/json" \
-H "Authorization: Bearer `gcloud auth print-access-token`" \
https://REGION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/REGION/indexEndpoints \
-d '{
"displayName": "DISPLAY_NAME",
"privateServiceConnectConfig": {
"enablePrivateServiceConnect": true,
"projectAllowlist": [ "VPC_PROJECT_1", "VPC_PROJECT_2", "VPC_PROJECT_N"]
}
}
コンソール
エンドポイントを作成するには:
次のボタンをクリックして、 Google Cloud コンソールのベクトル検索に移動します。アクティブなインデックスのリストが表示されます。
[インデックス エンドポイント] タブを選択します。インデックス エンドポイントが表示されます。
[
新しいエンドポイントを作成] をクリックします。[新しいインデックス エンドポイントを作成] パネルが開きます。[表示名] に、インデックス エンドポイントの表示名を入力します。この名前はエンドポイントの ID の作成に使用され、後で更新することはできません。
[リージョン] プルダウンからリージョンを選択します。
[アクセス] で [Private Service Connect(プレビュー)] をクリックします。
使用する VPC プロジェクトを指定できるテキスト フィールドが表示されます。使用する VPC プロジェクトの ID または番号を追加します。
[作成] をクリックします。
インデックスのデプロイ オプションについて
インデックスは、自動または手動のサービス接続でデプロイできます。
- Private Service Connect の自動化でデプロイする: サービス接続ポリシーを設定し、インデックスをデプロイします。サービス接続ポリシーを設定すると、コンピューティング アドレスと転送ルールを毎回作成しなくても、特定のネットワークにデプロイできます。
- 手動接続でデプロイする: インデックスをデプロイし、コンピューティング アドレスと転送ルールを手動で作成します。同じサービス アタッチメント URI に複数の IP アドレスを使用する必要がある場合は、このオプションを選択します。ただし、これは一般的なユースケースではありません。
Private Service Connect の自動化でデプロイする
サービス接続ポリシーを設定すると、各インデックスのデプロイ後にコンピューティング アドレスと転送ルールを手動で作成する必要がなくなります。
- まず、インデックスをデプロイするネットワーク、サービスクラス、リージョンを指定するサービス接続ポリシーを作成します。これは、1 回限りの設定です。すでにこれを行っている場合は、次の手順に進みます。
- インデックスのデプロイ
制限事項
自動化では、プロジェクトごとにネットワークごとに 1 つの IP アドレスのみを使用できます。複数の IP アドレスを使用する必要がある場合は、インデックスを手動でデプロイするをご覧ください。
サービス接続ポリシーを作成する
インデックスのデプロイを自動化するためのサービス接続ポリシーを作成するには、ネットワーク管理者である必要があります。
インデックスのデプロイを自動化する手順は次のとおりです。
サービス接続ポリシーを作成します。
PROJECT: Vertex AI リソースを作成するサービス プロジェクト。
VPC_PROJECT: クライアント VPC が存在するプロジェクト。単一 VPC 設定の場合、これは $PROJECT と同じです。共有 VPC 設定では、VPC ホスト プロジェクトです。
NETWORK_NAME: デプロイ先のネットワークの名前(
projects/
の形式)。/global/networks/ REGION: ネットワーク リージョン。
PSC_SUBNETS: 使用する Private Service Connect サブネット。
gcloud network-connectivity service-connection-policies create <policy_name> \ --project=<vpc_project> --network=<network_name> # in the format projects/<project_id>/global/networks/<network_name> \ --service-class=gcp-vertexai --region=<region> --subnets=<psc subnets>
サービス接続ポリシーを表示します。
gcloud network-connectivity service-connection-policies list --project=<vpc_project> -–region=<region>
サービス接続ポリシーの詳細については、サービス接続ポリシーを構成するをご覧ください。
インデックスのデプロイ
REST
PROJECT: Vertex AI リソースを作成するサービス プロジェクト。
VPC_PROJECT: クライアント VPC が存在するプロジェクト。共有 VPC 設定の場合、これは VPC ホスト プロジェクトです。
DISPLAY_NAME: エンドポイントに付ける表示名。この名前はエンドポイントの ID の作成に使用され、後で更新することはできません。
NETWORK_NAME: デプロイ先のネットワークの名前(
projects/
の形式)。/global/networks/ REGION: ネットワーク リージョン。
PSC_SUBNETS: 使用する Private Service Connect サブネット。
PROJECT=PROJECT
VPC_PROJECTS=VPC_PROJECTS
REGION=REGION
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)"
-H "Content-Type: application/json; charset=utf-8" "https://LOCATIONAL_ENDPOINT.googleapis.com/v1/projects/PROJECT_NUMBER/locations/REGION/indexEndpoints/INDEX_ENDPOINT_ID:deployIndex"
-d '{
"deployedIndex": {
"id": "DEPLOYED_INDEX_ID",
"index": "projects/PROJECT/locations/us-central1/indexes/INDEX_ID ",
"displayName": "DISPLAY_NAME",
"psc_automation_configs": [
{ "project_id": "PROJECT_1", "network": "NETWORK_NAME_1" },
{ "project_id": "PROJECT_2", "network": "NETWORK_NAME_2" },
{ "project_id": "PROJECT_N", "network": "NETWORK_NAME_N" }]
}
}'
コンソール
エンドポイントをデプロイするには:
次のボタンをクリックして、 Google Cloud コンソールのベクトル検索に移動します。アクティブなインデックスのリストが表示されます。
デプロイする Private Service Connect 対応のベクトル検索エンドポイントの [デプロイ] ボタンをクリックします。[インデックスをデプロイ] スライドアウト パネルが表示されます。
[表示名] に、デプロイされたインデックスの表示名を入力します。この名前は ID の作成に使用され、後で更新することはできません。
[エンドポイント] をクリックし、デプロイするインデックス エンドポイントを選択します。
必要に応じて、[マシンタイプ] をクリックして、インデックスをデプロイするマシンのタイプを手動で選択します。デフォルトでは、マシンタイプはインデックス シャードサイズに基づいて自動的に選択されます。
Private Service Connect の自動化構成を追加する必要があります。手順は次のとおりです。
[PSC automation configs] セクションで、
[Add new config] をクリックします。接続する VPC プロジェクトの名前を入力します。
接続する VPC プロジェクトのネットワーク名を入力します。
projects/
<project_number>
/global/networks/
<network_name>
の形式にする必要があります。必要に応じて、[
新しい構成を追加] をクリックして、Private Service Connect の自動化構成の追加を続けます。[デプロイ] をクリックして終了します。
サービス接続ポリシーの削除
サービス接続ポリシーを削除する必要がある場合は、次のコマンドを実行します。
gcloud network-connectivity service-connection-policies delete --project=<vpc_project> –-region=<region> <policy_name>
サービス接続ポリシーの詳細については、サービス接続ポリシーを構成するをご覧ください。
手動接続でデプロイする
インデックスをデプロイし、VPC プロジェクトに転送ルールを作成します。
インデックスのデプロイ
インデックスの準備が整ったので、この手順では、Private Service Connect を有効にして作成したエンドポイントに、インデックスをデプロイします。
gcloud
この例では、gcloud ai index-endpoints deploy-index
コマンドを使用します。後述のコマンドデータを使用する前に、次のように置き換えます。
- INDEX_ENDPOINT_ID: インデックス エンドポイントの ID。
- DEPLOYED_INDEX_ID: デプロイされたインデックスを一意に識別するユーザー指定の文字列。先頭は英字にします。英字、数字、アンダースコアのみ使用できます。形式のガイドラインについては、DeployedIndex.id をご覧ください。
- DEPLOYED_INDEX_ENDPOINT_NAME: デプロイされたインデックス エンドポイントの表示名。
- INDEX_ID: インデックスの ID。
- LOCATION: Vertex AI を使用するリージョン。
- PROJECT_ID: 実際の Google Cloud プロジェクト ID。
次のコマンドを実行します。
Linux、macOS、Cloud Shell
gcloud ai index-endpoints deploy-index INDEX_ENDPOINT_ID \ --deployed-index-id=DEPLOYED_INDEX_ID \ --display-name=DEPLOYED_INDEX_ENDPOINT_NAME \ --index=INDEX_ID \ --region=LOCATION \ --project=PROJECT_ID
Windows(PowerShell)
gcloud ai index-endpoints deploy-index INDEX_ENDPOINT_ID ` --deployed-index-id=DEPLOYED_INDEX_ID ` --display-name=DEPLOYED_INDEX_ENDPOINT_NAME ` --index=INDEX_ID ` --region=LOCATION ` --project=PROJECT_ID
Windows(cmd.exe)
gcloud ai index-endpoints deploy-index INDEX_ENDPOINT_ID ^ --deployed-index-id=DEPLOYED_INDEX_ID ^ --display-name=DEPLOYED_INDEX_ENDPOINT_NAME ^ --index=INDEX_ID ^ --region=LOCATION ^ --project=PROJECT_ID
REST
リクエストのデータを使用する前に、次のように置き換えます。
- INDEX_ENDPOINT_ID: インデックス エンドポイントの ID。
- DEPLOYED_INDEX_ID: デプロイされたインデックスを一意に識別するユーザー指定の文字列。先頭は英字にします。英字、数字、アンダースコアのみ使用できます。形式のガイドラインについては、DeployedIndex.id をご覧ください。
- DEPLOYED_INDEX_ENDPOINT_NAME: デプロイされたインデックス エンドポイントの表示名。
- INDEX_ID: インデックスの ID。
- LOCATION: Vertex AI を使用するリージョン。
- PROJECT_ID: 実際の Google Cloud プロジェクト ID。
- PROJECT_NUMBER: プロジェクトに自動生成されたプロジェクト番号。
HTTP メソッドと URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/indexEndpoints/INDEX_ENDPOINT_ID:deployIndex
リクエストの本文(JSON):
{ "deployedIndex": { "id": "DEPLOYED_INDEX_ID", "index": "projects/PROJECT_ID/locations/LOCATION/indexes/INDEX_ID", "displayName": "DEPLOYED_INDEX_ENDPOINT_NAME" } }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/indexEndpoints/INDEX_ENDPOINT_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.v1.DeployIndexOperationMetadata", "genericMetadata": { "createTime": "2022-10-19T17:53:16.502088Z", "updateTime": "2022-10-19T17:53:16.502088Z" }, "deployedIndexId": "DEPLOYED_INDEX_ID" } }
Terraform
次のサンプルでは、vertex_ai_index_endpoint_deployed_index
Terraform リソースを使用して、デプロイするインデックス エンドポイントを作成します。
Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
Python
Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。詳細については、Python API リファレンス ドキュメントをご覧ください。
コンソール
次の手順でインデックスをデプロイします。
- Google Cloud コンソールの [Vertex AI] セクションで、[デプロイと使用] セクションに移動します。[ベクトル検索] を選択します。
[ベクトル検索] に移動します。アクティブなインデックスのリストが表示されます。
- デプロイするインデックスの名前を選択します。インデックスの詳細ページが開きます。
- インデックスの詳細ページで、[ エンドポイントにデプロイ] をクリックします。インデックスのデプロイパネルが開きます。
- 表示名を入力します。この名前は ID として使用され、更新できません。
- [エンドポイント] プルダウンから、このインデックスをデプロイするエンドポイントを選択します。注: インデックスがすでにデプロイされている場合、そのエンドポイントは使用できません。
- 省略可: [マシンタイプ] フィールドで、標準またはハイメモリを選択します。
- 省略可。[自動スケーリングを有効にする] を選択すると、ワークロードの需要に応じてノード数が自動的に変更されます。自動スケーリングが無効になっている場合、デフォルトのレプリカ数は 2 です。
- [デプロイ] をクリックして、エンドポイントにインデックスをデプロイします。注: デプロイには 30 分ほどかかります。
VPC プロジェクトでの転送ルールの作成
インデックスのデプロイが完了すると、インデックス エンドポイントは IP アドレスではなくサービス アタッチメント URI を返します。コンピューティング アドレスを作成し、作成したコンピューティング アドレスを使用して、サービス アタッチメントをターゲットとする VPC プロジェクトに転送ルールを作成する必要があります。コンピューティング アドレスを作成するには、次の例を使用します。
gcloud compute addresses create ${ADDRESS_NAME:?} \
--region=${REGION:?} \
--subnet=${SUBNET_NAME:?} \
--project=${VPC_PROJECT:?}
作成したコンピューティング アドレスを使用してサービス アタッチメント URI をターゲットとする転送ルールを作成するには、次の例を使用します。
SERVICE_ATTACHMENT_URI=`gcloud ai index-endpoints describe {INDEX_ENDPOINT_ID}
--format="value(deployedIndexes.privateEndpoints.serviceAttachment)"`
gcloud compute forwarding-rules create ${ENDPOINT_NAME:?} \
--network=${NETWORK_NAME:?} \
--address=${ADDRESS_NAME:?} \
--target-service-attachment=${SERVICE_ATTACHMENT_URI:?} \
--project=${VPC_PROJECT:?} \
--region=${REGION:?}
(省略可)IP アドレスの DNS レコードを作成する
実際の IP アドレスを記憶せずに接続と読み込みを行うために、DNS レコードを作成できます。この手順は省略可能です。
DNS_NAME_SUFFIX=matchingengine.vertexai.goog. # Don't forget the "." in the end.
DNS_NAME=${INDEX_ENDPOINT_ID:?}.${REGION:?}.${DNS_NAME_SUFFIX:?}
gcloud dns managed-zones create ${DNS_ZONE_NAME:?} \
--dns-name=${DNS_NAME_SUFFIX:?} \
--visibility=private \
--project=${VPC_PROJECT:?} \
--region=${REGION:?}
gcloud dns record-sets create ${DNS_NAME:?} \
--rrdatas=${IP_ADDRESS:?} \
--type=A --ttl=60 \
--zone=${DNS_ZONE_NAME:?} \
--project=${VPC_PROJECT:?} \
--region=${REGION:?}
インデックス エンドポイントにクエリを送信する
Private Service Connect でエンドポイントを作成し、インデックスを作成したので、クエリの実行を開始できます。
インデックスにクエリを実行するには、インデックスをクエリして最近傍を取得するをご覧ください。
次のステップ
- インデックスの更新と再構築の方法を学ぶ。
- インデックス エンドポイントをモニタリングする方法を学ぶ。