벡터 검색 소개

이 문서에서는 BigQuery의 벡터 검색에 대해 간략하게 설명합니다. 벡터 검색은 임베딩을 사용하여 유사한 객체를 비교하는 기법으로, Google 검색, YouTube, Google Play와 같은 Google 제품을 지원하는 데 사용됩니다. 벡터 검색을 사용하여 대규모로 검색할 수 있습니다. 벡터 검색과 함께 벡터 색인을 사용하면 역파일 색인 (IVF) 및 ScaNN 알고리즘과 같은 기본 기술을 활용할 수 있습니다.

벡터 검색은 임베딩을 기반으로 합니다. 임베딩은 텍스트 또는 오디오 파일의 일부와 같이 특정 항목을 나타내는 고차원의 숫자 벡터입니다. 머신러닝 (ML) 모델은 임베딩을 사용하여 이러한 항목에 대한 시맨틱스를 인코딩함으로써 손쉽게 추론하고 비교할 수 있도록 합니다. 예를 들어 클러스터링, 분류, 추천 모델에서 일반적인 작업은 임베딩 공간에서 벡터 간 거리를 측정하여 의미론적으로 가장 유사한 항목을 찾는 것입니다.

임베딩 공간에서의 시맨틱 유사성과 거리에 관한 이 개념은 다양한 항목을 표시하는 방법을 고려할 때 시각적으로 입증됩니다. 예를 들어 동물의 유형을 모두 나타내는 고양이, , 사자와 같은 용어는 공통된 시맨틱 특성으로 인해 이 공간에서 서로 가까이에 그룹화됩니다. 마찬가지로 자동차, 트럭, 더 일반적인 용어인 차량과 같은 용어는 또 다른 클러스터를 형성합니다. 다음 이미지를 참고하세요.

_cat_, _dog_, _lion_ 또는 _car_, _truck_, _vehicle_과 같이 의미상 유사한 개념은 임베딩 공간에서 서로 가까이 있습니다.

동물 클러스터와 차량 클러스터가 서로 멀리 떨어져 있는 것을 볼 수 있습니다. 그룹 간의 분리는 객체가 임베딩 공간에 가까울수록 의미적으로 더 유사하고 거리가 멀수록 의미적 유사성이 더 낮다는 원리를 보여줍니다.

BigQuery는 임베딩을 생성하고, 콘텐츠 색인을 생성하고, 벡터 검색을 실행하기 위한 엔드 투 엔드 환경을 제공합니다. 이러한 각 작업을 개별적으로 완료하거나 단일 여정에서 완료할 수 있습니다. 이러한 모든 작업을 완료하는 방법을 보여주는 튜토리얼은 시맨틱 검색 및 검색 증강 생성 수행을 참고하세요.

SQL을 사용하여 벡터 검색을 실행하려면 VECTOR_SEARCH 함수를 사용합니다. 원하는 경우 CREATE VECTOR INDEX을 사용하여 벡터 색인을 만들 수 있습니다. 벡터 색인을 사용할 때 VECTOR_SEARCH근사 최근접 이웃 검색 기법을 사용하여 벡터 검색 성능을 향상시키고 재현율을 줄여 더 나은 근사치의 결과를 반환합니다. 벡터 색인이 없으면 VECTOR_SEARCH무작위 대입 검색을 사용하여 모든 레코드의 거리를 측정합니다. 벡터 색인을 사용할 수 있는 경우에도 무작위 대입을 사용하여 정확한 결과를 얻을 수 있습니다.

이 문서에서는 SQL 접근 방식에 중점을 두지만 Python에서 BigQuery DataFrames를 사용하여 벡터 검색을 실행할 수도 있습니다. Python 접근 방식을 보여주는 노트북은 BigQuery DataFrames를 사용하여 벡터 검색 애플리케이션 빌드를 참고하세요.

사용 사례

임베딩 생성과 벡터 검색의 조합은 많은 흥미로운 사용 사례를 가능하게 합니다. 몇 가지 사용 사례는 다음과 같습니다.

  • 검색 증강 생성 (RAG): BigQuery 내에서 문서를 파싱하고, 콘텐츠에 대해 벡터 검색을 실행하고, Gemini 모델을 사용하여 자연어 질문에 대한 요약된 답변을 생성합니다. 이 시나리오를 보여주는 노트북은 BigQuery DataFrames를 사용하여 벡터 검색 애플리케이션 빌드를 참고하세요.
  • 대체 제품 또는 일치하는 제품 추천: 고객 행동 및 제품 유사성을 기반으로 대체 제품을 제안하여 전자상거래 애플리케이션을 개선합니다.
  • 로그 분석: 팀이 로그에서 이상 징후를 사전에 분류하고 조사를 신속하게 진행할 수 있도록 지원합니다. 이 기능을 사용하여 위협 감지, 포렌식, 문제 해결 워크플로를 개선하기 위해 LLM의 컨텍스트를 보강할 수도 있습니다. 이 시나리오를 보여주는 노트북은 텍스트 임베딩 + BigQuery 벡터 검색을 사용한 로그 이상 감지 및 조사를 참고하세요.
  • 클러스터링 및 타겟팅: 잠재고객을 정확하게 분류합니다. 예를 들어 병원 체인은 자연어 메모와 구조화된 데이터를 사용하여 환자를 클러스터링할 수 있고, 마케팅 담당자는 검색 의도를 기반으로 광고를 타겟팅할 수 있습니다. 이 시나리오를 보여주는 노트북은 Create-Campaign-Customer-Segmentation을 참고하세요.
  • 항목 확인 및 중복 삭제: 데이터를 정리하고 통합합니다. 예를 들어 광고 회사는 개인 식별 정보 (PII) 레코드를 중복 삭제하거나 부동산 회사는 일치하는 우편 주소를 식별할 수 있습니다.

가격 책정

VECTOR_SEARCH 함수와 CREATE VECTOR INDEX 문이 BigQuery 컴퓨팅 가격 책정을 사용합니다.

  • VECTOR_SEARCH 함수: 주문형 또는 버전 가격 책정을 사용하여 유사성 검색에 대한 요금이 청구됩니다.

    • 주문형: 기본 테이블, 색인, 검색 쿼리에서 스캔된 바이트 수에 따라 요금이 청구됩니다.
    • 버전 가격: 예약 버전 내에서 작업을 완료하는 데 필요한 슬롯에 대한 요금이 청구됩니다. 더 크고 복잡한 유사성 계산에는 더 많은 비용이 청구됩니다.

  • CREATE VECTOR INDEX 문이 표시되면 색인이 생성된 테이블 데이터의 총 크기가 조직별 한도 미만인 경우 벡터 색인을 빌드하고 새로고침하는 데 필요한 처리에 요금이 청구되지 않습니다. 이 한도를 넘어서 색인 생성을 지원하려면 색인 관리 작업을 처리하기 위한 자체 예약을 제공해야 합니다.

저장소는 임베딩과 색인에도 고려해야 할 사항입니다. 임베딩 및 색인으로 저장된 바이트 수에는 활성 스토리지 비용이 적용됩니다.

  • 벡터 색인이 활성 상태면 스토리지 비용이 발생합니다.
  • INFORMATION_SCHEMA.VECTOR_INDEXES를 사용하여 색인 저장용량 크기를 확인할 수 있습니다. 벡터 색인의 범위가 100% 가 아니더라도 색인이 생성된 항목에 대한 요금이 부과됩니다. INFORMATION_SCHEMA.VECTOR_INDEXES 뷰를 사용하여 색인 적용 범위를 확인할 수 있습니다.

할당량 및 한도

자세한 내용은 벡터 색인 한도를 참조하세요.

제한사항

VECTOR_SEARCH 함수가 포함된 쿼리는 BigQuery BI Engine에 의해 가속화되지 않습니다.

다음 단계

  • 벡터 색인 만들기 자세히 알아보기
  • VECTOR_SEARCH 함수를 사용하여 벡터 검색을 실행하는 방법을 알아보세요.
  • 벡터 검색으로 임베딩 검색 튜토리얼을 사용하여 벡터 색인을 만드는 방법을 알아본 후 색인이 있는 경우와 없는 경우 모두 임베딩에 대한 벡터 검색을 실행합니다.
  • 시맨틱 검색 및 검색 증강 생성 수행 튜토리얼을 통해 다음 작업을 수행하는 방법을 알아보세요.

    • 텍스트 임베딩을 생성합니다.
    • 임베딩에 벡터 색인을 만듭니다.
    • 유사한 텍스트를 검색하기 위해 임베딩과 함께 벡터 검색을 수행합니다.
    • 벡터 검색 결과를 사용하여 검색 증강 생성(RAG)을 수행하여 프롬프트 입력을 보강하고 결과를 개선합니다.
  • 검색 증강 생성 파이프라인에서 PDF 파싱 튜토리얼을 통해 파싱된 PDF 콘텐츠를 기반으로 RAG 파이프라인을 만드는 방법을 알아보세요.