部署 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 地址来访问端点。
如果尚不清楚,您可以使用 gcloud ai index-endpoints describe
和 gcloud compute forwarding-rules list
命令获取转发到服务附件 URI 的 IP 地址。
进行以下替换:
- 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,..]'
在第二个示例中,将两个单独的查询组合到同一个 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,..]}]}]'
必须从运行在与服务对等的同一 VPC 中的客户端调用这些 API。
如需使用 embedding_id
运行查询,请使用以下示例。
./grpc_cli call ${TARGET_IP}:10000 google.cloud.aiplatform.container.v1.MatchService.Match "deployed_index_id:'"test_index1"',embedding_id: '"606431"'"
在此示例中,您使用 token 和数值限制发送查询。
./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 部分中,前往部署和使用部分。选择 Vector Search
- 选择要查询的 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
的列表中检索该 TARGET_IP
。
如需查询 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,..]'
在第二个示例中,将两个单独的查询组合到同一个 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,..]}]}]'
必须从运行在与服务对等的同一 VPC 中的客户端调用这些 API。
如需使用 embedding_id
运行查询,请使用以下示例。
./grpc_cli call ${TARGET_IP}:10000 google.cloud.aiplatform.container.v1.MatchService.Match "deployed_index_id:'"test_index1"',embedding_id: '"606431"'"
在此示例中,您使用 token 和数值限制发送查询。
./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 部分中,前往部署和使用部分。选择 Vector Search
- 选择要查询的 VPC 索引。此时会打开索引信息页面。
- 向下滚动到已部署的索引部分,然后选择要查询的已部署索引。此时会打开已部署的索引信息页面。
- 在查询索引部分中,选择查询参数。您可以选择按向量或特定数据点进行查询。
- 使用开源工具 grpc_cli 或使用 Vertex AI SDK for Python 执行查询。
影响性能的查询时间设置
使用向量搜索时,以下查询时间参数可能会影响延迟时间、可用性和费用。本指南适用于大多数情况。但是,请始终对您的配置进行实验,以确保它们适用于您的应用场景。
如需了解参数定义,请参阅索引配置参数。
参数 | 简介 | 性能影响 |
---|---|---|
approximateNeighborsCount |
指示算法要从每个分片中检索的近似结果数。
此字段对应的 REST API 名称为 |
增加
减小
|
setNeighborCount |
指定您希望查询返回的结果数。
此字段对应的 REST API 名称为 |
在大多数应用场景中,值小于或等于 300 仍能保持高性能。对于较大的值,针对您的特定应用场景进行测试。 |
fractionLeafNodesToSearch |
控制在搜索最近邻时要访问的叶节点的百分比。这与 leafNodeEmbeddingCount 相关,因为每个叶节点的嵌入越多,每个叶检查的数据就越多。
此字段对应的 REST API 名称为 |
增加
减小
|