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