建立並部署索引後,即可執行查詢來取得最鄰近的項目。
以下提供比對查詢範例,說明如何使用 K 近鄰演算法 (k-NN) 找出最鄰近的項目。
公開端點的查詢範例
Python
如要瞭解如何安裝或更新 Python 適用的 Vertex AI SDK,請參閱「安裝 Python 適用的 Vertex AI SDK」。 詳情請參閱 Python API 參考說明文件。
指令列
您可以在「Deploy」中找到下列 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 專區中,前往「Deploy and Use」(部署及使用) 專區。選取「Vector Search」。
- 選取要查詢的索引。「Index info」(索引資訊) 頁面隨即開啟。
- 向下捲動至「已部署的索引」部分,然後選取要查詢的已部署索引。「已部署的索引資訊」頁面隨即開啟。
- 在「查詢索引」部分,選取要依密集嵌入值、稀疏嵌入值、混合嵌入值 (密集和稀疏嵌入) 或特定資料點查詢。
- 輸入所選查詢類型的查詢參數。舉例來說,如果您要透過稠密型嵌入查詢,請輸入要查詢的嵌入向量。
- 使用提供的 curl 指令執行查詢,或透過 Cloud Shell 執行查詢。
- 如果使用 Cloud Shell,請選取「在 Cloud Shell 中執行」。
- 在 Cloud Shell 中執行。
- 結果會傳回最鄰近的項目。
混合查詢
混合型搜尋會同時使用稠密和稀疏嵌入,根據關鍵字搜尋和語意搜尋的組合進行搜尋。
Python
如要瞭解如何安裝或更新 Python 適用的 Vertex AI SDK,請參閱「安裝 Python 適用的 Vertex AI SDK」。 詳情請參閱 Python API 參考說明文件。
使用篩選和擁擠度條件的查詢
篩選向量比對結果可將近鄰結果限制在特定類別。篩選器也可以指定要從結果中排除的類別。
每個擁擠鄰近項目的限制可限制從索引資料中任何單一擁擠標記傳回的結果數量,進而增加結果多樣性。
Python
如要瞭解如何安裝或更新 Python 適用的 Vertex AI SDK,請參閱「安裝 Python 適用的 Vertex AI SDK」。 詳情請參閱 Python API 參考說明文件。
影響成效的查詢時間設定
使用向量搜尋時,下列查詢時間參數可能會影響延遲時間、可用性和費用。這項指引適用於大多數情況。不過,請務必實驗各種設定,確保這些設定符合您的用途。
如需參數定義,請參閱「索引設定參數」。
參數 | 關於 | 效能影響 |
---|---|---|
approximateNeighborsCount |
告知演算法要從每個分片擷取的近似結果數量。
這個欄位對應的 REST API 名稱為
|
增加
降低
|
setNeighborCount |
指定查詢要傳回的結果數量。
這個欄位對應的 REST API 名稱為
|
在大多數用途中,值小於或等於 300 仍可維持效能。 如為較大的值,請針對特定用途進行測試。 |
fractionLeafNodesToSearch |
控制搜尋最鄰近項目時要造訪的分葉節點百分比。這與 leafNodeEmbeddingCount 相關,因為每個分葉節點的嵌入越多,每個分葉檢查的資料就越多。
這個欄位對應的 REST API 名稱為
|
提高
降低
|