ABAP용 BigQuery AI 및 ML SDK를 사용하면 자연어 기반 검색 문자열을 통해 BigQuery의 벡터화된 엔터프라이즈 데이터에 대해 벡터 검색을 실행하고 ABAP 기반 상담사 또는 애플리케이션에서 결과를 가져올 수 있습니다.
BigQuery 벡터 검색을 사용하면 GoogleSQL을 통해 벡터 색인을 사용하여 대략적인 결과에 관한 시맨틱 검색을 실행할 수 있습니다.
벡터 검색을 사용하면 고차원 벡터 또는 임베딩을 사용하여 대규모 데이터 세트 내에서 의미적으로 유사한 데이터 포인트를 찾을 수 있습니다.
BigQuery에 벡터 임베딩을 저장하여 BigQuery를 벡터 데이터베이스로 만들고 BigQuery 함수 VECTOR_SEARCH
를 사용하여 벡터 유사성 검색을 적용할 수 있습니다.
시작하기 전에
Gemini 모델과 함께 ABAP용 BigQuery AI 및 ML SDK를 사용하기 전에 사용자 또는 관리자가 다음 기본 요건을 완료했는지 확인합니다.
- 프로젝트에서 BigQuery API를 사용 설정했습니다. Google Cloud API를 사용 설정하는 방법에 관한 자세한 내용은 API 사용 설정을 참고하세요. Google Cloud
- Google Cloud 프로젝트에 결제가 사용 설정되어 있습니다.
- 벡터 임베딩이 생성되어 BigQuery의 벡터 데이터 세트에 저장되었습니다. ABAP용 BigQuery AI 및 ML SDK를 사용하여 SAP 애플리케이션에서 이를 실행하는 방법에 관한 자세한 내용은 임베딩 생성을 참고하세요.
- 엔터프라이즈 데이터의 벡터 색인을 만들었습니다. 자세한 내용은 벡터 색인 만들기를 참고하세요.
- 인증을 위해 클라이언트 키에 구성된 서비스 계정에 필수 권한을 부여했습니다.
- SAP 환경에 ABAP용 BigQuery AI 및 ML SDK를 설치했습니다.
가격 책정
ABAP용 BigQuery AI 및 ML SDK는 무료로 제공됩니다. 하지만 BigQuery 컴퓨팅 가격 책정을 사용하는 CREATE VECTOR INDEX
문과 VECTOR_SEARCH
함수의 요금은 개발자가 부담합니다.
프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용합니다.
BigQuery 가격 책정에 대한 자세한 내용은 BigQuery 가격 책정 페이지를 참고하세요.
BigQuery에서 벡터 검색 실행
이 섹션에서는 ABAP용 BigQuery AI 및 ML SDK를 사용하여 ABAP 애플리케이션에서 BigQuery에 저장된 엔터프라이즈 데이터에 대해 벡터 시맨틱 검색을 실행하는 방법을 설명합니다.
BigQuery 벡터 검색 호출자 클래스 인스턴스화
검색 문자열을 사용하여 벡터 검색을 실행하려면 /GOOG/CL_BQ_VECTOR_SEARCH
클래스를 인스턴스화합니다.
TRY.
DATA(lo_bq_vector_search) = NEW /goog/cl_bq_vector_search( 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 함수 VECTOR_SEARCH
로 벡터 검색을 실행하는 쿼리를 실행하려면 /GOOG/CL_BQ_VECTOR_SEARCH
클래스의 FIND_NEAREST_NEIGHBORS
메서드를 사용하세요.
쿼리로 설정된 /GOOG/CL_BQ_QUERY
클래스의 객체가 메서드에 입력으로 전달됩니다.
lo_bq_vector_search->find_nearest_neighbors( io_query = lo_bq_query ).
LO_BQ_QUERY
는 쿼리를 설정한 후 /GOOG/CL_BQ_QUERY
클래스의 참조입니다. 검색 문자열을 쿼리 텍스트에서 전달할 수 있습니다.
벡터 검색 매개변수 재정의
BigQuery의 저장된 쿼리 또는 전달된 쿼리 텍스트에서 벡터 검색 매개변수 (VECTOR_SEARCH
함수 정의 아래)를 정의할 수 있습니다. 그러나 ABAP 애플리케이션 로직에서 동일한 쿼리의 매개변수를 재정의해야 하는 경우 /GOOG/CL_BQ_VECTOR_SEARCH
클래스의 SET_SEARCH_PARAMETERS
메서드를 사용하여 재정의할 수 있습니다. 초기 쿼리의 검색 매개변수는 이 메서드를 통해 전달된 매개변수로 완전히 재정의됩니다.
lo_bq_vector_search->set_search_parameters( iv_top_k = TOP_K
iv_distance_type = DISTANCE_TYPE
iv_fraction_lists_to_search = 'FRACTION_LISTS_TO_SEARCH' ).
다음을 바꿉니다.
TOP_K
: 반환할 최근접 이웃 수를 지정하는INT64
값입니다.DISTANCE_TYPE
: 두 벡터 간의 거리를 계산하는 데 사용할 측정항목 유형을 지정하는 문자열 값입니다.VECTOR_SEARCH
함수 정의 아래의DISTANCE_TYPE
인수에서 가능한 값을 찾습니다.FRACTION_LISTS_TO_SEARCH
: 검색할 목록의 비율을 지정하는 문자열 값입니다.VECTOR_SEARCH
함수 정의 옵션에서FRACTION_LISTS_TO_SEARCH
인수의 가능한 값을 찾습니다.
벡터 검색 응답 가져오기
벡터 검색 쿼리에 대해 BigQuery ML에서 처리된 응답을 수신하고 의미 있는 방식으로 표시하려면 /GOOG/CL_BQ_SEARCH_RESPONSE
클래스를 사용하세요.
/GOOG/CL_BQ_SEARCH_RESPONSE
클래스에서 캡처한 응답은 /GOOG/CL_BQ_VECTOR_SEARCH
클래스의 메서드를 통해 이루어진 요청에 연결되므로 중간 결과를 저장하는 변수가 필요하지 않고 단일 문으로 응답에 직접 액세스할 수 있습니다.
검색 문자열의 최근접 이웃 가져오기
검색 문자열의 최근접 이웃을 가져오려면 GET_NEAREST_NEIGHBORS
메서드를 사용합니다.
반환되는 이웃 수는 호출된 쿼리의 VECTOR_SEARCH
함수의 TOP_K
매개변수에 지정되거나 설정된 값에 따라 다릅니다.
DATA(lt_search_response) = lo_bq_vector_search->find_nearest_neighbors( io_query = lo_bq_query
)->get_nearest_neighbors( ).
LT_SEARCH_RESPONSE
에는 유사도 정도를 나타내는 검색 문자열에서 검색 응답 항목까지의 거리도 포함됩니다.
검색 문자열의 최근접 이웃 가져오기
검색 문자열의 최근접 이웃을 가져오려면 GET_NEAREST_NEIGHBOR
메서드를 사용합니다.
이렇게 하면 호출된 쿼리의 VECTOR_SEARCH
함수의 TOP_K
매개변수에 지정되거나 설정된 값과 관계없이 검색 문자열에 대해 가장 가까운 이웃만 가져옵니다.
DATA(ls_search_response) = lo_bq_vector_search->find_nearest_neighbors( io_query = lo_bq_query
)->get_nearest_neighbor( ).
LS_SEARCH_RESPONSE
에는 유사도 정도를 나타내는 검색 문자열에서 검색 응답까지의 거리도 포함됩니다.