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 合併結果並排序。