데이터 객체 검색

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_querytrue로 설정하여 검색어를 확장하고, 어간 추출을 처리하고, 불용어 삭제를 중지하고, 추가 검색 연산자를 허용할 수 있습니다.

  • OR: 지정된 검색어 중 하나 이상이 포함된 문서와 일치하는 대소문자를 구분하는 논리합 연산자입니다. 이는 인접한 두 검색어에만 적용됩니다.

  • ": 구문 검색을 위한 큰따옴표입니다.

  • -: 부정 연산자입니다. 이 용어 앞에 배치된 용어를 포함하는 문서는 제외됩니다.

이 검색은 텍스트 쿼리를 임베딩으로 변환하여 시맨틱 의미를 기반으로 결과를 찾습니다. 스키마에 정의된 embedding-config를 사용하여 쿼리 임베딩을 생성합니다. search_vector 필드가 여러 개 제공되면 동일한 가중치를 사용하여 결과가 결합됩니다.

batch_search_data_objects를 사용하여 여러 검색(벡터 검색, 텍스트 검색, 시맨틱 검색)을 병렬로 실행하고 선택적으로 순위 지정 도구를 사용하여 결과를 결합하고 순위를 지정합니다.

다음 순위 지정자를 사용할 수 있습니다.

  • ReciprocalRankFusion: 상호 순위 융합(RFF) 알고리즘을 사용하여 결과 집합을 병합합니다.

  • VertexRanker: Vertex Ranking API를 사용하여 결과를 병합하고 순위를 지정합니다.