AWS 기술 블로그
Amazon Bedrock Knowledge Bases의 Structured Data Retrieval로 이제 자연어로 구조화된 데이터를 쉽게 조회하세요!
생성형 AI 기술의 발전은 기업들에게 혁신적인 기회를 제공해왔습니다. 특히 Amazon Bedrock의 Knowledge Base는 기업의 비정형 데이터를 활용하여 맥락에 맞는 정확한 응답을 생성하는 데 큰 역할을 해왔습니다. 그러나 기업 환경에서는 비정형 데이터 못지않게 구조화된 데이터의 중요성이 매우 큽니다. 특히 재무 보고서, 판매 실적, 재고 현황 등 100% 정확성이 요구되는 정보를 조회할 때는 기존의 생성형 AI 모델만으로는 신뢰할 만한 결과를 얻기 어려웠습니다. 이러한 한계는 AI 기술의 기업 내 폭넓은 적용을 저해하는 주요 요인이었습니다. 기업들은 AI의 혁신적인 잠재력을 인식하면서도, 중요한 의사결정에 필요한 정확한 데이터를 AI 시스템을 통해 얻지 못하는 상황에 직면해 있었습니다,
이러한 배경에서 Amazon Bedrock Knowledge Base의 Structured Data Retrieval 기능은 생성형 AI의 유연성과 자연어 처리 능력을 구조화된 데이터의 정확성과 결합함으로써, 기업의 데이터 활용 방식을 혁신적으로 변화시키고 AI 시스템의 활용 범위를 크게 확장시킬 수 있는 잠재력을 가지고 있습니다. 지금부터 이 기능의 핵심적인 장점들을 자세히 살펴보겠습니다.
주요 특징
완전 관리형 워크플로우
Amazon Bedrock Knowledge Bases는 완전 관리형 워크플로우를 제공합니다. 이는 단순히 기술적인 편의성을 넘어서는 중요한 의미를 갖습니다. 첫째, 구조화된 데이터와 비구조화된 데이터 소스로부터 컨텍스트 정보를 원활하게 통합할 수 있습니다. 이는 기업이 보유한 모든 유형의 데이터를 하나의 시스템에서 효과적으로 활용할 수 있게 해줍니다. 예를 들어, 고객 서비스 담당자가 고객의 구매 이력(구조화된 데이터)과 이전 상담 내용(비구조화된 데이터)을 동시에 참조하며 맞춤형 서비스를 제공할 수 있게 됩니다. 둘째, 데이터를 이동하거나 전처리할 필요 없이 소스에서 직접 데이터를 검색할 수 있습니다. 이는 데이터의 최신성과 일관성을 보장하며, 동시에 데이터 거버넌스와 보안 측면에서도 큰 이점을 제공합니다. 데이터가 원본 위치에서 벗어나지 않기 때문에, 데이터 유출 위험을 최소화하고 규제 준수를 용이하게 합니다.
이러한 완전 관리형 워크플로우는 기업의 IT 부서의 부담을 크게 줄여줍니다. 복잡한 데이터 파이프라인을 구축하고 관리할 필요 없이, 비즈니스 사용자들이 필요한 정보에 신속하게 접근할 수 있게 되어 의사결정 과정이 크게 가속화됩니다.
지원되는 데이터 소스
이제 Amazon Bedrock Knowledge Bases는 Amazon Redshift와 AWS Glue Data Catalog (AWS Lake Formation)의 두 가지 주요 데이터 소스를 지원합니다.
Amazon Redshift는 AWS의 완전 관리형 데이터 웨어하우스 서비스로, 대규모 분석 쿼리를 효율적으로 처리할 수 있습니다. Redshift와의 통합은 기업이 이미 구축해 놓은 데이터 인프라를 그대로 활용하면서 AI 기능을 덧붙일 수 있게 해줍니다. 예를 들어, 판매 부서에서는 복잡한 SQL 쿼리를 작성할 필요 없이 자연어로 “지난 분기 대비 이번 분기의 지역별 매출 증가율은 얼마인가요?”와 같은 질문을 할 수 있게 됩니다. 특히 Redshift Serverless는 가변적인 워크로드에 대해 자동으로 용량을 조정하여 최적의 성능을 보장하면서도 비용을 효율적으로 관리할 수 있으며 쉽고 빠르게 Redshift 를 구성할 수 있습니다.
AWS Glue Data Catalog와의 통합은 더욱 광범위한 데이터 소스에 대한 접근을 가능하게 합니다. AWS Lake Formation을 통해 구축된 데이터 레이크의 메타데이터를 활용함으로써, 다양한 형식과 크기의 데이터를 통합적으로 분석할 수 있게 됩니다.
작동 방식: 자연어에서 데이터까지의 지능형 여정
Amazon Bedrock Knowledge Bases의 Structured Data Retrieval 기능은 복잡한 내부 프로세스를 통해 사용자의 자연어 질문을 정확한 데이터 응답으로 변환합니다. 이 과정은 다음과 같은 정교한 단계들로 이루어집니다:
지능형 쿼리 패턴 분석
시스템은 먼저 사용자의 질문을 심층적으로 분석합니다.
- 데이터베이스 스키마 정보를 활용하여 질문의 의도를 파악
- 이전 쿼리 히스토리를 참고하여 컨텍스트 이해를 향상
- 테이블과 컬럼에 대한 메타데이터를 분석하여 관련 데이터 소스 식별
고급 자연어 처리 단계
다음으로, 시스템은 최신 자연어 처리 기술을 활용하여
- 사용자의 자연어 질문을 구조화된 형태로 분해
- 비즈니스 로직과 데이터 모델을 고려하여 SQL 문법 구조 생성
- 데이터베이스 특화된 문법과 함수들을 적절히 적용
정확한 데이터 검색 및 처리
마지막 단계에서는
- 생성된 SQL 쿼리의 정확성과 효율성을 검증
- 데이터베이스에서 안전하게 쿼리를 실행
- 필요한 경우 결과를 자연어 형태로 가공하여 사용자가 이해하기 쉽게 변환
이러한 복잡한 프로세스는 완전 관리형 서비스로 제공되어, 개발자들은 복잡한 구현 없이도 자연어 기반의 데이터 검색 기능을 애플리케이션에 통합할 수 있습니다. 특히 비즈니스 분석가나 데이터 사이언티스트들이 SQL을 직접 작성하지 않고도 복잡한 데이터 분석을 수행할 수 있게 되었습니다
설정
Amazon Bedrock Knowledge Bases의 Structured Data Retrieval 기능을 설정하는 과정은 크게 세 단계로 나눌 수 있습니다: Knowledge Base 생성, 데이터 소스 구성, 그리고 데이터 동기화입니다. 다음은 Amazon Bedrock Knowledge Base 에서 AWS Glue Data Catalog와의 통합을 이용하여 S3에 있는 구조화된 데이터를 Redshift Serverless를 이용하는 방법을 순서대로 설명합니다.
Step 1 : 데이터 준비
구조화된 데이터는 Kaggle에 공개된 Boston House Prices의 .csv 파일 형태의 데이터를 이용합니다. 데이터를 다운로드 받고 열어보면 스페이스로 구분되어 있으며 컬럼명이 비워져 있습니다. 데이터에 대한 설명 문서에 컬럼명을 참조하여 첫 줄에 컬럼명을 채워준 후 구분자를 콤마(,)로 변경하여 저장합니다.
이 데이터를 S3 버킷에 업로드한 뒤, AWS Glue 를 통해 Data Catalog를 생성합니다. 이 작업은 대략적으로 다음과 같은 순서로 진행됩니다.
- AWS Glue 내 DB 생성 또는 기존 DB 활용
- Crawler 를 생성하고 S3 버킷을 지정 후 스키마 탐색을 위해 Crawler 실행. 성공적으로 수행되면 Completed 확인.
- 크롤링 된 결과 확인 (DB내 생성된 테이블에 칼럼 명 및 데이터 포맷이 적절한지 확인)
Step 2 : Knowledge Base 생성
- 콘솔에서 Amazon Bedrock를 선택하고 Knowledge Base를 생성합니다.
- 이 때 이름과 설명을 입력하고, IAM 서비스 역할을 선택하거나 새로 생성해야 합니다. 이 역할은 Knowledge Base가 필요한 AWS 리소스에 접근할 수 있는 권한을 부여합니다. 데이터 소스 유형으로는 ‘STRUCTURED’를 선택하고, 쿼리 엔진으로 Amazon Redshift를 지정합니다.
쿼리 엔진 구성
다음으로 쿼리 엔진을 구성합니다. Redshift의 Serverless를 이용하기로 합니다. Redshift의 Workgroup을 지정해야하는데, 이 부분은 여기를 참고해서 진행해주세요. 구성한 Workgroup을 선택하고, Step1에서 생성한 IAM Role을 그대로 쓰기로 합니다. Default Storage Metadata는 AWS Glue에서 지정한 DB와 테이블의 정보를 넣습니다. 여기서는 test_db.* 로 지정하였습니다.
Redshift 에 클러스터 또는 Serverless의 최초 구성은 이 문서를 참고하여 진행해주세요.
쿼리 엔진 정보를 모두 지정하였다면 마지막으로 설정을 리뷰하고, ‘Create Knowledge Base’ 버튼을 클릭합니다.
Knowledge Base가 성공적으로 구성되었으나, 아직 Redshift에서 Amazon Bedrock의 Knowledge Base의 서비스 Role이 쿼리를 수행할 수 있는 권한을 부여하는 작업이 남았습니다.
권한 부여
Redshift Serverless 를 이용해서 쿼리를 실행하기 위해서 Redshift의 Query Editor를 실행하여 권한과 관련된 쿼리를 이 문서를 참고하여 수행합니다.
Amazon Bedrock Knowledge Base 서비스 Role에 정책 추가
Redshift Serverless를 이용하면서 AWS Glue Data Catalog에 데이터가 저장되어 있으므로 다음과 같이 서비스 Role이 Data Catalog를 조회할 수 있도록 권한을 추가해줍니다. ${Region}, ${Account}, ${DatabaseName}, ${TableName}, ${BucketName}은 각자의 설정에 맞게 넣어주세요. 이 블로그에 실습에서는 다음과 같이 매핑하였습니다.
- ${Region} : ap-northeast-2
- ${Account} : 123456789123
- ${DatabaseName} : test_db
- ${TableName} : test_amazon_bedrock_structured_data_retrieval
- ${BucketName} : test-amazon-bedrock-structured-data-retrieval
데이터 동기화
마지막으로 데이터 동기화 단계에서는 Query Engine을 선택하고 ‘Sync’ 버튼을 눌러 Knowledge Base가 데이터베이스의 메타데이터를 수집하고 동기화합니다.
이 과정을 통해 시스템은 사용자의 자연어 쿼리를 적절한 SQL 쿼리로 변환할 수 있게 됩니다. 데이터베이스 스키마가 변경되면 이 동기화 과정을 다시 수행해야 합니다.
테스트
이제 데이터 조회에 대한 테스트를 진행해보겠습니다. Test 버튼을 누르면 쿼리를 만들고 수행할 FM(Foundation Model)을 고릅니다. Anthropic의 Claude 3.5 Sonnet 모델을 선택하여 자연어로 질문을 실행해보겠습니다.
축하합니다! 성공적으로 Amazon Bedrock Knowledge Base에서 구조화된 데이터를 조회할 수 있게 되었습니다.
이제 이 Knowledge Base를 이용하여 Agents for Amazon Bedrock 의 API(retrieve_and_generate, API 문서 참고)를 이용하여 여러분의 어플리케이션에서 활용해보시기 바랍니다.
마치며
이번 Amazon Bedrock Knowledge Bases의 Structured Data Retrieval 기능은 기업들이 생성형 AI의 강력한 기능을 자사의 데이터와 쉽게 결합할 수 있도록 도와줍니다. 복잡한 데이터베이스 스키마나 SQL 쿼리 작성 없이도, 자연어만으로 데이터 기반의 인사이트를 얻을 수 있게 되었습니다.