搜尋資料物件

Search API 的用途是找出與指定查詢類似的資料物件,並傳回依相似度排序的結果清單。Search API 也支援篩選功能。

Search API 提供多種搜尋資料物件的方式:向量搜尋、全文搜尋和語意搜尋。此外,您也可以組合多個任何類型的搜尋,達成混合搜尋。

向量搜尋可讓您提供自己的查詢向量。這是搜尋沒有 embedding-config 的嵌入欄位的必要方法。如果提供多個 search_vector 欄位,系統會使用相同權重合併結果。

以下範例示範如何對 ID 為 COLLECTION_ID 的 Collection 執行向量搜尋。

REST

curl -X POST \
'https://vectorsearch.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/collections/COLLECTION_ID/dataObjects:search' \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H 'Content-Type: application/json' \
  -d '{
    "vector_search": {
      "search_field": "plot_embedding",
      "vector": {
        "values": [
          0.42426406871192845,
          0.565685424949238,
          0.7071067811865475
        ]
      },
      "filter": {
        "genre": {
          "$eq": "Thriller"
        }
      },
      "top_k": 5,
      "output_fields": {
        "data_fields": "*",
        "vector_fields": "*",
        "metadata_fields": "*"
      }
    }
  }'

Python

from google.cloud import vectorsearch_v1beta

# Create the client
data_object_search_service_client = vectorsearch_v1beta.DataObjectSearchServiceClient()

# Initialize request
vector_search = vectorsearch_v1beta.VectorSearch(
    search_field="plot_embedding",
    vector={"values": [0.1, 0.2, 0.3]},
    filter={"genre": {"$eq": "Thriller"}},
    top_k=5,
)
request = vectorsearch_v1beta.SearchDataObjectsRequest(
    parent="projects/PROJECT_ID/locations/LOCATION/collections/COLLECTION_ID",
    vector_search=vector_search,
)

# Make the request
response = data_object_search_service_client.search_data_objects(request=request)

# Handle the response
print(response)

這會執行全文搜尋,但不使用稀疏向量。預設的「字詞」查詢方言會將整個輸入內容視為個別搜尋字詞,並使用隱含的 AND 運算子。您可以將 enhanced_query 設為 true,藉此擴展搜尋字詞、處理詞幹、移除停用字詞,以及使用其他搜尋運算子:

  • OR:區分大小寫的析取運算子,可比對包含至少一個指定字詞的文件。這項功能只適用於兩個相鄰的字詞。

  • ":(雙引號) 用於搜尋詞組。

  • -:否定運算子。系統會排除含有該字詞的文件。

這項搜尋功能會將文字查詢轉換為嵌入,並根據語意意義找出結果。這項功能會使用結構定義中定義的 embedding-config 生成查詢嵌入。如果提供多個 search_vector 欄位,系統會使用相同權重合併結果。

使用 batch_search_data_objects 平行執行多項搜尋 (向量搜尋、文字搜尋和語意搜尋),並視需要使用 Ranker 合併結果並排序。

可用的排序器如下:

  • ReciprocalRankFusion使用倒數排名融合 (RFF) 演算法合併結果集。

  • VertexRanker使用 Vertex Ranking API 合併結果並排序。