이 문서에서는 ABAP용 Vertex AI SDK를 사용하여 Vertex AI 벡터 검색으로 지능형 SAP 애플리케이션을 빌드하기 위한 참조 아키텍처를 설명합니다. 벡터 검색을 사용하면 시맨틱 이해를 통해 사용자가 엔터프라이즈 데이터에서 필요한 정보를 정확하게 찾을 수 있도록 지원하여 키워드 검색을 넘어서는 SAP 애플리케이션을 빌드할 수 있습니다. 검색 증강 생성 (RAG)과 함께 벡터 검색을 사용하여 SAP 환경에서 강력한 AI 애플리케이션을 빌드할 수도 있습니다. RAG는 엔터프라이즈 데이터에서 관련 컨텍스트를 제공하여 AI 모델의 응답 품질을 개선하고 AI 모델이 엔터프라이즈 데이터에 기반하도록 합니다.
이 문서의 주요 대상에는 ABAP 개발자, SAP 솔루션 설계자, 클라우드 설계자가 포함됩니다. 이 문서에서는 사용자가 벡터 검색 용어에 익숙하다고 가정합니다.
아키텍처
다음 다이어그램은 SAP 애플리케이션 환경에서 벡터 검색을 사용하는 참조 아키텍처를 보여줍니다.
이 참조 아키텍처에는 다음 구성요소가 포함됩니다.
# | 구성요소 | 세부정보 |
---|---|---|
1 | SAP의 쿼리 시작점 | 다음 옵션 중 하나를 사용하여 검색을 시작합니다.
|
2 | ABAP용 Vertex AI SDK | SDK의 벡터 검색 호출자 모듈은 검색어를 기반으로 벡터 검색을 실행합니다. |
3 | Vertex AI 벡터 검색 | 엔터프라이즈 데이터는 벡터 임베딩으로 색인이 생성되고 배포된 색인 내에 구성됩니다. 검색어를 입력하면 색인 생성된 데이터에 벡터 검색을 실행하여 가장 근접한 일치를 찾습니다. 이러한 가장 근접한 일치 항목은 SAP 애플리케이션에 반환되어 시맨틱 검색 및 RAG와 같은 기능을 사용 설정합니다. |
사용 제품
이 참조 아키텍처에는 다음과 같은 Google Cloud 제품이 사용됩니다.
- ABAP용 Vertex AI SDK: ABAP에서 AI 중심 애플리케이션을 네이티브로 빌드하는 모듈과 도구 모음을 제공합니다.
- Vertex AI 벡터 검색: 벡터 임베딩을 사용하여 엔터프라이즈 데이터 전반에서 대규모의 효율적인 검색을 허용합니다. 즉, 키워드뿐만 아니라 의미와 맥락을 기준으로 검색할 수 있습니다.
사용 사례
다음 목록에는 SAP 애플리케이션에서 벡터 검색의 사용 사례가 나와 있습니다.
- 맞춤 콘텐츠 추천 엔진 구축: 사용자 입력과 행동을 분석하여 제품, 회사 코드, GL 계정과 같은 SAP 비즈니스 전반에서 관련 항목을 추천합니다. 단순한 키워드 검색을 넘어서게 됩니다.
- RAG 파이프라인 빌드: 다양한 소스의 정보에 액세스하고 통합하여 관련 SAP 및 비SAP 정보로 AI 모델의 컨텍스트를 보강하여 정확하고 관련성 높은 모델 응답을 생성합니다.
- 시맨틱 이미지 검색 실행: 시각적으로 유사한 이미지를 검색할 수 있습니다. 이는 쇼핑, 시각적 탐색, 의료 이미징 분석에 유용합니다.
- 시맨틱 텍스트 검색 실행: 텍스트의 의미와 맥락을 이해하여 법률, 학술, 고객 의견 분석의 검색 정확성을 개선합니다.
- 자연어 기반 검색 실행: 사용자 질문에 즉각적인 답변을 제공하여 FAQ, 기술 자료, 교육 도구를 개선합니다.
- 이상 감지 수행: 금융, 네트워크 보안, 제조에서 비정상적인 패턴과 잠재적 위협을 식별합니다.
설계 고려사항
이 섹션에서는 이 참조 아키텍처를 사용하여 보안, 개인 정보 보호, 규정 준수, 비용, 성능에 대한 특정 요구사항을 충족하는 아키텍처를 개발하는 데 도움이 되는 안내를 제공합니다.
보안, 개인정보 보호, 규정 준수
보안 및 규정 준수는 공동의 책임입니다. 자세한 내용은 Vertex AI 공동 책임을 참고하세요.
Google Cloud의 데이터 개인 정보 보호에 대한 약속에 대한 자세한 내용은 개인 정보 보호 리소스 센터를 참고하세요.
비용 최적화
비용을 절감하려면 색인에 더 작은 샤드 크기와 더 낮은 차원의 임베딩을 선택하는 것이 좋습니다. 그러면 색인을 배포하는 데 더 작은 컴퓨팅 머신을 사용할 수 있습니다.
Vertex AI는 Google Cloud의 유료 서비스입니다. 가격 책정에 대한 자세한 내용은 Vertex AI 가격 책정 및 벡터 검색 가격 책정을 참고하세요. 프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요.
성능 최적화
대규모 데이터 세트를 조회하는 지연 시간을 개선하려면 색인을 만들 때 더 큰 샤드 크기를 선택하고 색인을 배포할 때 고성능 컴퓨팅 머신을 선택하는 것이 좋습니다. 색인의 샤드 크기에 관한 자세한 내용은 색인 크기를 참고하세요.
검색 응답의 관련성을 높이려면 더 높은 차원에서 엔터프라이즈 데이터의 임베딩을 생성하세요. 컴퓨팅 머신 및 더 높은 임베딩 크기는 비용이 많이 듭니다. 프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요.
시작하기 전에
SAP 애플리케이션 환경에서 벡터 검색을 사용하기 전에 개발자 또는 관리자가 다음을 완료했는지 확인합니다.
- ABAP SDK for Google Cloud의 온프레미스 또는 클라우드 버전의 최신 버전을 설치했습니다.
- Google Cloud 프로젝트에서 Vertex AI API를 사용 설정합니다.
- Vertex AI API에 액세스하도록 인증을 설정합니다.
- 벡터 검색 매개변수를 구성했습니다.
벡터 색인 만들기 및 관리
벡터 검색을 사용하려면 엔터프라이즈 데이터를 색인화하고 벡터 임베딩 형식으로 배포해야 합니다. 이렇게 하려면 다음 단계를 따르세요.
- Vertex AI 또는 다른 플랫폼에서 텍스트 또는 멀티모달 임베딩 AI 모델을 사용하여 벡터 임베딩을 생성합니다.
- 임베딩을 Cloud Storage 버킷에 업로드합니다.
- 임베딩이 포함된 Cloud Storage 버킷으로 벡터 색인을 만듭니다.
- 색인 엔드포인트를 만들고 벡터 색인을 엔드포인트에 배포하여 색인이 생성된 엔터프라이즈 데이터에 시맨틱 검색을 실행합니다.
Google Cloud 콘솔에서 위의 단계를 실행하거나 ABAP용 Vertex AI SDK를 사용하여 SAP 환경에서 트리거할 수 있습니다.
엔터프라이즈 AI 솔루션에 가장 정확한 벡터 검색 결과를 얻으려면 색인을 최신 엔터프라이즈 데이터로 업데이트해야 합니다. 자세한 내용은 벡터 색인 업데이트 및 다시 빌드를 참고하세요.
SAP 애플리케이션에서 벡터 검색 호출
SAP 애플리케이션에서 ABAP용 Vertex AI SDK를 사용하여 다음과 같은 방법으로 색인이 생성된 엔터프라이즈 데이터에 대한 시맨틱 검색을 실행할 수 있습니다.
- 텍스트 프롬프트를 사용하여 검색: 검색 문자열을 사용하여 텍스트 및 멀티모달 데이터에 시맨틱 검색을 실행합니다.
- 멀티모달 프롬프트를 사용하여 검색: 이미지나 동영상과 같은 멀티모달 입력을 사용하여 멀티모달 데이터에 대한 시맨틱 검색을 실행합니다.
- 엔터프라이즈 엔티티 ID를 사용하여 검색: 제품 ID, 주문 ID, 고객 ID와 같은 엔터프라이즈별 ID를 사용하여 엔터프라이즈 데이터에 대한 시맨틱 검색을 실행합니다.
벡터 검색의 결과를 사용하여 RAG를 통해 AI 모델의 컨텍스트를 엔터프라이즈 컨텍스트로 개선할 수 있습니다. 이렇게 하면 모델 응답이 엔터프라이즈 데이터에 기반하게 됩니다. 이러한 결과를 비즈니스 프로세스의 입력으로 사용하거나 추천을 생성하는 데 사용할 수도 있습니다.
텍스트 프롬프트를 사용한 시맨틱 검색
텍스트 프롬프트를 사용하여 색인이 생성된 텍스트 및 멀티모달 데이터를 검색하려면 ABAP용 Vertex AI SDK의 /GOOG/CL_VECTOR_SEARCH
클래스의 FIND_NEIGHBORS_BY_STRING
메서드를 사용하면 됩니다. GET_NEAREST_NEIGHBORS
메서드 호출을 FIND_NEIGHBORS_BY_STRING
메서드 호출과 연결하여 검색 응답을 가져올 수 있습니다.
다음 코드 샘플은 텍스트 프롬프트를 사용하여 의미 검색을 실행하는 방법을 보여줍니다.
TRY.
DATA(lo_vector_search) = NEW /goog/cl_vector_search( iv_search_key = 'SEARCH_KEY' ).
DATA(lt_vector_search_response) = lo_vector_search->find_neighbors_by_string(
iv_search_string = 'SEARCH_STRING'
iv_embeddings_model_key = 'MODEL_KEY'
iv_neighbor_count = NEIGHBOR_COUNT
)->get_nearest_neighbors( ).
cl_demo_output=>display( lt_vector_search_response ).
CATCH /goog/cx_sdk INTO DATA(lo_cx_sdk).
cl_demo_output=>display( 'Search not successful.' && lo_cx_sdk->get_text( ) ).
ENDTRY.
다음을 바꿉니다.
SEARCH_KEY
: 벡터 검색 매개변수에 구성된 검색 키입니다.SEARCH_STRING
: 입력 텍스트 프롬프트입니다.MODEL_KEY
: 모델 생성 파라미터에 구성된 모델 키입니다. 이 모델은 검색어를 임베딩으로 변환하는 데 사용됩니다.NEIGHBOR_COUNT
: 검색 쿼리로 검색할 최근접 이웃 수입니다.
샘플 엔터프라이즈 텍스트 및 다중 모달 데이터에서 텍스트 기반 검색의 예를 보려면 텍스트 프롬프트를 사용한 텍스트 데이터 세트의 시맨틱 검색 및 텍스트 프롬프트를 사용한 이미지의 시맨틱 검색에 관한 GitHub 코드 샘플을 참고하세요.
멀티모달 프롬프트를 사용한 시맨틱 검색
이 유형의 검색은 이미지 또는 동영상과 같은 다중 모드 데이터에서 가장 근접한 일치를 찾을 때 유용합니다. 예를 들어 SAP 웹 애플리케이션 (Fiori
또는 UI5
)이 있고 의류, 제품 또는 장비 부품의 사진을 찍은 후 사진과 가장 일치하는 항목을 찾으려면 이 검색 옵션을 선택하면 됩니다.
멀티모달 프롬프트를 사용하여 색인이 생성된 멀티모달 데이터를 검색하려면 ABAP용 Vertex AI SDK의 /GOOG/CL_VECTOR_SEARCH
클래스의 FIND_NEIGHBORS_BY_EMBEDDING
메서드를 사용하면 됩니다. GET_NEAREST_NEIGHBORS
메서드 호출을 FIND_NEIGHBORS_BY_EMBEDDING
메서드 호출과 연결하여 검색 응답을 가져올 수 있습니다.
다음 코드 샘플은 이미지를 사용하여 시맨틱 검색을 실행하는 방법을 보여줍니다.
DATA lv_search_string TYPE string,
DATA ls_image TYPE /goog/cl_embeddings_model=>ty_image.
TRY.
DATA(lo_vector_search) = NEW /goog/cl_vector_search( iv_search_key = 'SEARCH_KEY' ).
DATA(lo_embeddings_model) = NEW /goog/cl_embeddings_model( iv_model_key = 'MODEL_KEY' ).
ls_image-bytes_base64_encoded = 'RAW_DATA'.
DATA(lt_embeddings) = lo_embeddings_model->gen_image_embeddings( iv_image = ls_image
iv_dimension = 'DIMENSION'
)->get_vector( ).
DATA(lt_vector_search_response) = lo_vector_search->find_neighbors_by_embedding(
iv_neighbor_count = NEIGHBOR_COUNT
it_embeddings = lt_embeddings
)->get_nearest_neighbors( ).
cl_demo_output=>display( lt_vector_search_response ).
CATCH /goog/cx_sdk INTO DATA(lo_cx_sdk).
cl_demo_output=>display( 'Search not successful.' && lo_cx_sdk->get_text( ) ).
ENDTRY.
다음을 바꿉니다.
SEARCH_KEY
: 벡터 검색 매개변수에 구성된 검색 키입니다.MODEL_KEY
: 모델 생성 파라미터에 구성된 모델 키입니다. 이 모델은 검색어를 임베딩으로 변환하는 데 사용됩니다.RAW_DATA
: 쿼리에 인라인을 포함할 이미지, PDF 또는 동영상의 base64로 인코딩된 원시 데이터입니다.DIMENSION
: 출력 임베딩의 차원 수입니다.NEIGHBOR_COUNT
: 검색 쿼리로 검색할 최근접 이웃 수입니다.
샘플 엔터프라이즈 데이터에서 이미지 기반 검색의 예를 보려면 GitHub 코드 샘플을 참고하세요.
엔터프라이즈 항목 ID를 사용한 시맨틱 검색
이 유형의 검색은 특정 항목 ID의 유사한 기업 항목을 조회하려는 SAP 사용 사례에 유용할 수 있습니다. 예를 들어 특정 제품의 재고가 없는 경우 유사한 제품을 찾거나 추천하는 경우입니다. 항목 ID는 벡터 색인에 저장된 데이터 포인트에 해당합니다.
엔터프라이즈 항목 ID를 사용하여 벡터 색인을 검색하려면 ABAP용 Vertex AI SDK의 /GOOG/CL_VECTOR_SEARCH
클래스의 FIND_NEIGHBORS_BY_ENTITY_ID
메서드를 사용하면 됩니다. GET_NEAREST_NEIGHBORS
메서드 호출을 FIND_NEIGHBORS_BY_ENTITY_ID
메서드 호출과 연결하여 검색 응답을 가져올 수 있습니다.
다음 코드 샘플은 엔터프라이즈 항목 ID를 사용하여 의미 검색을 실행하는 방법을 보여줍니다.
Below is a code snippet that can be taken as reference for an entity id search.
TRY.
DATA(lo_vector_search) = NEW /goog/cl_vector_search( iv_search_key = 'SEARCH_KEY' ).
DATA(lt_vector_search_response) = lo_vector_search->find_neighbors_by_entity_id(
iv_entity_id = 'ENTITY_ID'
)->get_nearest_neighbors( ).
cl_demo_output=>display( lt_vector_search_response ).
CATCH /goog/cx_sdk INTO DATA(lo_cx_sdk).
cl_demo_output=>display( 'Search not successful.' && lo_cx_sdk->get_text( ) ).
ENDTRY.
다음을 바꿉니다.
SEARCH_KEY
: 벡터 검색 매개변수에 구성된 검색 키입니다.ENTITY_ID
: 검색할 항목 ID입니다.
샘플 엔터프라이즈 데이터에서 항목 ID를 사용하여 검색하는 예를 보려면 GitHub 코드 샘플을 참고하세요.
RAG와 함께 벡터 검색을 사용하여 AI 모델에 추가 컨텍스트 제공
벡터 검색은 검색어를 기반으로 가장 관련성 높은 엔터프라이즈 데이터를 답변으로 가져옵니다. RAG를 사용하여 벡터 검색의 검색 응답을 AI 모델에 제공하여 추가 컨텍스트를 제공할 수 있습니다. RAG는 검색된 엔터프라이즈 데이터에서 관련 컨텍스트를 제공하여 AI 모델의 응답 품질을 개선하고 모델 응답이 엔터프라이즈 데이터에 기반하도록 합니다.
RAG와 함께 벡터 검색을 사용하여 AI 모델에 추가 컨텍스트를 제공하려면 다음 단계를 따르세요.
- 엔터프라이즈 컨텍스트를 가져오기 위한 검색어를 준비합니다.
- 엔터프라이즈 데이터가 있는 색인에서 벡터 검색을 실행합니다.
- 효율적인 프롬프트 권장사항에 따라 검색 응답을 최종 프롬프트에 연결하거나 보강합니다.
RAG 기반 아키텍처에 대해 AI 모델에서 가장 관련성 높은 응답을 얻으려면 최신 엔터프라이즈 데이터의 임베딩으로 색인을 업데이트하세요. 자세한 내용은 벡터 색인 업데이트 및 다시 빌드를 참고하세요.
샘플 데이터 세트를 사용하여 엔터프라이즈 사용 사례를 실험하려면 GitHub에서 SAP의 임베딩을 기반으로 하는 벡터 검색 샘플 솔루션을 사용해 보세요. 이 샘플 솔루션은 ABAP의 제품 추천 엔진을 보여주며 필요한 구성 및 구현 세부정보에 관한 안내를 제공합니다. 샘플 코드와 참조를 SAP 애플리케이션에서 직접 시맨틱 검색을 실행할 수 있는 다른 추천 시스템의 기반으로 사용할 수 있습니다.
다음 단계
- 각 검색 결과가 검색어와 얼마나 관련성이 있는지 확인하려면 가져온 이웃의 거리 가져오기를 참고하세요.
- ABAP용 Vertex AI SDK에서 벡터 검색을 사용하는 방법은 Vertex AI 벡터 검색 사용을 참고하세요.
ABAP SDK for Google Cloud 문제를 해결하는 데 도움이 필요한 경우 다음을 수행하세요.
- ABAP SDK for Google Cloud 문제 해결 가이드를 참고하세요.
- Cloud 포럼에서 커뮤니티에 질문하고 ABAP SDK for Google Cloud에 대해 논의하세요.
- 사용 가능한 모든 진단 정보를 수집하고 Cloud Customer Care에 문의합니다. 고객 관리에 문의하는 방법에 대한 자세한 내용은 Google Cloud 기반 SAP 지원 받기를 참고하세요.
참여자
저자: 디베시 싱 | SAP 애플리케이션 엔지니어
기타 참여자: Vikash Kumar | 기술 문서 작성자