ABAP용 BigQuery AI 및 ML SDK를 사용하면 BigQuery의 소스에서 엔터프라이즈 데이터에 대한 임베딩을 생성하고 관리할 수 있습니다.
BigQuery는 벡터 검색 기능을 사용하는 데 비용 효율적인 벡터 데이터베이스로 작동할 수 있으므로 데이터 웨어하우스 내에서 직접 임베딩(데이터의 벡터 표현)을 저장하고 쿼리할 수 있으며, 별도의 벡터 데이터베이스 인프라가 필요하지 않을 수 있습니다.
BigQuery 함수 ML.GENERATE_EMBEDDING
를 사용하여 BigQuery 데이터 세트에 저장된 기업 데이터의 임베딩을 생성할 수 있습니다.
Vertex AI의 임베딩 모델에 액세스하려면 BigQuery ML에서 Vertex AI 모델의 엔드포인트를 나타내는 원격 모델을 만들어야 합니다. 사용할 Vertex AI 모델에 대한 원격 모델을 만든 후에는 원격 모델에 대해 BigQuery ML 함수를 실행하여 해당 모델의 기능에 액세스할 수 있습니다.
ABAP용 BigQuery AI 및 ML SDK를 사용하면 다음과 같은 용도로 임베딩 모델을 사용할 수 있습니다.
- 텍스트 데이터의 임베딩 생성 및 저장
- 멀티모달 데이터용 임베딩 생성 및 저장
- 최신 엔터프라이즈 데이터로 BigQuery 벡터 데이터베이스 업데이트
시작하기 전에
임베딩 모델과 함께 ABAP용 BigQuery AI 및 ML SDK를 사용하기 전에 사용자 또는 관리자가 다음 기본 요건을 완료했는지 확인하세요.
- 프로젝트에서 BigQuery API, BigQuery Connection API, Vertex AI API를 사용 설정했습니다. Google Cloud API를 사용 설정하는 방법에 관한 자세한 내용은 API 사용 설정을 참고하세요. Google Cloud
- Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.
- 인증을 위해 클라이언트 키에 구성된 서비스 계정에는 필수 권한이 있어야 합니다.
- SAP 환경에 ABAP용 BigQuery AI 및 ML SDK를 설치했습니다.
- 지원되는 임베딩 모델의 원격 모델을 만들었습니다.
가격 책정
ABAP용 BigQuery AI 및 ML SDK는 무료로 제공됩니다. 하지만 BigQuery 및 Vertex AI 플랫폼의 요금은 개발자가 부담합니다.
- BigQuery ML: BigQuery에서 처리하는 데이터에 대한 비용이 발생합니다.
- Vertex AI: 원격 모델로 표현되는 Vertex AI 서비스 호출 비용이 발생합니다.
프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용합니다.
BigQuery 가격 책정에 대한 자세한 내용은 BigQuery 가격 책정 페이지를 참고하세요.
Vertex AI 가격 책정에 대한 자세한 내용은 Vertex AI 가격 책정 페이지를 참고하세요.
BigQuery에서 임베딩 생성
이 섹션에서는 ABAP용 BigQuery AI 및 ML SDK를 사용하여 ABAP 애플리케이션 로직에서 BigQuery에 저장된 엔터프라이즈 데이터의 임베딩을 생성하는 방법을 설명합니다.
BigQuery 임베딩 호출자 클래스 인스턴스화
BigQuery 데이터 세트에서 임베딩 텍스트 및 멀티모달 모델을 호출하려면 /GOOG/CL_BQ_GENERATIVE_MODEL
클래스를 인스턴스화합니다.
TRY.
DATA(lo_bqml_embeddings_model) = NEW /goog/cl_bq_embeddings_model( iv_key = 'CLIENT_KEY' ).
CATCH /goog/cx_sdk INTO DATA(lo_cx_sdk).
cl_demo_output=>display( lo_cx_sdk->get_text( ) ).
ENDTRY.
CLIENT_KEY
를 인증 설정 중에 Google Cloud 에 인증하기 위해 구성한 클라이언트 키로 바꿉니다.
임베딩 생성
BigQuery 함수 ML.GENERATE_EMBEDDING
를 사용하여 텍스트 및 다중 모달 데이터의 임베딩을 생성하는 쿼리를 실행하려면 /GOOG/CL_BQ_EMBEDDINGS_MODEL
클래스의 GENERATE_EMBEDDINGS
메서드를 사용하세요.
쿼리로 설정된 /GOOG/CL_BQ_QUERY
클래스의 객체가 메서드에 입력으로 전달됩니다.
lo_bqml_embeddings_model->generate_embeddings( io_query = lo_bq_query ).
LO_BQ_QUERY
는 쿼리를 설정한 후 /GOOG/CL_BQ_QUERY
클래스의 참조입니다.
모델 생성 매개변수 재정의
BigQuery의 저장된 쿼리 또는 전달된 쿼리 텍스트에서 임베딩 모델 생성 매개변수를 정의할 수 있습니다.
하지만 ABAP 애플리케이션 로직에서 동일한 쿼리의 매개변수를 재정의해야 하는 경우 /GOOG/CL_BQ_EMBEDDINGS_MODEL
클래스의 SET_GENERATION_CONFIG
메서드를 사용할 수 있습니다.
초기 쿼리의 생성 매개변수는 이 메서드를 통해 전달된 매개변수로 재정의됩니다.
lo_bqml_embeddings_model->set_generation_config( iv_flatten_json_output = 'IS_FLATTEN_JSON_OUTPUT'
iv_task_type = 'TASK_TYPE'
iv_output_dimensionality = 'OUTPUT_DIMENSIONALITY' ).
다음을 바꿉니다.
IS_FLATTEN_JSON_OUTPUT
: 함수로 반환된 JSON 콘텐츠가 개별 열로 파싱되는지 여부를 결정하는 불리언 값입니다.TASK_TYPE
: 모델이 더 나은 품질의 임베딩을 생성할 수 있도록 의도된 다운스트림 애플리케이션을 지정하는 값입니다.ML.GENERATE_EMBEDDING
의 입력 문법 아래task_type
인수에서 가능한 값을 찾습니다.OUTPUT_DIMENSIONALITY
: 임베딩을 생성할 때 사용할 차원 수를 지정하는 값입니다.ML.GENERATE_EMBEDDING
의 입력 문법 아래에 있는output_dimensionality
인수에서 가능한 값을 찾습니다.
임베딩 생성을 위한 쿼리의 쿼리 결과 가져오기
임베딩을 생성하고 의미 있는 방식으로 이를 표시하기 위해 BigQuery ML에서 처리된 응답을 수신하기 위해 SDK는 /GOOG/CL_BQ_GENERATIVE_MODEL
클래스의 체이닝된 메서드를 사용합니다. 따라서 중간 결과를 저장하는 변수가 필요하지 않고 단일 문으로 응답에 직접 액세스할 수 있습니다.
텍스트 임베딩 벡터 가져오기
ABAP 애플리케이션 로직에서 각 행의 텍스트 임베딩 벡터를 가져오려면 GET_TEXT_EMBEDDING_VECTORS
메서드를 사용하세요.
DATA(lt_embeddings) = lo_bqml_embeddings_model->generate_embeddings( io_query = lo_bq_query
)->get_text_embedding_vectors( ).
텍스트 임베딩 상태 가져오기
각 행의 각 텍스트 임베딩 생성 상태를 가져오려면 GET_TEXT_EMBEDDING_STATUS
메서드를 사용합니다.
작업이 성공하면 상태가 비어 있습니다.
DATA(lt_embeddings_status) = lo_bqml_embeddings_model->generate_embeddings( io_query = lo_bq_query
)->get_text_embedding_status( ).
쿼리 작업 상태 가져오기
BigQuery의 각 쿼리는 쿼리 작업으로 실행됩니다.
임베딩 쿼리 작업의 상태를 가져오려면 GET_QUERY_JOB_STATUS
메서드를 사용합니다.
lo_bqml_embeddings_model->generate_embeddings( io_query = lo_bq_query
)->get_query_job_status(
IMPORTING ev_job_complete = DATA(lv_job_complete)
ev_job_creation_reason = DATA(lv_job_creation_reason)
ev_job_id = DATA(lv_job_id)
ev_query_id = DATA(lv_query_id)
ev_total_bytes_processed = DATA(lv_total_bytes_processed)
ev_total_rows = DATA(lv_total_rows) ).
이 메서드는 다음과 같은 작업 상태 측정항목을 반환합니다.
- 쿼리가 완료되었는지 여부입니다.
- 작업이 생성된 이유입니다.
- 쿼리를 실행하기 위해 생성된 작업에 대한 참조입니다.
- 쿼리의 자동 생성 ID입니다.
- 이 쿼리에서 처리된 총 바이트 수입니다.
- 전체 쿼리 결과 집합의 총 행 수입니다.
쿼리 작업 오류 가져오기
쿼리 작업 오류 (있는 경우)를 가져오려면 GET_QUERY_JOB_ERRORS
메서드를 사용합니다.
DATA(lt_query_job_errors) = lo_bqml_embeddings_model->execute_query( io_query = lo_bq_query
)->get_query_job_errors( ).
텍스트 임베딩의 전반적인 응답 가져오기
실행한 텍스트 임베딩 쿼리의 전체 응답 테이블을 가져오려면 GET_TEXT_EMBEDDING_RESPONSE
메서드를 사용하세요.
응답은 쿼리에서 모델 생성 매개변수 FLATTEN_JSON_OUTPUT
가 TRUE
로 설정된 경우에만 채워집니다.
DATA(lt_text_embeddings_response) = lo_bqml_embeddings_model->execute_query( io_query = lo_bq_query
)->get_text_embedding_response( ).