Pesquisar objetos de dados

O objetivo da API Search é encontrar objetos de dados semelhantes a uma consulta específica e retornar uma lista de resultados classificados por similaridade. A API Search também oferece suporte à filtragem.

A API Search oferece várias maneiras de pesquisar objetos de dados: pesquisa vetorial, pesquisa de texto completo e pesquisa semântica. Além disso, várias pesquisas de qualquer tipo podem ser combinadas para criar uma pesquisa híbrida.

Com a pesquisa vetorial, você pode fornecer seu próprio vetor de consulta. Esse é o método obrigatório para pesquisar campos de incorporação que não têm um embedding-config. Se vários campos search_vector forem fornecidos, os resultados serão combinados usando ponderações iguais.

O exemplo a seguir demonstra como realizar uma pesquisa vetorial em uma coleção com o 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": "*" \
      } \
    } \
  }'

Isso realiza uma pesquisa de texto completo sem vetores esparsos. O dialeto padrão de consulta "word" trata toda a entrada como termos de pesquisa individuais com um operador AND implícito. Você pode definir enhanced_query como true para expandir os termos de pesquisa, processar a derivação, remover palavras irrelevantes e permitir outros operadores de pesquisa:

  • OR: um operador de disjunção que diferencia maiúsculas de minúsculas e corresponde a documentos que contêm pelo menos um dos termos especificados. Ela só se aplica aos dois termos adjacentes.

  • ": (aspas duplas) para pesquisa de frases.

  • -: o operador de negação. Ele exclui documentos que contêm termos antes dele.

Essa pesquisa converte sua consulta de texto em embeddings para encontrar resultados com base no significado semântico. Ele usa o embedding-config definido no seu esquema para gerar o embedding de consulta. Se vários campos search_vector forem fornecidos, os resultados serão combinados usando ponderações iguais.

Use batch_search_data_objects para executar várias pesquisas em paralelo (vetorial, de texto e semântica) e, se quiser, combine e classifique os resultados usando um classificador.

Os seguintes classificadores estão disponíveis:

  • ReciprocalRankFusion:mescla conjuntos de resultados usando o algoritmo de fusão de classificação recíproca (RRF, na sigla em inglês).

  • VertexRanker:usa a API Vertex Ranking para mesclar e classificar resultados.