Amazon Web Services 한국 블로그
Amazon Bedrock 지식 기반 미리보기 – 파운데이션 모델을 위한 에이전트 기반 기업 데이터 소스 연결 기능
지난 7월에 AWS는 개발자가 작업을 수행하는 생성형 AI 애플리케이션을 만들 수 있는 새로운 기능인 Amazon Bedrock 에이전트 미리 보기를 발표했습니다. 오늘 에이전트를 사용하여 파운데이션 모델(FM)을 회사 데이터 소스에 안전하게 연결할 수 있는 새로운 기능을 소개하게 되어 기쁩니다.
새로운 지식 기반(Knowledge base) 기능과 함께 에이전트를 사용하면, FM을 지속적으로 재훈련하지 않고도 모델이 보다 연관성 높고 상황에 맞는 정확한 응답을 생성하는 데 유용한 추가 데이터에 대한 액세스를 Bedrock의 FM에 제공할 수 있습니다. 에이전트는 사용자 입력을 기반으로 적절한 지식 기반을 식별하고, 관련 정보를 검색하고, 입력 프롬프트에 정보를 추가하여 모델에 더 많은 컨텍스트 정보를 제공함으로써 완성된 정보를 생성합니다.
Amazon Bedrock 에이전트는 이를 달성하기 위해 검색 증강 생성(Retrieval-Augmented Generation, RAG)이라는 개념을 사용합니다. 지식 기반을 생성하려면 데이터의 Amazon Simple Storage Service(S3) 위치를 지정하고, 임베딩 모델을 선택하며, 벡터 데이터베이스의 세부 정보를 제공합니다. Bedrock은 데이터를 임베딩으로 변환하고, 임베딩을 벡터 데이터베이스에 저장합니다. 그런 다음 에이전트에 지식 기반을 추가하여 RAG 워크플로를 활성화할 수 있습니다.
벡터 데이터베이스의 경우 Amazon OpenSearch Serverless 벡터 엔진, Pinecone 및 Redis Enterprise Cloud 중에서 선택할 수 있습니다. 벡터 데이터베이스를 설정하는 방법에 대한 자세한 내용은 이 게시물의 뒷부분에서 설명하겠습니다.
검색 증강 생성, 임베딩, 벡터 데이터베이스에 대한 기본 정보
RAG는 특정 기술 세트가 아니라, 훈련 중에 사용되지 않은 데이터에 대한 FM 액세스를 제공하기 위한 개념입니다. RAG를 사용하면 모델을 지속적으로 재훈련하지 않고도 회사별 데이터를 포함한 추가 정보로 FM을 보강할 수 있습니다.
모델을 지속적으로 재훈련하는 작업은 컴퓨팅 집약적이고 비용이 많이 들 뿐만 아니라, 모델을 재훈련하자마자 회사에는 이미 새 데이터가 생성되어 있고 모델의 정보는 더 이상 최신 정보가 아니게 될 수 있습니다. RAG는 런타임에 추가 외부 데이터에 대한 모델 액세스를 제공하여 이 문제를 해결합니다. 그런 다음 완성된 정보의 연관성과 정확성을 모두 개선하는 데 도움이 되는 관련 데이터가 프롬프트에 추가됩니다.
이 데이터는 문서 스토어나 데이터베이스와 같은 다양한 데이터 소스에서 가져올 수 있습니다. 문서 검색의 일반적인 구현 방식은 다음 그림과 같이 임베딩 모델을 사용하여 문서 또는 문서 청크를 벡터 임베딩으로 변환한 후, 벡터 임베딩을 벡터 데이터베이스에 저장하는 것입니다.
벡터 임베딩에는 문서 내 텍스트 데이터의 숫자 표현이 포함됩니다. 각 임베딩은 데이터의 의미론적 또는 문맥상 의미를 캡처하는 것을 목표로 합니다. 각 벡터 임베딩은 벡터 데이터베이스에 저장되며, 임베딩이 생성된 원본 콘텐츠에 대한 참조와 같은 추가 메타데이터가 포함되는 경우가 많습니다. 그런 다음 벡터 데이터베이스는 벡터를 인덱싱하는데, 벡터는 다양한 방식을 사용하여 인덱싱할 수 있습니다. 이 인덱싱은 관련 데이터를 빠르게 검색할 수 있도록 합니다.
기존 키워드 검색과 비교할 때, 벡터 검색은 정확히 일치하는 키워드를 입력하지 않고도 관련 결과를 찾을 수 있다는 이점이 있습니다. 예를 들어 ‘제품 X의 원가는 얼마입니까?’라고 검색하는 경우 문서에 ‘제품 X의 가격은 […]입니다’라고 명시되어 있다면, ‘가격’과 ‘원가’는 서로 다른 단어이므로 키워드 검색이 작동하지 않을 수 있습니다. 이 경우 벡터 검색을 사용하면 ‘가격’과 ‘원가’가 의미론적으로 유사하고 같은 의미로 사용되었으므로 정확한 결과가 반환됩니다. 벡터 유사성은 유클리드 거리, 코사인 유사성 또는 내적 유사성과 같은 거리 측정법을 사용하여 계산됩니다.
그러면 아래 그림과 같이 프롬프트 워크플로 내에서 벡터 데이터베이스를 사용하여 입력 쿼리를 기반으로 외부 정보가 효율적으로 검색됩니다.
워크플로는 사용자 입력 프롬프트로 시작됩니다. 동일한 임베딩 모델을 사용하여 입력 프롬프트의 벡터 임베딩 표현을 생성합니다. 그런 다음 이 임베딩을 사용하여 데이터베이스에 유사한 벡터 임베딩을 쿼리하면, 가장 연관성이 높은 텍스트가 쿼리 결과로 반환됩니다.
그리고 쿼리 결과가 프롬프트에 추가되고 증강 프롬프트가 FM으로 전달됩니다. 모델은 다음 그림과 같이 프롬프트의 추가 컨텍스트를 사용하여 완성된 정보를 생성합니다.
Amazon Bedrock 에이전트에 대한 블로그 게시물에서 설명한 완전관리형 에이전트 환경과 마찬가지로, Amazon Bedrock용 지식 기반은 데이터 모으기 워크플로를 관리하고 에이전트는 사용자를 대신하여 RAG 워크플로를 관리합니다.
Amazon Bedrock용 지식 기반 시작하기
Amazon S3와 같은 데이터 소스를 지정하여 지식 기반을 추가하고, 데이터를 벡터 임베딩으로 변환하는 Amazon Titan Embeddings 같은 임베딩 모델과 벡터 데이터를 저장할 대상 벡터 데이터베이스를 선택할 수 있습니다. Bedrock은 벡터 데이터베이스에서 임베딩을 생성, 저장, 관리 및 업데이트합니다.
에이전트에 지식 기반을 추가하면 에이전트는 아래 그림과 같이 사용자 입력에 따라 적절한 지식 기반을 식별하고, 관련 정보를 검색한 다음, 해당 정보를 입력 프롬프트에 추가함으로써 응답을 생성하는 데 필요한 추가 컨텍스트 정보를 모델에 제공합니다. 지식 기반에서 검색되는 모든 정보는 투명성을 높이고 할루시네이션을 최소화하기 위한 소스 속성과 함께 제공됩니다.
이러한 단계를 좀 더 자세히 설명해 드리겠습니다.
Amazon Bedrock용 지식 기반 생성
여러분이 세무 컨설팅 회사의 개발자이고, 사용자에게 미국 세금 신고 질문에 답할 수 있는 생성형 AI 애플리케이션(TaxBot)을 제공하고자 한다고 가정해보겠습니다. 먼저, 관련 세금 문서가 수록된 지식 기반을 생성합니다. 그런 다음 Bedrock에서 이 지식 기반에 액세스할 권한이 있는 에이전트를 구성하고, 이 에이전트를 TaxBot 애플리케이션에 통합합니다.
시작하려면 Bedrock 콘솔을 열고 왼쪽 탐색 창에서 Knowledge base(지식 기반)를 선택한 다음 Create knowledge base(지식 기반 생성)를 선택합니다.
1단계 – 지식 기반 세부 정보를 제공합니다. 지식 기반의 이름과 설명을 입력합니다(선택 사항). 또한 Amazon Bedrock에 대한 신뢰 정책, 지식 기반에 사용할 S3 버킷에 액세스할 권한, 벡터 데이터베이스에 대한 읽기/쓰기 권한이 있는 AWS Identity and Access Management(IAM) 런타임 역할을 선택해야 합니다. 필요에 따라 태그를 할당할 수도 있습니다.
2단계 – 데이터 소스를 설정합니다. 데이터 소스 이름을 입력하고 데이터의 Amazon S3 위치를 지정합니다. 지원되는 데이터 형식은 .txt, .md, .html, .doc and .docx, .csv, .xls and .xlsx, .pdf 파일 등입니다. 또한 Bedrock이 데이터를 임베딩으로 변환하는 동안 Bedrock이 데이터를 복호화하고 암호화하기 위한 AWS Key Management Service(AWS KMS) 키와 임시 데이터 저장을 위한 또 다른 AWS KMS 키를 제공할 수도 있습니다.
Amazon Titan Embeddings – Text와 같은 임베딩 모델과 벡터 데이터베이스를 선택합니다. 벡터 데이터베이스의 경우 앞서 언급한 것처럼 Amazon OpenSearch Serverless 벡터 엔진, Pinecone 또는 Redis Enterprise Cloud 중에서 선택할 수 있습니다.
벡터 데이터베이스에 대한 중요 참고 사항: Amazon Bedrock은 사용자를 대신하여 벡터 데이터베이스를 생성하지 않습니다. 따라서 지원되는 옵션 목록에서 비어 있는 새 벡터 데이터베이스를 생성하고, 벡터 데이터베이스 인덱스 이름과 인덱스 필드 및 메타데이터 필드 매핑을 제공해야 합니다. 이 벡터 데이터베이스는 Amazon Bedrock에만 전용으로 사용되어야 합니다.
Amazon OpenSearch Serverless 벡터 엔진 설정의 예를 보여 드리겠습니다. 개발자 안내서 및 이 AWS 빅 데이터 블로그 게시물에 설명된 대로 OpenSearch Serverless 컬렉션을 설정했다고 가정하여, OpenSearch Serverless 컬렉션의 ARN을 제공하고 벡터 인덱스 이름, 벡터 필드 및 메타데이터 필드 매핑을 지정합니다.
Pinecone과 Redis Enterprise Cloud의 구성은 비슷합니다. Bedrock용 벡터 데이터베이스를 설정하고 준비하는 방법에 대한 자세한 내용은 이 Pinecone 블로그 게시물과 Redis Inc. 블로그 게시물을 참조하세요.
3단계 – 검토 후 생성합니다. 지식 기반 구성을 검토하고 Create knowledge base(지식 기반 생성)를 선택합니다.
지식 기반 세부 정보 페이지로 돌아가서, 새로 생성된 데이터 소스에 대해 Sync(동기화)를 선택하고, 데이터 소스에 새 데이터를 추가할 때마다 Amazon S3 데이터를 벡터 임베딩으로 변환하고 임베딩을 벡터 데이터베이스에 삽입하는 통합 워크플로를 시작합니다. 데이터의 양에 따라 이 전체 워크플로를 실행하는 데 다소 시간이 걸릴 수 있습니다.
다음으로 에이전트 구성에 지식 기반을 추가하는 방법을 보여 드리겠습니다.
Amazon Bedrock 에이전트에 지식 기반 추가
Amazon Bedrock 에이전트를 생성하거나 업데이트할 때 지식 기반을 추가할 수 있습니다. Amazon Bedrock 에이전트 블로그에서 설명하는 대로 에이전트를 생성합니다.
세금 봇 예에서는 ‘TaxBot’이라는 에이전트를 생성하고 파운데이션 모델을 선택한 후 2단계에서 에이전트에 ‘너는 사용자의 미국 세금 신고 질문에 답변하는 유용하고 친절한 에이전트다’라는 지침을 제공했습니다. 4단계에서는 앞서 생성한 지식 기반을 선택하고, 에이전트에게 어떤 경우에 이 지식 기반을 사용해야 하는지를 설명하는 지침을 제공할 수 있습니다.
이러한 지침은 에이전트가 특정 지식 기반을 검색에 사용할지 여부를 결정하는 데 활용되므로 매우 중요합니다. 에이전트는 사용자 입력 및 사용 가능한 지식 기반 지침을 바탕으로 적절한 지식 기반을 식별합니다.
세금 봇 예제에서는 ‘TaxBot-Knowledge-Base’라는 지식 기반과 함께 ‘이 지식 기반을 사용하여 세금 신고 질문에 답하라’는 지침을 추가했습니다.
에이전트 구성을 완료한 후에는 에이전트를 테스트하여 추가된 지식 기반을 어떻게 사용하는지 확인할 수 있습니다. 에이전트가 지식 기반에서 가져온 정보에 대한 소스 속성을 어떻게 제공하는지 잘 살펴보세요.
생성형 AI의 기초 알아보기
대규모 언어 모델(LLM)을 사용한 생성형 AI는 RAG를 비롯한 LLM을 사용하여 생성형 AI 애플리케이션을 구축하는 방법을 배우려는 데이터 사이언티스트와 엔지니어를 위한 3주 온디맨드 과정입니다. Amazon Bedrock으로 구축을 시작하기에 완벽한 토대가 됩니다. 지금 등록하고 LLM을 사용한 생성형 AI를 사용해보세요.
지금 가입하여 Amazon Bedrock(미리보기)에 대해 자세히 알아보기
Amazon Bedrock은 현재 미리보기로 제공됩니다. 미리보기의 일부로 Amazon Bedrock의 지식 기반에 액세스하려면 기존 AWS Support 담당자에게 문의하세요. 정기적으로 신규 고객에게 액세스 권한을 제공하고 있습니다. Amazon Bedrock에 대해 자세히 알아보려면 Amazon Bedrock 기능 페이지를 방문하고 가입하세요.
— Antje