搜索数据对象

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 合并结果并对结果进行排名。