BigQuery에서 멀티모달 데이터 분석
이 문서에서는 멀티모달 데이터를 분석하는 데 사용할 수 있는 BigQuery 기능을 설명합니다. 일부 기능은Google Cloud 콘솔 및 bq 명령줄 도구에서 사용할 수 있고, 다른 기능은 Python에서 BigQuery DataFrames를 사용하여 사용할 수 있습니다. 이러한 여러 기능을 함께 사용하여 다중 모드 데이터에 대한 분석 및 변환 워크플로를 더 쉽게 지원할 수 있습니다.
BigQuery의 멀티모달 데이터 기능을 사용하면 다음 작업을 실행할 수 있습니다.
ObjectRef
값을 사용하여 비정형 데이터를 표준 테이블에 통합합니다.ObjectRefRuntime
값을 사용하여 분석 및 변환 워크플로에서 비정형 데이터를 처리합니다.- Gemini 모델과 함께 BigQuery ML 생성형 AI 함수를 사용하여 멀티모달 데이터에서 텍스트, 임베딩, 스칼라 값을 생성합니다.
- BigQuery DataFrames에서 다중 모달 DataFrames를 만듭니다.
- BigQuery DataFrames
Series.BlobAccessor
메서드를 사용하여 이미지를 변환하고 PDF 파일을 청크로 분할합니다. - BigQuery DataFrames 생성형 AI 메서드를 사용하여 멀티모달 데이터에서 텍스트와 임베딩을 생성합니다.
Google Cloud 콘솔을 사용하는 단계별 튜토리얼은 SQL로 다중 모드 데이터 분석을 참고하세요. Python에서 BigQuery DataFrames를 사용하는 단계별 튜토리얼은 BigQuery DataFrames로 Python에서 멀티모달 데이터 분석하기를 참고하세요.
이점
BigQuery의 멀티모달 데이터 기능은 다음과 같은 이점을 제공합니다.
- 조합 가능성:
ObjectRef
값을 사용하여 동일한 표준 테이블 행에 구조화된 데이터와 비구조화된 데이터를 저장하고 관리할 수 있습니다. 예를 들어 제품 이미지를 나머지 제품 정보와 동일한 행에 저장할 수 있습니다. 표준 SQL 함수를 사용하여ObjectRef
값이 포함된 열을 만들고 업데이트할 수 있으며 객체에 대한 변환 작업의 출력으로ObjectRef
값을 만들 수 있습니다. - 생성형 AI 프롬프트에서 객체 데이터 사용:
ObjectRefRuntime
값을 생성형 AI 함수의 입력으로 사용합니다. 예를 들어 동일한 테이블의 이미지 데이터와 텍스트 데이터에 임베딩을 생성할 수 있습니다. 텍스트 및 스칼라 값 생성의 경우 모델에 전송하는 프롬프트 내에서 여러 객체를 참조할 수도 있습니다. 예를 들어 모델에 동물의 두 이미지를 비교하도록 요청하는 프롬프트를 만든 다음, 동일한 유형의 동물을 보여주는지 나타내는 텍스트를 반환할 수 있습니다. - 청크 순서 유지: 객체를 청크 처리한 후 순서를 유지하기 위해 청크를 표준 테이블 열에
ObjectRef
값의 배열로 저장할 수 있습니다. 예를 들어 동영상에서 이미지를 파싱한 다음 이러한 이미지를ObjectRef
값 배열로 저장하여 이미지가 원본 동영상에 표시된 순서와 동일하게 유지되도록 할 수 있습니다.
값 ObjectRef
개
ObjectRef
값은 ObjectRef
형식을 사용하는 STRUCT
값입니다.
이 형식을 사용하는 STRUCT
또는 ARRAY<STRUCT>
열을 만들어 Cloud Storage 객체 메타데이터와 연결된 승인자를 BigQuery 표준 테이블에 저장할 수 있습니다.
승인자 값은 BigQuery가 Cloud Storage 객체에 액세스하는 데 사용하는 Cloud 리소스 연결을 식별합니다.
비정형 데이터를 표준 테이블에 통합해야 하는 경우 ObjectRef
값을 사용합니다. 예를 들어 제품 테이블에서 ObjectRef
값이 포함된 열을 추가하여 제품 이미지를 나머지 제품 정보와 동일한 행에 저장할 수 있습니다.
다음 GoogleSQL 함수를 사용하여 ObjectRef
값을 만들고 업데이트합니다.
OBJ.MAKE_REF
: Cloud Storage 객체의 메타데이터가 포함된ObjectRef
값을 만듭니다.OBJ.FETCH_METADATA
:uri
및authorizer
값으로 부분적으로 채워진ObjectRef
값의 Cloud Storage 메타데이터를 가져옵니다.
자세한 내용은 테이블 스키마에서 ObjectRef
열 지정을 참고하세요.
값 ObjectRefRuntime
개
ObjectRefRuntime
값은 ObjectRefRuntime
스키마를 사용하는 JSON
값입니다.
ObjectRefRuntime
값에는 객체를 만드는 데 사용된 ObjectRef
값의 Cloud Storage 객체 메타데이터, 연결된 승인자, 액세스 URL이 포함됩니다. 액세스 URL을 사용하여 Cloud Storage에서 객체를 읽거나 수정할 수 있습니다.
ObjectRefRuntime
값을 사용하여 분석 및 변환 워크플로에서 객체 데이터를 처리합니다. ObjectRefRuntime
값의 액세스 URL은 최대 6시간 후에 만료되지만 더 짧은 만료 시간을 구성할 수도 있습니다. 워크플로의 일부로 어디서나 ObjectRefRuntime
값을 유지하는 경우 이 데이터를 정기적으로 새로고침해야 합니다. 객체 메타데이터를 유지하려면 대신 ObjectRef
값을 저장한 다음 필요할 때 이를 사용하여 ObjectRefRuntime
값을 생성합니다. Cloud Storage의 기본 객체가 수정되지 않는 한 ObjectRef
값을 새로고침할 필요가 없습니다.
OBJ.GET_ACCESS_URL
함수를 사용하여 ObjectRefRuntime
값을 만듭니다.
생성형 AI 함수
Gemini 모델과 함께 다음 생성형 AI 함수를 사용하여 ObjectRefRuntime
입력을 기반으로 텍스트, 임베딩, 스칼라 값을 생성합니다.
ML.GENERATE_TEXT
AI.GENERATE_TABLE
AI.GENERATE
AI.GENERATE_BOOL
AI.GENERATE_DOUBLE
AI.GENERATE_INT
ML.GENERATE_EMBEDDING
ML.GENERATE_EMBEDDING
를 제외한 모든 함수의 경우 ObjectRefRuntime
값을 단일 값으로 제공하거나 배열로 제공할 수 있습니다.
ML.GENERATE_EMBEDDING
는 단일 값만 허용합니다.
Python에서 멀티모달 데이터 작업
BigQuery DataFrames 클래스와 메서드를 사용하여 Python에서 멀티모달 데이터를 분석할 수 있습니다.
멀티모달 DataFrame
다음 Session
메서드를 사용하여 정형 데이터와 비정형 데이터를 통합하는 멀티모달 DataFrame을 만듭니다.
from_glob_path
메서드: Cloud Storage 버킷에서 다중 모드 DataFrame을 만듭니다.read_gbq_object_table
메서드: 객체 테이블에서 다중 모드 DataFrame을 만듭니다.
객체 변환 메서드
다음 Series.BlobAccessor
메서드를 사용하여 객체 데이터를 변환합니다.
pdf_chunk
메서드: 다중 모드 DataFrame에서 PDF 객체를 청크 처리합니다.다음 메서드는 멀티모달 DataFrame에서 이미지 객체를 변환합니다.
생성형 AI 방법
다음 메서드를 사용하여 멀티모달 데이터에서 생성형 AI 태스크를 실행합니다.
GeminiTextGenerator
클래스의predict
메서드: 멀티모달 데이터를 기반으로 텍스트를 생성합니다.MultimodalEmbeddingGenerator
클래스의predict
메서드: 멀티모달 데이터를 기반으로 임베딩을 생성합니다.
객체 테이블
멀티모달 데이터 미리보기 허용 목록에 있는 경우 새로 만드는 모든 객체 테이블에는 지정된 객체의 ObjectRef
값이 포함된 ref
열이 있습니다. 객체 테이블을 만드는 데 사용되는 연결은 ref
열에 authorizer
값을 채우는 데 사용됩니다. ref
열을 사용하여 표준 테이블에서 ObjectRef
값을 채우고 새로고침할 수 있습니다.
제한사항
BigQuery 멀티모달 데이터 지형지물에는 다음과 같은 제한사항이 적용됩니다.
ObjectRef
값을 참조하는 쿼리는ObjectRef
값이 포함된 테이블과 동일한 프로젝트에서 실행해야 합니다.ObjectRef
또는ObjectRefRuntime
값을 참조하는 쿼리를 실행하는 프로젝트 및 리전에는 연결이 20개를 초과할 수 없습니다. 예를 들어myproject
의asia-east1
에서 쿼리를 실행하는 경우myproject
의asia-east1
에 20개를 초과하는 연결을 보유할 수 없습니다.
비용
멀티모달 데이터를 사용할 때는 다음과 같은 비용이 적용됩니다.
- 표준 테이블에 객체 메타데이터를
ObjectRef
값으로 저장하면 테이블의 BigQuery 스토리지 비용이 증가합니다. ObjectRef
값에서 실행되는 쿼리에는 BigQuery 컴퓨팅 비용이 발생합니다.- 객체 변환으로 만드는 새 객체에는 Cloud Storage 비용이 발생합니다.
- BigQuery에서 생성하고 유지하는 새 데이터에는 BigQuery 스토리지 비용이 발생합니다.
- 생성형 AI 함수를 사용하면 Vertex AI 비용이 발생합니다.
- BigQuery Python UDF, BigQuery DataFrames의 다중 모드 DataFrame 및 객체 변환 메서드를 사용하면 Python UDF 비용이 발생합니다.
자세한 내용은 다음 가격 책정 페이지를 참고하세요.
다음 단계
- 테이블 스키마에
ObjectRef
열 지정 - SQL로 멀티모달 데이터 분석
- BigQuery DataFrames를 사용하여 Python에서 멀티모달 데이터 분석
- BigQuery ML의 생성형 AI에 대해 자세히 알아보세요.
- BigQuery DataFrames에 대해 자세히 알아보세요.