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를 사용하여 결과를 병합하고 순위를 지정합니다.