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 并行执行多项搜索(向量搜索、文本搜索和语义搜索),并可选择使用排序器合并结果并对其进行排名。
以下排序器可供使用:
ReciprocalRankFusion:使用倒数排序融合 (RFF) 算法合并结果集。VertexRanker:使用 Vertex Ranking API 合并结果并对结果进行排名。