查询 VPC 索引以获取最近邻

创建索引后,您可以运行查询以获取其最近邻。

每个 DeployedIndex 都有一个 DEPLOYED_INDEX_SERVER_IP,您可以通过列出 IndexEndpoints 进行检索。如需查询 DeployedIndex,请连接到其在端口 10000 上的 DEPLOYED_INDEX_SERVER_IP,并调用 MatchBatchMatch 方法。此外,您还可以使用 DOC_ID 进行查询。

以下示例使用开源工具 grpc_cli 将 grpc 请求发送到已部署的索引服务器。

gRPC

在第一个示例中,使用 Match 方法来发送单个查询。

./grpc_cli call ${DEPLOYED_INDEX_SERVER_IP}:10000 google.cloud.aiplatform.container.v1.MatchService.Match '{deployed_index_id: "${DEPLOYED_INDEX_ID}", float_val: [-0.1,..]}'

在第二个示例中,将两个单独的查询组合到同一个 BatchMatch 请求中。

./grpc_cli call ${DEPLOYED_INDEX_SERVER_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](#vpc-network-peering-setup) 中运行的客户端调用这些 API。

如需使用 DOC_ID 运行查询,请使用以下示例。

./grpc_cli call ${DEPLOYED_INDEX_SERVER_IP}:10000  google.cloud.aiplatform.container.v1.MatchService.Match "deployed_index_id:'"test_index1"',embedding_id: '"606431"'"

如需了解详情,请参阅客户端库说明

控制台

按照以下说明从控制台查询 VPC 索引。

  1. 在 Google Cloud 控制台的 Vertex AI 部分中,前往部署和使用部分。选择 Vector Search

    前往 Vector Search

  2. 选择要查询的 VPC 索引。此时会打开索引信息页面。
  3. 向下滚动到已部署的索引部分,然后选择要查询的已部署索引。此时会打开已部署的索引信息页面。
  4. 查询索引部分中,选择查询参数。您可以选择按向量或特定数据点进行查询。
  5. 使用开源工具 grpc_cli 或使用 Python 版 Vertex AI SDK 执行查询。

影响性能的查询时间设置

使用 Vector Search 时,以下查询时参数可能会影响延迟时间、可用性和费用。本指南适用于大多数情况。 但是,请始终对您的配置进行实验,以确保它们适用于您的用例。

如需了解参数定义,请参阅索引配置参数

参数 简介 性能影响
approximateNeighborsCount 告知算法要从每个分片中检索的近似结果数。

增加 approximateNeighborsCount 的值可能会通过以下方式影响性能:

  • 召回率:提高了
  • 延迟时间:可能增加
  • 可用性:无影响
  • 费用:可能会增加,因为搜索期间处理的数据会更多

降低 approximateNeighborsCount 的值可能会通过以下方式影响性能:

  • 召回率:降低
  • 延迟时间:可能会缩短
  • 可用性:无影响
  • 费用:可以降低费用,因为搜索期间处理的数据量较少
setNeighborCount 指定您希望查询返回的结果数。

在大多数用例中,小于或等于 300 的值仍然保持高性能。 对于较大的值,请针对具体用例进行测试。

approximateNeighborsCount 应始终大于 setNeighborsCount。如果 setNeighborsCount 的值较小,则建议为 approximateNeighborsCount 使用该值的 10 倍。对于较大的 setNeighborsCount 值,可以使用较小的乘数。

fractionLeafNodesToSearch 控制搜索最近邻时要访问的叶节点的百分比。这与 leafNodeEmbeddingCount 相关,因为每个叶节点的嵌入越多,每个叶节点检查的数据就越多。

增加 fractionLeafNodesToSearch 的值可通过以下方式影响性能:

  • 召回率:提高了
  • 延迟时间:增加
  • 可用性:无影响
  • 费用:可能会增加,因为延迟时间较长会占用更多的机器资源

降低 fractionLeafNodesToSearch 的值可能会通过以下方式影响性能:

  • 召回率:降低
  • 延迟时间:缩短
  • 可用性:无影响
  • 费用:可能会降低,因为较短的延迟时间会占用较少的机器资源

后续步骤