임베딩 및 벡터 검색 소개
이 문서에서는 BigQuery의 임베딩 및 벡터 검색을 간략하게 설명합니다. 벡터 검색은 임베딩을 사용하여 유사한 객체를 비교하는 기술로, Google 검색, YouTube, Google Play를 비롯한 Google 제품을 지원하는 데 사용됩니다. 벡터 검색을 사용하여 대규모로 검색을 실행할 수 있습니다. 벡터 검색과 함께 벡터 색인을 사용하면 역파일 색인 (IVF) 및 ScaNN 알고리즘과 같은 기본 기술을 활용할 수 있습니다.
벡터 검색은 임베딩을 기반으로 빌드됩니다. 임베딩은 텍스트 또는 오디오 파일의 일부와 같이 특정 항목을 나타내는 고차원의 숫자 벡터입니다. 머신러닝 (ML) 모델은 임베딩을 사용하여 이러한 항목에 대한 시맨틱스를 인코딩함으로써 손쉽게 추론하고 비교할 수 있도록 합니다. 예를 들어 클러스터링, 분류, 추천 모델에서 일반적인 작업은 임베딩 공간에서 벡터 간 거리를 측정하여 의미론적으로 가장 유사한 항목을 찾는 것입니다.
임베딩 공간에서의 시맨틱 유사성 및 거리라는 개념은 다양한 항목이 어떻게 표시될 수 있는지 고려할 때 시각적으로 설명됩니다. 예를 들어 모두 동물 유형을 나타내는 고양이, 개, 사자와 같은 용어는 공유된 의미론적 특성으로 인해 이 공간에서 서로 가까이 그룹화됩니다. 마찬가지로 자동차, 트럭, 더 일반적인 용어인 차량도 또 다른 클러스터를 형성합니다. 다음 이미지를 참고하세요.
동물 클러스터와 차량 클러스터가 서로 멀리 떨어져 있는 것을 확인할 수 있습니다. 그룹 간의 분리는 임베딩 공간에서 객체가 가까울수록 의미적으로 유사하고 거리가 멀수록 의미적 유사성이 떨어진다는 원리를 보여줍니다.
사용 사례
임베딩 생성과 벡터 검색의 조합은 많은 흥미로운 사용 사례를 가능하게 합니다. 가능한 사용 사례는 다음과 같습니다.
- 검색 증강 생성 (RAG): BigQuery 내에서 Gemini 모델을 사용하여 문서를 파싱하고, 콘텐츠에 대한 벡터 검색을 실행하고, 자연어 질문에 대한 요약된 답변을 생성합니다. 이 시나리오를 보여주는 노트북은 BigQuery DataFrames를 사용하여 벡터 검색 애플리케이션 빌드를 참고하세요.
- 제품 대체 또는 일치하는 제품 추천: 고객 행동 및 제품 유사성을 기반으로 제품 대안을 추천하여 전자상거래 애플리케이션을 개선합니다.
- 로그 분석: 팀이 로그의 이상 징후를 사전 대응적으로 분류하고 조사를 가속화하도록 지원합니다. 이 기능을 사용하여 LLM의 컨텍스트를 보강하여 위협 감지, 포렌식, 문제 해결 워크플로를 개선할 수도 있습니다. 이 시나리오를 보여주는 노트북은 텍스트 임베딩과 BigQuery 벡터 검색을 사용한 로그 이상 감지 및 조사를 참고하세요.
- 클러스터링 및 타겟팅: 잠재고객을 정밀하게 분류합니다. 예를 들어 병원 체인은 자연어 메모와 구조화된 데이터를 사용하여 환자를 클러스터링할 수 있고, 마케팅 담당자는 쿼리 의도를 기반으로 광고를 타겟팅할 수 있습니다. 이 시나리오를 보여주는 노트북은 Create-Campaign-Customer-Segmentation을 참고하세요.
- 엔티티 해결 및 중복 제거: 데이터를 정리하고 통합합니다. 예를 들어 광고 회사는 개인 식별 정보 (PII) 레코드를 중복 삭제할 수 있고 부동산 회사는 일치하는 우편 주소를 식별할 수 있습니다.
임베딩 생성
다음 섹션에서는 BigQuery가 삽입을 생성하거나 삽입을 사용하는 데 도움이 되는 함수를 설명합니다.
단일 임베딩 생성
Vertex AI 임베딩 모델과 함께 AI.EMBED 함수를 사용하여 입력의 단일 임베딩을 생성할 수 있습니다.
AI.EMBED 함수는 다음 유형의 입력을 지원합니다.
- 텍스트 데이터.
ObjectRef값으로 표현되는 이미지 데이터입니다. (미리보기)ObjectRefRuntime값으로 표현되는 이미지 데이터입니다.
임베딩 표 생성
AI.GENERATE_EMBEDDING을 사용하여 입력 테이블의 열에 있는 모든 데이터의 임베딩이 있는 테이블을 만들 수 있습니다. 지원되는 모든 유형의 모델에서 AI.GENERATE_EMBEDDING은 표준 테이블의 구조화된 데이터로 작동합니다. 멀티모달 임베딩 모델의 경우 AI.GENERATE_EMBEDDING은 값이 ObjectRef인 표준 테이블 열 또는 객체 테이블의 시각적 콘텐츠로도 작동합니다.
원격 모델의 경우 모든 추론은 Vertex AI에서 발생합니다. 다른 모델 유형의 경우 모든 추론이 BigQuery에서 발생합니다. 결과는 BigQuery에 저장됩니다.
다음 주제를 사용하여 BigQuery ML에서 임베딩 생성을 시도해 보세요.
AI.GENERATE_EMBEDDING함수를 사용하여 텍스트, 이미지 또는 동영상을 생성합니다.- 멀티모달 임베딩 생성 및 검색
- 시맨틱 검색 및 검색 증강 생성 수행
자율 임베딩 생성
자율 임베딩 생성을 사용하여 임베딩 생성, 유지관리, 쿼리 프로세스를 간소화할 수 있습니다. BigQuery는 소스 열을 기반으로 테이블에 삽입 열을 유지합니다. 소스 열에서 데이터를 추가하거나 수정하면 BigQuery는 Vertex AI 임베딩 모델을 사용하여 해당 데이터의 임베딩 열을 자동으로 생성하거나 업데이트합니다. 소스 데이터가 정기적으로 업데이트될 때 BigQuery에서 삽입을 유지하도록 하려는 경우에 유용합니다.
검색
다음 검색 함수를 사용할 수 있습니다.
VECTOR_SEARCH: SQL을 사용하여 벡터 검색을 실행합니다.AI.SEARCH(미리보기): 제공된 문자열과 유사한 결과를 검색합니다. 테이블에 자율 임베딩 생성이 사용 설정된 경우 이 함수를 사용할 수 있습니다.AI.SIMILARITY(미리보기): 임베딩 간의 코사인 유사도를 계산하여 두 입력을 비교합니다. 이 함수는 비교를 몇 번만 실행하고 임베딩을 사전 계산하지 않은 경우에 적합합니다. 성능이 중요하고 많은 수의 임베딩을 사용하는 경우VECTOR_SEARCH를 사용해야 합니다. 기능을 비교하여 사용 사례에 가장 적합한 기능을 선택합니다.
원하는 경우 CREATE VECTOR INDEX 문을 사용하여 벡터 색인을 만들 수 있습니다.
벡터 색인을 사용할 때 VECTOR_SEARCH 및 AI.SEARCH 함수는 근사 최근접 이웃 검색 기법을 사용하여 벡터 검색 성능을 향상시키고 재현율을 줄여 더 나은 근사치의 결과를 반환합니다. 벡터 색인이 없으면 이러한 함수는 무차별 대입 검색을 사용하여 모든 레코드의 거리를 측정합니다. 벡터 색인을 사용할 수 있는 경우에도 무작위 대입을 사용하여 정확한 결과를 얻을 수 있습니다.
가격 책정
VECTOR_SEARCH 및 AI.SEARCH 함수와 CREATE VECTOR INDEX 문은 BigQuery 컴퓨팅 가격 책정을 사용합니다.
VECTOR_SEARCH및AI.SEARCH함수: 유사성 검색에 대해 주문형 또는 버전별 가격 책정을 사용하여 요금이 청구됩니다.- 주문형: 기본 테이블, 색인, 검색어서 스캔한 바이트 수에 따라 요금이 청구됩니다.
버전 가격 책정: 예약 버전 내에서 작업을 완료하는 데 필요한 슬롯에 대해 요금이 청구됩니다. 더 크고 복잡한 유사성 계산에는 더 많은 요금이 부과됩니다.
CREATE VECTOR INDEX문구: 색인이 생성된 테이블 데이터의 총 크기가 조직별 한도 미만인 경우 벡터 색인을 빌드하고 새로고침하는 데 필요한 처리에 요금이 청구되지 않습니다. 이 한도를 넘어서 색인 생성을 지원하려면 색인 관리 작업을 처리하기 위한 자체 예약을 제공해야 합니다.
스토리지도 임베딩 및 색인에 고려해야 합니다. 저장된 바이트 수는 삽입 및 색인으로 활성 스토리지 비용이 적용됩니다.
- 벡터 색인이 활성 상태면 스토리지 비용이 발생합니다.
INFORMATION_SCHEMA.VECTOR_INDEXES뷰를 사용하여 색인 스토리지 크기를 확인할 수 있습니다. 벡터 색인의 범위가 100% 가 아니더라도 색인이 생성된 항목에 대한 요금이 부과됩니다.INFORMATION_SCHEMA.VECTOR_INDEXES뷰를 사용하여 색인 범위를 확인할 수 있습니다.
할당량 및 한도
자세한 내용은 벡터 색인 한도 및 생성형 AI 함수 한도를 참고하세요.
제한사항
VECTOR_SEARCH 또는 AI.SEARCH 함수가 포함된 쿼리는 BigQuery BI Engine에 의해 가속화되지 않습니다.
다음 단계
- 벡터 색인 만들기 자세히 알아보기
VECTOR_SEARCH함수를 사용하여 벡터 검색을 수행하는 방법 알아보기AI.SEARCH함수를 사용하여 시맨틱 검색을 수행하는 방법 알아보기- 자율 임베딩 생성에 대해 자세히 알아보세요.
- 벡터 검색으로 임베딩 검색 튜토리얼을 통해 벡터 색인을 만드는 방법을 알아본 다음 색인이 있는 경우와 없는 경우 모두 임베딩에 대해 벡터 검색을 실행해 보세요.
시맨틱 검색 및 검색 증강 생성 수행 튜토리얼을 통해 다음 작업을 수행하는 방법을 알아보세요.
- 텍스트 임베딩을 생성합니다.
- 임베딩에 벡터 색인을 만듭니다.
- 유사한 텍스트를 검색하기 위해 임베딩과 함께 벡터 검색을 수행합니다.
- 벡터 검색 결과를 사용하여 검색 증강 생성(RAG)을 수행하여 프롬프트 입력을 보강하고 결과를 개선합니다.
검색 증강 생성(RAG) 파이프라인에서 PDF 파싱 튜토리얼을 통해 파싱된 PDF 콘텐츠를 기반으로 RAG 파이프라인을 만드는 방법을 알아보세요.
Python에서 BigQuery DataFrames를 사용하여 벡터 검색을 수행할 수도 있습니다. 이 접근 방식을 보여주는 노트북은 BigQuery DataFrames를 사용하여 벡터 검색 애플리케이션 빌드를 참고하세요.