BigQuery에서 벡터 검색 실행

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에는 유사도 정도를 나타내는 검색 문자열에서 검색 응답까지의 거리도 포함됩니다.