VPC ネットワーク ピアリングまたは Private Service Connect インデックス エンドポイントをデプロイした後、クエリはデプロイ方法によって若干異なります。
Private Service Connect の自動化でデプロイする
Private Service Connect の自動化でデプロイされた IndexEndpoints
の場合、Python SDK は Private Service Connect ネットワークを適切なエンドポイントに自動的にマッピングします。Python SDK を使用していない場合は、Private Service Connect の手動デプロイをクエリする手順に沿って、エンドポイント用に作成された IP アドレスに直接接続する必要があります。
Python
Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。 詳細については、Python API リファレンス ドキュメントをご覧ください。
Private Service Connect の手動構成でデプロイする
手動で構成された接続でデプロイされた Private Service Connect IndexEndpoints
の場合、エンドポイントの Private Service Connect サービス アタッチメントに転送されたコンピューティング アドレスの IP アドレスを使用して、エンドポイントにアクセスします。
サービス アタッチメント URI に転送された IP アドレスが不明な場合は、gcloud ai index-endpoints describe
コマンドと gcloud compute forwarding-rules list
コマンドを使用して取得できます。
次のように置き換えます。
- INDEX_ENDPOINT_ID: 完全修飾インデックス エンドポイント ID。
- REGION: インデックス エンドポイントがデプロイされているリージョン。
SERVICE_ATTACHMENT_URI=`gcloud ai index-endpoints describe INDEX_ENDPOINT_ID \ --region=REGION \ --format="value(deployedIndexes.privateEndpoints.serviceAttachment)"` gcloud compute forwarding-rules list --filter="TARGET:${SERVICE_ATTACHMENT_URI}"
出力には、IndexEndpoint
のクエリに使用する内部 IP アドレスが含まれます。
Python
Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。 詳細については、Python API リファレンス ドキュメントをご覧ください。
コマンドライン
DeployedIndex
をクエリするには、ポート 10000
で TARGET_IP
に接続し、Match
メソッドまたは BatchMatch
メソッドを呼び出します。また、特定のエンベディング ID を使用してクエリすることもできます。
以下の例では、オープンソース ツールの grpc_cli
を使用して、デプロイされたインデックス サーバーに gRPC リクエストを送信します。
Match
メソッドを使用して単一のクエリを送信します。
./grpc_cli call ${TARGET_IP}:10000 google.cloud.aiplatform.container.v1.MatchService.Match 'deployed_index_id: "${DEPLOYED_INDEX_ID}", float_val: [-0.1,..]'
2 番目の例では、2 つのクエリを同じ BatchMatch
リクエストに統合しています。
./grpc_cli call ${TARGET_IP}:10000 google.cloud.aiplatform.container.v1.MatchService.BatchMatch 'requests: [{deployed_index_id: "${DEPLOYED_INDEX_ID}", requests: [{deployed_index_id: "${DEPLOYED_INDEX_ID}", float_val: [-0.1,..]}, {deployed_index_id: "${DEPLOYED_INDEX_ID}", float_val: [-0.2,..]}]}]'
これらの API は、サービスとピアリングされた同じ VPC で実行されているクライアントから呼び出す必要があります。
embedding_id
を使用してクエリを実行するには、次の例を使用します。
./grpc_cli call ${TARGET_IP}:10000 google.cloud.aiplatform.container.v1.MatchService.Match "deployed_index_id:'"test_index1"',embedding_id: '"606431"'"
この例では、トークンと数値の制限を使用してクエリを送信します。
./grpc_cli call ${TARGET_IP}:10000 google.cloud.aiplatform.container.v1.MatchService.Match 'deployed_index_id: "${DEPLOYED_INDEX_ID}", float_val: [1, 1], "sparse_embedding": {"values": [111.0,111.1,111.2], "dimensions": [10,20,30]}, numeric_restricts: [{name: "double-ns", value_double: 0.3, op: LESS_EQUAL}, {name: "double-ns", value_double: -1.2, op: GREATER}, {name: "double-ns", value_double: 0., op: NOT_EQUAL}], restricts: [{name: "color", allow_tokens: ["red"]}]'
詳細については、クライアント ライブラリの説明をご覧ください。
コンソール
コンソールから VPC インデックスをクエリするには、次の手順を実施します。
- Google Cloud コンソールの [Vertex AI] セクションで、[デプロイと使用] セクションに移動します。[ベクトル検索] を選択します。
- クエリを実行する VPC インデックスを選択します。[インデックスの情報] ページが開きます。
- [デプロイされたインデックス] セクションまで下にスクロールし、クエリを実行するデプロイされたインデックスを選択します。[デプロイされるインデックスの情報] ページが開きます。
- [インデックスのクエリ] セクションから、クエリ パラメータを選択します。ベクトルや特定のデータポイントでクエリを実行できます。
- オープンソース ツールの grpc_cli または Vertex AI SDK for Python を使用してクエリを実行します。
VPC ネットワーク ピアリングでデプロイする
Python
Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。 詳細については、Python API リファレンス ドキュメントをご覧ください。
注: Python SDK は、VPC ネットワーク ピアリングでデプロイされた IndexEndpoint
の IP アドレスを自動的に検索します。
コマンドライン
各 DeployedIndex
には TARGET_IP
があり、IndexEndpoints
のリストで取得できます。
DeployedIndex
をクエリするには、ポート 10000
で TARGET_IP
に接続し、Match
メソッドまたは BatchMatch
メソッドを呼び出します。また、特定のエンベディング ID を使用してクエリすることもできます。
以下の例では、オープンソース ツールの grpc_cli
を使用して、デプロイされたインデックス サーバーに gRPC リクエストを送信します。
Match
メソッドを使用して単一のクエリを送信します。
./grpc_cli call ${TARGET_IP}:10000 google.cloud.aiplatform.container.v1.MatchService.Match 'deployed_index_id: "${DEPLOYED_INDEX_ID}", float_val: [-0.1,..]'
2 番目の例では、2 つのクエリを同じ BatchMatch
リクエストに統合しています。
./grpc_cli call ${TARGET_IP}:10000 google.cloud.aiplatform.container.v1.MatchService.BatchMatch 'requests: [{deployed_index_id: "${DEPLOYED_INDEX_ID}", requests: [{deployed_index_id: "${DEPLOYED_INDEX_ID}", float_val: [-0.1,..]}, {deployed_index_id: "${DEPLOYED_INDEX_ID}", float_val: [-0.2,..]}]}]'
これらの API は、サービスとピアリングされた同じ VPC で実行されているクライアントから呼び出す必要があります。
embedding_id
を使用してクエリを実行するには、次の例を使用します。
./grpc_cli call ${TARGET_IP}:10000 google.cloud.aiplatform.container.v1.MatchService.Match "deployed_index_id:'"test_index1"',embedding_id: '"606431"'"
この例では、トークンと数値の制限を使用してクエリを送信します。
./grpc_cli call ${TARGET_IP}:10000 google.cloud.aiplatform.container.v1.MatchService.Match 'deployed_index_id: "${DEPLOYED_INDEX_ID}", float_val: [1, 1], "sparse_embedding": {"values": [111.0,111.1,111.2], "dimensions": [10,20,30]}, numeric_restricts: [{name: "double-ns", value_double: 0.3, op: LESS_EQUAL}, {name: "double-ns", value_double: -1.2, op: GREATER}, {name: "double-ns", value_double: 0., op: NOT_EQUAL}], restricts: [{name: "color", allow_tokens: ["red"]}]'
詳細については、クライアント ライブラリの説明をご覧ください。
コンソール
コンソールから VPC インデックスをクエリするには、次の手順を実施します。
- Google Cloud コンソールの [Vertex AI] セクションで、[デプロイと使用] セクションに移動します。[ベクトル検索] を選択します。
- クエリを実行する VPC インデックスを選択します。[インデックスの情報] ページが開きます。
- [デプロイされたインデックス] セクションまで下にスクロールし、クエリを実行するデプロイされたインデックスを選択します。[デプロイされるインデックスの情報] ページが開きます。
- [インデックスのクエリ] セクションから、クエリ パラメータを選択します。ベクトルや特定のデータポイントでクエリを実行できます。
- オープンソース ツールの grpc_cli または Vertex AI SDK for Python を使用してクエリを実行します。
パフォーマンスに影響するクエリ時間の設定
ベクトル検索を使用する場合、クエリ時のパラメータはレイテンシ、可用性、コストに影響する可能性があります。このガイダンスはほとんどのケースに適用されます。 ただし、必ず構成をテストして、ユースケースに適していることを確認してください。
パラメータの定義については、インデックス構成パラメータをご覧ください。
パラメータ | 概要 | パフォーマンスへの影響 |
---|---|---|
approximateNeighborsCount |
各シャードから取得するおおよその結果数をアルゴリズムに指定します。
このフィールドに対応する REST API 名は |
|
setNeighborCount |
クエリで返す結果の数を指定します。
このフィールドに対応する REST API 名は |
300 以下の値は、ほとんどのユースケースでパフォーマンスを維持できます。値が大きい場合は、特定のユースケースでテストします。 |
fractionLeafNodesToSearch |
最近傍を検索する際に参照するリーフノードの割合を制御します。これは、リーフノードあたりのエンベディングが多いほど、リーフあたりのデータが多く検査される leafNodeEmbeddingCount に関連しています。
このフィールドに対応する REST API 名は |
|
次のステップ
- インデックスの更新と再構築の方法を学ぶ。
- ベクトル一致をフィルタする方法を学ぶ。
- インデックスのモニタリングの方法を学ぶ。