创建和部署索引后,您可以运行查询以获取最近邻。
以下是匹配查询的一些示例,这些查询使用 k 最近邻算法 (k-NN) 查找最近邻。
公共端点查询示例
Python
如需了解如何安装或更新 Vertex AI SDK for Python,请参阅安装 Vertex AI SDK for Python。 如需了解详情,请参阅 Python API 参考文档。
命令行
您可以在部署中找到下面列出的 publicEndpointDomainName
,其格式为 <number>.<region>-<number>.vdb.vertexai.goog
。
$ curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer `gcloud auth print-access-token`" https://1957880287.us-central1-181224308459.vdb.vertexai.goog/v1/projects/181224308459/locations/us-central1/indexEndpoints/3370566089086861312:findNeighbors -d '{deployed_index_id: "test_index_public1", queries: [{datapoint: {datapoint_id: "0", feature_vector: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]}, neighbor_count: 5}]}'
此 curl 示例展示了如何从 http(s)
客户端进行调用,虽然公共端点支持 RESTful 和 grpc_cli
的双协议。
$ curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer `gcloud auth print-access-token`" https://1957880287.us-central1-181224308459.vdb.vertexai.goog/v1/projects/${PROJECT_ID}/locations/us-central1/indexEndpoints/${INDEX_ENDPOINT_ID}:readIndexDatapoints -d '{deployed_index_id:"test_index_public1", ids: ["606431", "896688"]}'
此 curl 示例演示了如何使用词元和数值限制进行查询。
$ curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer `gcloud auth print-access-token`" https://${PUBLIC_ENDPOINT_DOMAIN}/v1/projects/${PROJECT_ID}/locations/${LOCATION}/indexEndpoints/${INDEX_ENDPOINT_ID}:findNeighbors -d '{deployed_index_id:"${DEPLOYED_INDEX_ID}", queries: [{datapoint: {datapoint_id:"x", feature_vector: [1, 1], "sparse_embedding": {"values": [111.0,111.1,111.2], "dimensions": [10,20,30]}, numeric_restricts: [{namespace: "int-ns", value_int: -2, op: "GREATER"}, {namespace: "int-ns", value_int: 4, op: "LESS_EQUAL"}, {namespace: "int-ns", value_int: 0, op: "NOT_EQUAL"}], restricts: [{namespace: "color", allow_list: ["red"]}]}}]}'
控制台
按照以下说明从控制台查询部署到公共端点的索引。
- 在 Google Cloud 控制台的 Vertex AI 部分中,前往部署和使用部分。选择向量搜索。
- 选择要查询的索引。此时会打开索引信息页面。
- 向下滚动到已部署的索引部分,然后选择要查询的已部署索引。此时会打开已部署的索引信息页面。
- 在查询索引部分中,选择是按密集嵌入值、稀疏嵌入值、混合嵌入值(密集嵌入和稀疏嵌入)还是特定数据点进行查询。
- 输入您选择的查询类型的查询参数。例如,如果您要按密集嵌入进行查询,请输入要按其进行查询的嵌入向量。
- 使用提供的 curl 命令或使用 Cloud Shell 运行来执行查询。
- 如果使用 Cloud Shell,请选择在 Cloud Shell 中运行。
- 在 Cloud Shell 中运行。
- 结果会返回最近邻。
混合查询
混合搜索同时使用密集嵌入和稀疏嵌入,可让您基于关键字搜索和语义搜索的组合进行搜索。
Python
如需了解如何安装或更新 Vertex AI SDK for Python,请参阅安装 Vertex AI SDK for Python。 如需了解详情,请参阅 Python API 参考文档。
具有过滤和数量上限的查询
借助过滤矢量匹配,您可以将最近邻结果限制为特定类别。过滤条件还可以指定要从结果中排除的类别。
每个数量上限邻居的限制可以通过限制索引数据中任何单个数量上限标记返回的结果数量来提高结果多样性。
Python
如需了解如何安装或更新 Vertex AI SDK for Python,请参阅安装 Vertex AI SDK for Python。 如需了解详情,请参阅 Python API 参考文档。
影响性能的查询时间设置
使用向量搜索时,以下查询时间参数可能会影响延迟时间、可用性和费用。本指南适用于大多数情况。但是,请始终对您的配置进行实验,以确保它们适用于您的应用场景。
如需了解参数定义,请参阅索引配置参数。
参数 | 简介 | 性能影响 |
---|---|---|
approximateNeighborsCount |
指示算法要从每个分片中检索的近似结果数。
此字段对应的 REST API 名称为 |
增加
减小
|
setNeighborCount |
指定您希望查询返回的结果数。
此字段对应的 REST API 名称为 |
在大多数应用场景中,值小于或等于 300 仍能保持高性能。对于较大的值,针对您的特定应用场景进行测试。 |
fractionLeafNodesToSearch |
控制在搜索最近邻时要访问的叶节点的百分比。这与 leafNodeEmbeddingCount 相关,因为每个叶节点的嵌入越多,每个叶检查的数据就越多。
此字段对应的 REST API 名称为 |
增加
减小
|