이 문서에서는 ABAP용 Vertex AI SDK를 사용하여 Vertex AI 벡터 검색을 통해 벡터 유사성 검색을 실행하는 방법을 설명합니다. 벡터 검색을 사용하면 고차원 벡터를 사용하여 대규모 데이터 세트 내에서 의미상 유사한 데이터 포인트를 찾을 수 있습니다. 이미지 및 텍스트 검색과 같은 작업에 탁월하며 정확한 키워드 일치보다 의미를 우선시합니다.
벡터 검색을 사용하면 엔터프라이즈 데이터의 강력한 기능을 활용하여 효율성을 개선하고, 고객 경험을 향상시키며, 경쟁력을 확보할 수 있습니다. SAP 환경에 상당한 가치를 제공하여 다음과 같은 이점을 제공할 수 있습니다.
검색 기능 개선: 다양한 시스템에 흩어져 있는 구조화된 정보와 비정형 정보를 모두 포함하여 대량의 SAP 데이터에서 검색 결과의 정확성과 관련성을 개선합니다. 이를 통해 관련 엔터프라이즈 데이터를 더 빠르고 효과적으로 검색할 수 있습니다.
비정형 데이터에서 통계 얻기: 벡터 검색을 사용하여 제품 데이터, 고객 데이터, 고객 리뷰, 지원 티켓, 내부 문서와 같이 SAP 시스템 내에서 이전에 활용하지 못했던 비정형 데이터에서 통계를 추출합니다.
고객 경험 개선: 제품 추천, 지능형 챗봇, 기타 고객 대면 애플리케이션을 위해 벡터 검색을 사용하여 고객과의 맞춤설정 및 문맥 인식 상호작용을 제공합니다.
비즈니스 프로세스 간소화: 벡터 검색을 사용하여 관련 정보를 빠르게 찾고, 패턴을 파악하고, 데이터 기반 결정을 내림으로써 내부 프로세스를 최적화합니다.
혁신 가속화: 벡터 검색을 생성형 AI와 같은 다른 Vertex AI 기능과 결합하여 비즈니스 성장을 이끄는 새롭고 혁신적인 솔루션을 개발하세요.
Vertex AI 벡터 검색 사용 방법
벡터 검색을 사용한 시맨틱 일치는 다음 단계로 단순화할 수 있습니다.
- 엔터프라이즈 데이터의 임베딩 표현을 생성합니다.
- 임베딩을 Cloud Storage 버킷에 업로드합니다.
벡터 색인을 만들고 벡터 색인을 임베딩이 포함된 Cloud Storage 버킷에 연결합니다. 최신 데이터로 업데이트하려는 방법에 따라 두 가지 유형의 색인을 만들 수 있습니다.
- 일괄 색인: 일괄 색인은 매주 또는 매월 처리되는 데이터와 같이 일정 기간 동안 저장된 데이터를 사용하여 색인을 일괄적으로 업데이트하려는 경우에 사용됩니다.
- 스트림 색인: 스트리밍 색인은 새 데이터가 데이터 스토어에 추가되는 즉시 색인 데이터를 업데이트하려는 경우에 사용됩니다.
색인 엔드포인트를 만들고 벡터 색인을 엔드포인트에 배포하여 쿼리를 실행하여 추천 또는 결과를 가져옵니다. 색인 엔드포인트는 색인의 쿼리 요청을 수락하는 서버 인스턴스 역할을 합니다.
항목 ID, 검색 문자열 또는 임베딩을 사용하여 색인 엔드포인트를 쿼리합니다.
ABAP용 Vertex AI SDK는 ABAP 환경에서 Vertex AI 기반 벡터 검색 애플리케이션을 빌드할 수 있도록 Vertex AI 벡터 검색의 이러한 모든 측면을 다룹니다.
벡터 색인 만들기 및 관리
이 섹션에서는 ABAP용 Vertex AI SDK를 사용하여 벡터 색인을 만들고 관리하는 방법을 설명합니다.
시작하기 전에
사용자 또는 관리자가 다음 기본 요건을 완료했는지 확인합니다.
- Google Cloud 프로젝트에서 Vertex AI API를 사용 설정합니다.
- Vertex AI API에 액세스하려면 인증을 설정합니다.
임베딩 준비
임베딩을 준비해야 합니다. ABAP용 Vertex AI SDK를 사용하여 엔터프라이즈 데이터의 임베딩을 생성하는 방법에 관한 자세한 내용은 임베딩 생성을 참고하세요.
Cloud Storage에 임베딩 업로드
임베딩을 벡터 색인과 연결할 수 있도록 Cloud Storage 버킷에 임베딩을 업로드합니다. Google Cloud 외부에서 임베딩 파일을 생성한 경우에도 Cloud Storage 버킷에 임베딩 파일을 업로드할 수 있습니다.
ABAP용 Vertex AI SDK를 사용하여 생성된 임베딩을 Cloud Storage 버킷으로 전송하는 방법에 관한 자세한 내용은 Cloud Storage에 임베딩 저장을 참고하세요.
벡터 색인의 클래스 인스턴스화
벡터 색인을 만들고 관리하려면 /GOOG/CL_VECTOR_INDEX
클래스를 인스턴스화하면 됩니다. 인증에 구성된 클라이언트 키를 전달하여 클래스를 인스턴스화합니다.
DATA(lo_vector_index) = NEW /goog/cl_vector_index( iv_key_name = 'CLIENT_KEY' ).
CLIENT_KEY
를 인증에 구성된 클라이언트 키로 바꿉니다.
벡터 색인 만들기
벡터 색인을 만들려면 /GOOG/CL_VECTOR_INDEX
클래스의 CREATE_TREE_AH_INDEX
메서드를 사용하면 됩니다. tree-AH 알고리즘을 기반으로 색인을 만듭니다.
lo_vector_index->create_tree_ah_index( iv_display_name = 'INDEX_NAME'
iv_description = 'INDEX_DESCRIPTION'
iv_location_id = 'LOCATION_ID'
iv_gcs_content_uri = 'CONTENT_URI'
iv_dimensions = 'DIMENSIONS'
iv_approximate_neighbors_count = 'NEIGHBORS_COUNT'
iv_index_update_method = 'INDEX_UPDATE_METHOD'
iv_distance_measure_type = 'DISTANCE_MEASURE_TYPE'
iv_shard_size = 'SHARD_SIZE'
iv_leaf_node_embedding_count = 'LEAF_NODE_EMBEDDING_COUNT'
iv_leaf_nodes_to_search = 'LEAF_NODE_TO_SEARCH'
iv_etag = 'ETAG'
iv_cloud_kms_encryption_key = 'KEY_FOR_ENCRYPTION' ).
다음을 바꿉니다.
INDEX_NAME
: 색인의 표시 이름입니다.INDEX_DESCRIPTION
: 색인에 대한 설명입니다.LOCATION_ID
: 색인을 저장할 Google Cloud 리전입니다. 사용 가능한 위치에 대한 자세한 내용은 Vertex AI 위치를 참고하세요.CONTENT_URI
: 색인을 만드는 데 사용되는 임베딩이 포함된 Cloud Storage 버킷의 URI입니다.DIMENSIONS
: 입력 벡터의 차원 수입니다.NEIGHBORS_COUNT
: 순서 변경이 수행되기 전에 근사 검색을 통해 찾을 이웃의 수입니다.INDEX_UPDATE_METHOD
: 색인의 업데이트 모드(BATCH_UPDATE
또는STREAM_UPDATE
)입니다.DISTANCE_MEASURE_TYPE
: 데이터 포인트와 쿼리 벡터 간의 거리 계산에 사용되는 알고리즘을 결정합니다. 자세한 내용은 거리 측정 유형을 참고하세요.SHARD_SIZE
: 각 샤드의 크기입니다. 색인이 크면 지정된 샤드 크기를 기준으로 샤딩됩니다. 서빙 중에 각 샤드는 별도의 노드에서 제공되며 독립적으로 확장됩니다.LEAF_NODE_EMBEDDING_COUNT
: 각 리프 노드의 임베딩 수입니다. 설정하지 않으면 기본값은1000
입니다.LEAF_NODE_TO_SEARCH
: 쿼리를 검색할 수 있는 리프 노드의 기본 비율입니다. 1~100 범위 내에 있어야 합니다. 설정되지 않으면 기본값은10
(즉,10%
)입니다.ETAG
: 일관된 읽기-수정-쓰기 업데이트를 수행하기 위한 ETag 값입니다.KEY_FOR_ENCRYPTION
: 고객 관리 암호화 키의 Cloud KMS 리소스 식별자입니다.
벡터 색인 엔드포인트 만들기
벡터 색인 엔드포인트를 만들려면 /GOOG/CL_VECTOR_INDEX
클래스의 CREATE_INDEX_ENDPOINT
메서드를 사용하면 됩니다.
lo_vector_index->create_index_endpoint( iv_display_name = 'INDEX_ENDPOINT_NAME'
iv_description = 'INDEX_ENDPOINT_DESCRIPTION'
iv_location_id = 'LOCATION_ID'
iv_public_endpoint_enabled = 'ENABLE_PUBLIC_ENDPOINT'
iv_etag = 'ETAG'
iv_cloud_kms_encryption_key = 'KEY_FOR_ENCRYPTION' ).
다음을 바꿉니다.
INDEX_ENDPOINT_NAME
: 색인 엔드포인트의 표시 이름입니다.INDEX_ENDPOINT_DESCRIPTION
: 색인 엔드포인트 설명입니다.LOCATION_ID
: 색인 엔드포인트를 만들 Google Cloud 리전입니다. 사용 가능한 위치에 대한 자세한 내용은 Vertex AI 위치를 참고하세요.ENABLE_PUBLIC_ENDPOINT
: 배포된 색인에 공개 엔드포인트를 통해 액세스할 수 있는 경우 이 매개변수 값을ABAP_TRUE
로 설정합니다.ETAG
: 일관된 읽기-수정-쓰기 업데이트를 수행하기 위한 ETag 값입니다.KEY_FOR_ENCRYPTION
: 고객 관리 암호화 키의 Cloud KMS 리소스 식별자입니다.
색인 엔드포인트에 벡터 색인 배포
색인 엔드포인트에 벡터 색인을 배포하려면 /GOOG/CL_VECTOR_INDEX
클래스의 DEPLOY_INDEX
메서드를 사용하면 됩니다.
lo_vector_index->deploy_index( iv_deployed_index_id = 'DEPLOYMENT_ID'
iv_location_id = 'LOCATION_ID'
iv_index_id = 'INDEX_ID'
iv_index_endpoint_id = 'INDEX_ENDPOINT_ID>'
iv_min_replica_count = 'MIN_REPLICA_COUNT'
iv_max_replica_count = 'MAX_REPLICA_COUNT'
iv_enable_access_logging = 'ENABLE_ACCESS_LOGGING'
iv_deployment_group = 'DEPLOYMENT_GROUP' ).
다음을 바꿉니다.
DEPLOYMENT_ID
: 색인 배포의 ID입니다.LOCATION_ID
: 색인을 배포할 Google Cloud 리전입니다. 사용 가능한 위치에 대한 자세한 내용은 Vertex AI 위치를 참고하세요.INDEX_ID
: 색인의 리소스 이름입니다.INDEX_ENDPOINT_ID
: 배포할 색인 엔드포인트의 리소스 이름입니다.MIN_REPLICA_COUNT
: 배포된 모델의 최소 머신 복제본 수입니다.MAX_REPLICA_COUNT
: 배포된 모델의 최대 머신 복제본 수입니다.ENABLE_ACCESS_LOGGING
: 비공개 엔드포인트의 액세스 로그를 Cloud Logging으로 전송하려면 이 매개변수 값을ABAP_TRUE
로 설정하세요.DEPLOYMENT_GROUP
: 배포 그룹의 이름입니다(예:test
,prod
).
벡터 색인 업데이트 및 다시 빌드
또한 엔터프라이즈 AI 솔루션에서 가장 정확한 벡터 검색 결과를 얻으려면 색인을 최신 엔터프라이즈 데이터로 업데이트해야 합니다.
일괄 색인 업데이트
Cloud Storage 버킷에 있는 업데이트된 정보로 일괄 색인을 업데이트하려면 /GOOG/CL_VECTOR_INDEX
클래스의 PATCH_TREE_AH_INDEX
메서드를 사용하면 됩니다.
lo_vector_index->patch_tree_ah_index( iv_index_id = 'INDEX_ID'
iv_gcs_content_uri = 'CONTENT_URI'
iv_location_id = 'LOCATION_ID'
iv_is_complete_overwrite = 'IS_COMPLETE_OVERWRITE' ).
다음을 바꿉니다.
INDEX_ID
: 색인의 리소스 이름입니다.CONTENT_URI
: 최신 엔터프라이즈 데이터의 임베딩이 있는 Cloud Storage 버킷의 URI입니다.LOCATION_ID
: 색인의 Google Cloud 리전입니다.IS_COMPLETE_OVERWRITE
: 지정된 Cloud Storage 버킷의 데이터로 색인을 완전히 덮어쓰려면 이 매개변수 값을ABAP_TRUE
로 설정합니다.
다음 예시 아키텍처 흐름을 사용하여 SAP 데이터로 일괄 색인을 업데이트할 수 있습니다.
- SAP 백그라운드 작업을 통해
/GOOG/CL_STORAGE_V1
클래스를 사용하여 최신 데이터에 대한 임베딩으로 Cloud Storage 버킷을 업데이트합니다. SAP 이외의 데이터의 경우 SAP 외부의 프로세스를 통해서도 이 작업을 수행할 수 있습니다. - 주기적으로 실행되는 SAP의 백그라운드 작업을 통해
/GOOG/CL_VECTOR_INDEX
클래스의PATCH_TREE_AH_INDEX
메서드를 사용하여 일괄 색인 업데이트를 트리거합니다.
스트림 색인 업데이트
스트림 색인의 데이터 포인트에 대한 정보를 삽입/업데이트(upsert)하려면 /GOOG/CL_VECTOR_INDEX
클래스의 UPSERT_DATAPOINTS
메서드를 사용하면 됩니다.
lo_vector_index->upsert_datapoints( iv_index_id = 'INDEX_ID'
iv_location_id = 'LOCATION_ID'
iv_datapoint_id = 'ENTITY_ID'
it_embeddings = 'EMBEDDINGS' ).
다음을 바꿉니다.
INDEX_ID
: 색인의 리소스 이름입니다.LOCATION_ID
: 색인의 Google Cloud 리전입니다.ENTITY_ID
: 삽입/업데이트(upsert)할 항목 ID입니다.EMBEDDINGS
: 데이터 포인트의 삽입/업데이트(upsert)할 임베딩입니다.
스트림 색인에서 데이터 포인트의 정보를 삭제하려면 /GOOG/CL_VECTOR_INDEX
클래스의 REMOVE_DATAPOINTS
메서드를 사용하면 됩니다.
lo_vector_index->remove_datapoints( iv_index_id = 'INDEX_ID'
iv_location_id = 'LOCATION_ID'
iv_datapoint_id = 'ENTITY_ID' ).
다음을 바꿉니다.
INDEX_ID
: 색인의 리소스 이름입니다.LOCATION_ID
: 색인의 Google Cloud 리전입니다.ENTITY_ID
: 삭제할 항목 ID입니다.
삽입/업데이트(upsert) 및 삭제 작업은 색인에 대해 실시간으로 실행됩니다.
다음 예시 아키텍처 흐름을 사용하여 SAP 데이터로 스트림 색인을 업데이트할 수 있습니다.
- SAP 데이터 변경 지점인 BADI, 종료, 개선사항, 커스텀 SAP 로직과 같은 기업 SAP 솔루션의 자리표시자를 식별합니다.
- 식별된 자리표시자에서
/GOOG/CL_VECTOR_INDEX
클래스의UPSERT_DATAPOINTS
및REMOVE_DATAPOINTS
메서드를 사용하여 스트림 색인에서 SAP 데이터의 삽입/업데이트(upsert) 또는 삭제 작업을 트리거합니다.
벡터 색인 작업의 상태 가져오기
Google Cloud는 벡터 색인 및 색인 엔드포인트 생성, 색인 엔드포인트에 색인 배포 또는 벡터 일괄 색인 업데이트를 장기 실행 작업으로 실행합니다.
장기 실행 작업 ID, Vertex AI 아티팩트의 리소스 ID, 오류 메시지를 확인하기 위해 SDK는 /GOOG/CL_VECTORINDEX_RESPONSE
클래스를 제공합니다.
/GOOG/CL_VECTORINDEX_RESPONSE
클래스에서 캡처한 응답은 /GOOG/CL_VECTOR_INDEX
클래스의 메서드를 통해 이루어진 요청에 연결되므로 중간 결과를 저장하는 변수가 필요하지 않고 단일 문으로 응답에 직접 액세스할 수 있습니다.
장기 실행 작업 ID 가져오기
각 벡터 검색 작업에 대한 장기 실행 작업 ID를 가져오려면 /GOOG/CL_VECTORINDEX_RESPONSE
클래스의 GET_LRO
메서드를 사용하면 됩니다.
작업을 실행한 후 동일한 인스턴스로 GET_LRO
메서드를 호출하여 해당 장기 실행 작업 ID를 가져올 수 있습니다.
다음 코드 샘플은 일괄 색인 업데이트 작업의 장기 실행 작업 ID를 가져오는 방법을 보여줍니다.
DATA(lv_patch_index_lro) = lo_vector_index->patch_tree_ah_index(
iv_index_id = 'INDEX_ID'
iv_gcs_content_uri = 'CONTENT_URI'
iv_location_id = 'LOCATION_ID'
iv_is_complete_overwrite = 'IS_COMPLETE_OVERWRITE'
)->get_lro( ).
다음을 바꿉니다.
INDEX_ID
: 색인의 리소스 이름입니다.CONTENT_URI
: 최신 엔터프라이즈 데이터의 임베딩이 있는 Cloud Storage 버킷의 URI입니다.LOCATION_ID
: 색인의 Google Cloud 리전입니다.IS_COMPLETE_OVERWRITE
: 지정된 Cloud Storage 버킷의 데이터로 색인을 완전히 덮어쓰려면 이 매개변수 값을ABAP_TRUE
로 설정합니다.
장기 실행 작업 상태를 가져옵니다.
모든 장기 실행 작업에는 연결된 상태가 있습니다. 장기 실행 작업으로 예약된 태스크가 성공했는지 확인하려면 작업의 상태를 확인하면 됩니다.
Vertex AI 관련 태스크에 대한 장기 실행 작업 상태를 확인하거나 지속적으로 모니터링하려면 /GOOG/CL_VERTEX_AI_SDK_UTILITY
클래스의 GET_LRO_STATUS
메서드를 사용하면 됩니다.
/goog/cl_vertex_ai_sdk_utility=>get_lro_status(
EXPORTING
iv_key = 'CLIENY_KEY'
iv_operations_id = 'LONG_RUNNING_OPERATION_ID'
iv_location_id = 'LOCATION_ID'
IMPORTING
ev_is_done = DATA(lv_is_done) "Is the long-running operation complete
ev_is_successful = DATA(lv_is_successful) "Is the long-running operation successful
ev_error_code = DATA(lv_error_code) "Error code in the long-running operation in case of errors
ev_error_message = DATA(lv_error_message) ). "Error message in the long-running operation in case of errors
다음을 바꿉니다.
CLIENY_KEY
: 인증을 위한 클라이언트 키입니다.LONG_RUNNING_OPERATION_ID
: 장기 실행 작업 ID입니다.LOCATION_ID
: 색인의 Google Cloud 리전입니다.
Vertex AI 아티팩트의 리소스 ID 가져오기
생성된 색인, 생성된 색인 엔드포인트, 배포된 색인, 패치가 트리거된 색인 ID의 리소스 ID를 확인하려면 /GOOG/CL_VECTORINDEX_RESPONSE
클래스의 GET_ID
메서드를 사용하면 됩니다.
작업을 실행한 후 동일한 인스턴스로 GET_ID
메서드를 호출하여 해당 리소스 ID를 가져올 수 있습니다.
다음 코드 샘플은 /GOOG/CL_VECTOR_INDEX
클래스의 CREATE_TREE_AH_INDEX
메서드를 호출한 후 생성되는 색인의 ID를 가져오는 방법을 보여줍니다.
DATA(lv_id) = lo_vector_index->create_tree_ah_index(
iv_display_name = 'INDEX_NAME'
iv_location_id = 'LOCATION_ID'
iv_gcs_content_uri = 'CONTENT_URI'
iv_dimensions = 'DIMENSIONS'
iv_approximate_neighbors_count = 'NEIGHBORS_COUNT'
iv_leaf_node_embedding_count = 'LEAF_NODE_EMBEDDING_COUNT'
iv_leaf_nodes_to_search = 'LEAF_NODE_TO_SEARCH'
)->get_id( ).
다음을 바꿉니다.
INDEX_NAME
: 색인의 표시 이름입니다.LOCATION_ID
: 색인의 Google Cloud 리전입니다.CONTENT_URI
: 색인을 만드는 데 사용되는 임베딩이 포함된 Cloud Storage 버킷의 URI입니다.DIMENSIONS
: 입력 벡터의 차원 수입니다.NEIGHBORS_COUNT
: 순서 변경이 수행되기 전에 근사 검색을 통해 찾을 이웃입니다.LEAF_NODE_EMBEDDING_COUNT
: 각 리프 노드의 임베딩 수입니다. 설정하지 않으면 기본값은1000
입니다.LEAF_NODE_TO_SEARCH
: 쿼리를 검색할 수 있는 리프 노드의 기본 비율입니다. 1~100 범위 내에 있어야 합니다. 설정되지 않으면 기본값은10
(즉,10%
)입니다.
오류 코드 및 오류 메시지 가져오기
ABAP용 Vertex AI SDK를 통해 벡터 색인 작업을 트리거하는 중에 오류가 발생할 수 있습니다.
태스크 트리거 후 각각 오류 코드와 오류 메시지(있는 경우)를 가져오려면 `/GOOG/CL_VECTORINDEX_RESPONSE
클래스의 GET_ERROR_CODE
및 GET_ERROR_MESSAGE
메서드를 사용하면 됩니다.
작업을 실행한 후 동일한 인스턴스로 GET_ERROR_CODE
및 GET_ERROR_MESSAGE
메서드를 호출하여 해당 오류 코드 또는 오류 메시지를 가져올 수 있습니다.
다음 코드 샘플은 색인 생성에 실패하면 오류 코드와 오류 메시지를 표시하는 방법을 보여줍니다.
DATA(lo_vectorindex_response) = lo_vector_index->create_tree_ah_index(
iv_display_name = 'INDEX_NAME'
iv_location_id = 'LOCATION_ID'
iv_gcs_content_uri = 'CONTENT_URI'
iv_dimensions = 'DIMENSIONS'
iv_approximate_neighbors_count = 'NEIGHBORS_COUNT'
iv_leaf_node_embedding_count = 'LEAF_NODE_EMBEDDING_COUNT'
iv_leaf_nodes_to_search = 'LEAF_NODE_TO_SEARCH' ).
IF lo_vectorindex_response->get_error_code( ) IS NOT INITIAL.
cl_demo_output=>display( 'Error Code-' && lo_vectorindex_response->get_error_code( ) &&
'Error Message-' && lo_vectorindex_response->get_error_message( ) ).
ENDIF.
다음을 바꿉니다.
INDEX_NAME
: 색인의 표시 이름입니다.LOCATION_ID
: 색인의 Google Cloud 리전입니다.CONTENT_URI
: 색인을 만드는 데 사용되는 임베딩이 포함된 Cloud Storage 버킷의 URI입니다.DIMENSIONS
: 입력 벡터의 차원 수입니다.NEIGHBORS_COUNT
: 순서 변경이 수행되기 전에 근사 검색을 통해 찾을 이웃입니다.LEAF_NODE_EMBEDDING_COUNT
: 각 리프 노드의 임베딩 수입니다. 설정하지 않으면 기본값은1000
입니다.LEAF_NODE_TO_SEARCH
: 쿼리를 검색할 수 있는 리프 노드의 기본 비율입니다. 1~100 범위 내에 있어야 합니다. 설정되지 않으면 기본값은10
(즉,10%
)입니다.
최근접 이웃 검색
이 섹션에서는 ABAP용 Vertex AI SDK를 사용하여 최근접 이웃을 검색하는 방법을 설명합니다.
시작하기 전에
사용자 또는 관리자가 다음 기본 요건을 완료했는지 확인합니다.
- Google Cloud 프로젝트에서 Vertex AI API를 사용 설정합니다.
- Vertex AI API에 액세스하려면 인증을 설정합니다.
- 벡터 검색 매개변수를 구성했습니다.
RFC 대상 만들기
임베딩 파일 형식으로 엔터프라이즈 데이터가 있는 색인을 배포한 색인 엔드포인트에 대한 RFC 대상을 생성해야 합니다.
색인 엔드포인트의 호스트 이름을 검색합니다.
-
SAP GUI에서 트랜잭션 코드
/GOOG/SDK_IMG
를 실행합니다.또는 트랜잭션 코드
SPRO
를 실행한 후 SAP 참조 IMG를 클릭합니다. - ABAP SDK for Google Cloud > 유틸리티 > Vertex AI SDK: Feature Store 및 벡터 검색의 RFC 정보 가져오기를 클릭합니다.
- 벡터 검색 세부정보 가져오기를 선택합니다.
다음 옵션 중 하나를 선택합니다.
- 검색 키
- 벡터 색인 엔드포인트 ID
검색 키 옵션을 선택한 경우 벡터 검색 매개변수에 구성된 검색 키를 입력합니다.
벡터 색인 엔드포인트 ID 옵션을 선택한 경우 다음 매개변수를 입력합니다.
- Google Cloud 키 이름: Google Cloud에 인증하기 위한 클라이언트 키입니다.
- 위치: 색인 엔드포인트가 있는 리전입니다.
- 색인 엔드포인트 ID: 색인 엔드포인트의 이름입니다.
실행을 클릭하여 세부정보를 확인합니다. 호스트 라벨에 대해 엔드포인트를 기록합니다.
-
SAP GUI에서 트랜잭션 코드
색인 엔드포인트의 RFC 대상을 만듭니다.
SAP GUI에서 트랜잭션 코드
SM59
를 실행합니다.새 RFC 대상을 만듭니다. 생성된 RFC 대상의 연결 유형이
G - HTTP connection to external server
로 설정되었는지 확인합니다.기술 설정 탭으로 이동하여 다음 세부정보를 입력합니다.
타겟 호스트: 색인 엔드포인트의 호스트 이름을 제공합니다.
서비스 번호:
443
를 입력합니다. 보안 통신에 사용되는 포트 번호입니다.
로그온 및 보안 탭으로 이동하여 SSL 인증서 필드가 기본 SSL 클라이언트(표준) 옵션으로 설정되어 있는지 확인합니다.
변경사항을 저장합니다.
Vertex AI API의 서비스 매핑 테이블을 구성합니다.
SAP GUI에서 트랜잭션 코드
/GOOG/SDK_IMG
를 실행합니다.또는 트랜잭션 코드
SPRO
를 실행한 후 SAP 참조 IMG를 클릭합니다.ABAP SDK for Google Cloud > 기본 설정 > 서비스 매핑 구성을 클릭합니다.
새 항목을 클릭합니다.
Vertex AI API의 RFC 대상을 지정합니다.
이름 서비스 이름 RFC 대상 인증을 위한 클라이언트 키입니다. apiinvoker:v1
RFC 대상의 이름입니다. 새 항목을 저장합니다.
벡터 검색을 위한 클래스 인스턴스화
벡터 검색을 호출하려면 /GOOG/CL_VECTOR_SEARCH
클래스를 인스턴스화하면 됩니다. 벡터 검색 매개변수에 구성된 검색 키를 전달하여 클래스를 인스턴스화합니다.
DATA(lo_vector_search) = NEW /goog/cl_vector_search( iv_search_name = 'SEARCH_KEY' ).
SEARCH_KEY
를 벡터 검색 매개변수에 구성된 검색 키로 바꿉니다.
항목 ID를 사용하여 검색
특정 항목 ID와 관련하여 벡터 색인을 쿼리하려면 /GOOG/CL_VECTOR_SEARCH
클래스의 FIND_NEIGHBORS_BY_ENTITY_ID
메서드를 사용하면 됩니다.
항목 ID는 벡터 색인에 저장된 데이터 포인트에 해당합니다.
lo_vector_search->find_neighbors_by_entity_id( iv_entity_id = 'ENTITY_ID'
iv_neighbor_count = 'NEIGHBOR_COUNT'
iv_return_full_datapoint = 'RETURN_FULL_DATAPOINT' ).
다음을 바꿉니다.
ENTITY_ID
: 검색할 항목 ID입니다.NEIGHBOR_COUNT
: 쿼리에 대해 검색할 최근접 이웃 수입니다.RETURN_FULL_DATAPOINT
: 검색된 데이터 포인트에 대한 벡터 임베딩을 반환하려면 이 매개변수 값을ABAP_TRUE
로 설정합니다.
검색 문자열을 사용하여 검색
검색 문자열에 대한 벡터 색인을 쿼리하려면 /GOOG/CL_VECTOR_SEARCH
클래스의 FIND_NEIGHBORS_BY_STRING
메서드를 사용하면 됩니다.
SDK는 먼저 검색 문자열을 임베딩으로 변환한 다음 쿼리에 대한 최근접 이웃을 검색합니다.
DATA(lo_response) = lo_vector_search->find_neighbors_by_string(
iv_search_string = 'SEARCH_STRING'
iv_embeddings_model_key = 'MODEL_KEY'
iv_neighbor_count = 'NEIGHBOR_COUNT'
iv_return_full_datapoint = 'RETURN_FULL_DATAPOINT' ).
다음을 바꿉니다.
SEARCH_STRING
: 검색 문자열을 입력합니다.MODEL_KEY
: 임베딩을 생성하기 위한 모델 키로, 모델 생성 매개변수에서 구성됩니다.NEIGHBOR_COUNT
: 쿼리에 대해 검색할 최근접 이웃 수입니다.RETURN_FULL_DATAPOINT
: 검색된 데이터 포인트에 대한 벡터 임베딩을 반환하려면 이 매개변수 값을ABAP_TRUE
로 설정합니다.
임베딩을 사용하여 검색
임베딩과 관련하여 벡터 색인을 쿼리하려면 /GOOG/CL_VECTOR_SEARCH
클래스의 FIND_NEIGHBORS_BY_EMBEDDING
메서드를 사용하면 됩니다.
DATA(lo_response) = lo_vector_search->find_neighbors_by_embeddings(
iv_neighbor_count = 'NEIGHBOR_COUNT'
iv_return_full_datapoint = 'RETURN_FULL_DATAPOINT'
it_embeddings = 'EMBEDDINGS' ).
다음을 바꿉니다.
NEIGHBOR_COUNT
: 쿼리에 대해 검색할 최근접 이웃 수입니다.RETURN_FULL_DATAPOINT
: 검색된 데이터 포인트에 대한 벡터 임베딩을 반환하려면 이 매개변수 값을ABAP_TRUE
로 설정합니다.EMBEDDINGS
: 입력 임베딩입니다.
검색 응답 가져오기
모델에서 처리된 응답을 수신하고 의미 있는 방식으로 표시하기 위해 SDK는 ABAP 클래스 /GOOG/CL_VECTORSEARCH_RESPONSE
를 제공합니다.
/GOOG/CL_VECTORSEARCH_RESPONSE
클래스에서 캡처한 응답은 /GOOG/CL_VECTOR_SEARCH
클래스의 메서드를 통해 이루어진 요청에 연결되므로 중간 결과를 저장하는 변수가 필요하지 않고 단일 문으로 응답에 직접 액세스할 수 있습니다.
검색어의 최근접 이웃 가져오기
데이터 포인트, 검색 문자열 또는 임베딩과 관련하여 실행된 검색어에 대해 발견된 최근접 이웃을 확인하려면 /GOOG/CL_VECTORSEARCH_RESPONSE
클래스의 GET_NEAREST_NEIGHBOR
및 GET_NEAREST_NEIGHBORS
메서드를 사용하면 됩니다.
이러한 메서드는 검색어를 실행한 후 /GOOG/CL_VECTOR_SEARCH
클래스의 FIND_NEIGHBORS_BY_STRING
, FIND_NEIGHBORS_BY_EMBEDDING
, FIND_NEIGHBORS_BY_ENTITY_ID
메서드를 사용하여 연쇄적으로 호출할 수 있습니다.
검색된 데이터 포인트, 문자열 또는 임베딩에 가장 가까운 최근접 이웃을 가져오려면
GET_NEAREST_NEIGHBOR
메서드를 호출합니다. 이 메서드의 응답에는 가장 근접한 데이터 포인트의 ID, 검색어와의 거리, 색인에 연결된 특성 벡터가 나열됩니다.다음 코드 샘플은 검색 문자열의 최근접 이웃을 가져오는 방법을 보여줍니다.
DATA(ls_nearest_neighbor) = lo_vector_search->find_neighbors_by_string( iv_search_string = 'SEARCH_STRING' iv_embeddings_model_key = 'MODEL_KEY' iv_neighbor_count = 'NEIGHBOR_COUNT' iv_return_full_datapoint = 'RETURN_FULL_DATAPOINT' )->get_nearest_neighbor( ).
다음을 바꿉니다.
SEARCH_STRING
: 검색 문자열을 입력합니다.MODEL_KEY
: 임베딩을 생성하기 위한 모델 키로, 모델 생성 매개변수에서 구성됩니다.NEIGHBOR_COUNT
: 쿼리에 대해 검색할 최근접 이웃 수입니다.RETURN_FULL_DATAPOINT
: 검색된 데이터 포인트에 대한 벡터 임베딩을 반환하려면 이 매개변수 값을ABAP_TRUE
로 설정합니다.
검색된 데이터 포인트, 문자열 또는 임베딩에 가장 가까운 최근접 이웃 집합을 가져오려면
GET_NEAREST_NEIGHBORS
메서드를 호출합니다. 이 메서드의 응답은 가장 가까운 데이터 포인트의 표로, 데이터 포인트 ID, 검색어로부터의 거리, 그리고 색인에서 관련된 특성 벡터를 나열합니다.다음 코드 샘플은 검색 문자열의 최근접 이웃을 가져오는 방법을 보여줍니다.
DATA(lt_nearest_neighbors) = lo_vector_search->find_neighbors_by_string( iv_search_string = 'SEARCH_STRING' iv_embeddings_model_key = 'MODEL_KEY' iv_neighbor_count = 'NEIGHBOR_COUNT' iv_return_full_datapoint = 'RETURN_FULL_DATAPOINT' )->get_nearest_neighbors( ).
다음을 바꿉니다.
SEARCH_STRING
: 검색 문자열을 입력합니다.MODEL_KEY
: 임베딩을 생성하기 위한 모델 키로, 모델 생성 매개변수에서 구성됩니다.NEIGHBOR_COUNT
: 쿼리에 대해 검색할 최근접 이웃 수입니다.RETURN_FULL_DATAPOINT
: 검색된 데이터 포인트에 대한 벡터 임베딩을 반환하려면 이 매개변수 값을ABAP_TRUE
로 설정합니다.
가져온 이웃의 거리 가져오기
검색어에서 가져온 응답의 거리를 확인하려면 /GOOG/CL_VECTORSEARCH_RESPONSE
클래스의 GET_DATAPOINT_DISTANCE
메서드를 사용하면 됩니다.
검색 응답에서 거리는 쿼리(문자열, 임베딩 또는 항목 ID)와 검색된 결과 벡터 간의 비유사성 측정값을 나타냅니다. 거리의 구체적인 의미는 색인을 만들 때 사용하는 '거리 측정'에 따라 다릅니다.
거리 값은 각 검색 결과가 쿼리와 얼마나 관련성이 있는지 파악하는 데 도움이 됩니다. 거리가 짧은 결과는 일반적으로 더 유사하거나 관련성이 높은 것으로 간주되며, 거리가 긴 결과는 유사성이나 관련성이 낮은 것으로 간주됩니다.
다음 코드 샘플은 검색 문자열의 최근접 이웃의 거리를 가져오는 방법을 보여줍니다.
DATA(lo_vectorsearch_response) = lo_vector_search->find_neighbors_by_string(
iv_search_string = 'SEARCH_STRING'
iv_embeddings_model_key = 'MODEL_KEY'
iv_neighbor_count = 'NEIGHBOR_COUNT'
iv_return_full_datapoint = 'RETURN_FULL_DATAPOINT' ).
DATA(ls_nearest_neighbor) = lo_vectorsearch_response->get_nearest_neighbor( ).
DATA(lv_distance) = lo_vectorsearch_response->get_datapoint_distance( iv_datapoint_id = ls_nearest_neighbor-datapoint_id ).
다음을 바꿉니다.
SEARCH_STRING
: 검색 문자열을 입력합니다.MODEL_KEY
: 임베딩을 생성하기 위한 모델 키로, 모델 생성 매개변수에서 구성됩니다.NEIGHBOR_COUNT
: 쿼리에 대해 검색할 최근접 이웃 수입니다.RETURN_FULL_DATAPOINT
: 검색된 데이터 포인트에 대한 벡터 임베딩을 반환하려면 이 매개변수 값을ABAP_TRUE
로 설정합니다.
가져온 이웃의 임베딩 벡터 가져오기
검색어에서 가져온 응답의 임베딩 벡터를 확인하려면 /GOOG/CL_VECTORSEARCH_RESPONSE
클래스의 GET_DATAPOINT_FEATURE_VECTOR
메서드를 사용하면 됩니다.
임베딩 벡터를 가져오려면 FIND_NEIGHBORS_BY_STRING
, FIND_NEIGHBORS_BY_EMBEDDING
, FIND_NEIGHBORS_BY_ENTITY_ID
메서드의 IV_RETURN_FULL_DATAPOINT
매개변수를 ABAP_TRUE
로 설정해야 합니다.
다음 코드 샘플은 검색 문자열의 최근접 이웃의 특성 벡터를 가져오는 방법을 보여줍니다.
DATA(lo_vectorsearch_response) = lo_vector_search->find_neighbors_by_string(
iv_search_string = 'SEARCH_STRING'
iv_embeddings_model_key = 'MODEL_KEY'
iv_neighbor_count = 'NEIGHBOR_COUNT'
iv_return_full_datapoint = 'RETURN_FULL_DATAPOINT' ).
DATA(ls_nearest_neighbor) = lo_vectorsearch_response->get_nearest_neighbor( ).
DATA(lt_feature_vector) = lo_vectorsearch_response->get_datapoint_feature_vector( iv_datapoint_id = ls_nearest_neighbor-datapoint_id ).
다음을 바꿉니다.
SEARCH_STRING
: 검색 문자열을 입력합니다.MODEL_KEY
: 임베딩을 생성하기 위한 모델 키로, 모델 생성 매개변수에서 구성됩니다.NEIGHBOR_COUNT
: 쿼리에 대해 검색할 최근접 이웃 수입니다.RETURN_FULL_DATAPOINT
: 검색된 데이터 포인트에 대한 벡터 임베딩을 반환하려면 이 매개변수 값을ABAP_TRUE
로 설정합니다.
다음 단계
벡터 검색 용어에 대해 알아보세요.
ABAP SDK for Google Cloud의 온프레미스 또는 모든 클라우드 버전으로 애플리케이션 개발을 알아보세요.
Cloud 포럼의 커뮤니티에서 ABAP용 Vertex AI SDK에 대해 질문하고 논의하세요.