搜尋資料物件

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

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

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

以下範例說明如何對 ID 為 movies 的集合執行向量搜尋。

curl -X POST \
'https://vectorsearch.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/collections/movies/dataObjects:search' \
  -H '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": "*" \
      } \
    } \
  }'

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

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

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

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

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

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

可用的排序器如下:

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

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