
AWS Bedrock을 사용하여 몇 분 만에 자신만의 AI 고객 지원 어시스턴트 구축하기
요약
Amazon Bedrock을 활용하여 기업의 내부 데이터를 기반으로 한 맞춤형 AI 고객 지원 어시스턴트를 구축하는 방법을 소개합니다. 단일 API를 통해 다양한 LLM을 손쉽게 교체하며 사용할 수 있는 아키텍처와 컨텍스트 인식의 중요성을 다룹니다.
핵심 포인트
- Amazon Bedrock은 다양한 LLM을 단일 API로 통합 관리할 수 있는 환경을 제공함
- InvokeModel과 InvokeAgent API를 통해 텍스트 생성 및 복잡한 워크플로 제어 가능
- 기업 내부 데이터를 활용하여 LLM의 환각 현상을 줄이고 정확한 답변 제공 가능
- 모델 ID 변경만으로 Claude, Llama 등 다양한 모델로 매끄러운 전환 가능
2025년 12월 20일에 열린 AWS Community Day Kochi는 멋진 에너지와 훌륭한 아이디어로 가득한 시간이었습니다. 복잡한 서버리스 (serverless) 설계부터 최첨단 DevOps 워크플로 (workflows)에 이르기까지 정말 놀라운 강연들이 많았습니다. 하지만 그중에서도 특히 저의 시선을 사로잡은 강연이 하나 있었습니다.
그 강연은 Amazon Bedrock을 사용하여 맞춤형 AI 고객 지원 어시스턴트를 구축하는 방법에 관한 것이었습니다. 저는 AI의 실용적인 응용 사례를 매우 좋아합니다. 저는 발표자가 복잡한 생성형 AI (generative AI)를 가져와서 누구나 몇 분 만에 만들 수 있는 간단한 아키텍처 (architecture)로 분해하는 과정을 지켜보았습니다.
우리 모두는 완전히 시간 낭비처럼 느껴지는 일반적인 고객 관리 챗봇을 경험해 본 적이 있습니다. 기업 정책에 관한 특정 질문을 던지면, 도움이 되지 않는 일반적인 답변을 내놓거나 아예 없는 말을 지어내 버리곤 하죠. 익숙한 상황인가요?
문제는 이렇습니다. 기본 대규모 언어 모델 (LLMs)은 매우 똑똑하지만, 여러분의 기밀 회사 데이터를 즉시 알지는 못합니다. 이번 강연은 엄청난 양의 복잡한 코드를 개발하지 않고도 어떻게 매우 정확하고 문맥을 인식하는 (context-aware) 지원 어시스턴트를 설계할 수 있는지에 대한 주제를 정확히 짚어주었습니다.
핵심 엔진 이해하기: Amazon Bedrock
아키텍처에 들어가기에 앞서, 발표자는 왜 Amazon Bedrock이 AI 앱을 구축하려는 개발자들에게 게임 체인저 (game-changer)인지에 집중했습니다.
통합 API 계층 (The Unified API Layer)
Amazon Bedrock은 생성형 AI 모델을 위한 일종의 범용 여행용 어댑터와 같습니다. 서로 다른 AI 기업들이 각기 다른 LLM을 구축하지만, Bedrock은 이들 모두와 인터페이스할 수 있는 단일화된 표준 API를 제공합니다.
Claude, Llama, Mistral, Cohere 또는 Amazon 자체 모델인 Titan을 사용하고 싶든 상관없이 요청 프로세스는 동일합니다. 모델 간에 전환하고 싶다면 설정에서 modelId 파라미터만 업데이트하면 되며, 나머지 모든 것은 그대로 유지됩니다.
이는 제공업체가 새로운 모델 업그레이드를 제공할 때마다 매번 완전히 새로운 특화된 API를 배우느라 시간을 낭비할 필요가 없음을 의미합니다. 이를 통해 백엔드 (backend)를 탐색하고, 성능을 비교하며, 업그레이드하는 과정을 매우 매끄럽게 만들어 줍니다.
이 세션에서는 이러한 모든 상호작용을 구동하는 두 가지 필수 API를 살펴보았습니다:
-
InvokeModel: 이 API를 사용하면 플랫폼에 호스팅된 모든 텍스트 모델에 직접적인 텍스트 프롬프트 (text prompts)를 제공할 수 있습니다.
-
InvokeAgent: 이 API는 복잡한 워크플로 (workflows)를 오케스트레이션 (orchestrate)하는 상위 수준의 지능형 에이전트 (intelligent agents)에 대한 직접적인 액세스를 제공합니다.
비법: 왜 컨텍스트 (Context)가 전부인가
Bedrock과 같은 기술이 왜 필요한지 이해하려면 LLM (Large Language Models)이 어떻게 작동하는지 이해해야 합니다. 발표자는 컨텍스트가 만드는 엄청난 차이를 강조하기 위해 일반적인 기업의 연차 유급 휴가 (Earned Leave, EL) 정책이라는 훌륭한 실생활 예시를 들었습니다.
연차 유급 휴가의 딜레마
이제 일반적인 기본 설정 상태의 LLM에게 다음과 같은 간단한 질문을 한다고 가정해 봅시다: "연차 유급 휴가 정책은 무엇인가요?"
모델은 회사 특유의 데이터가 없으므로, 연차 유급 휴가가 일반적으로 무엇을 의미하는지에 대한 교과서적인 설명만을 제공할 수 있습니다. 한 달에 1~2일을 받을 수 있다거나 항상 관리자의 승인이 필요하다고 말할 수 있습니다. 이는 일반적인 개념으로서 기술적으로는 정확하지만, 자신의 조직 내 특정 규칙을 알아야 하는 직원에게는 완전히 무가치합니다.
관련 컨텍스트를 포함하여 질문하기
이제 동일한 질문을 하되, 이번에는 질문과 함께 실제 기업의 인사 (HR) 문서 샘플을 모델에게 제공한다고 생각해 보십시오. 컨텍스트를 통해 정규직 직원은 6개월 근무를 완료한 후 연차 유급 휴가 자격이 생기며, 근무한 매달 1일의 휴가가 발생한다는 점을 알 수 있습니다.
모델은 해당 데이터를 바로 앞에 두고 있으므로, 귀하의 조직에만 적합한 초정밀 맞춤형 솔루션을 즉시 제공할 수 있습니다.
RAG의 등장: 검색 증강 생성 (Retrieval-Augmented Generation)
모든 개별 사용자 문의에 대해 이 컨텍스트를 수동으로 제공하는 것은 실용적이지 않으며, 바로 이 지점에서 검색 증강 생성 (RAG, Retrieval-Augmented Generation)이 도움이 될 수 있습니다.
RAG는 AI 모델 버전의 오픈북 테스트(open-book test)와 같습니다. 모델이 학습된 기억에 의존하여 답을 추측하는 대신, RAG는 모델이 사용자에게 답변하기 전에 귀하의 문서에서 실제적이고 검증된 정보를 찾아볼 수 있게 합니다.
발표자는 RAG 워크플로우를 이해하기 쉽고 단순한 세 가지 단계로 나누었습니다:
-
검색 (Retrieve): 알고리즘이 사용자의 질문과 관련된 정보를 귀하의 비공개 문서, PDF, FAQ, Amazon S3 버킷 또는 Confluence 페이지에서 검색합니다.
-
증강 (Augment): 시스템은 획득한 콘텐츠를 가져와 사용자의 초기 프롬프트(prompt) 바로 옆에 임시 컨텍스트 레이어(context layer)로 자동 배치합니다.
-
생성 (Generate): LLM(Large Language Model)은 자신의 기본 지식과 귀하가 제공한 새로운 컨텍스트를 모두 읽어, 오직 귀하의 데이터 사실에 기반하여 매우 정확한 응답을 생성합니다.
고객 지원 어시스턴트의 구성 요소
과거에는 별도의 벡터 데이터베이스(vector database)를 관리하고, 데이터 파이프라인 크롤러(data pipeline crawler)를 생성하며, 텍스트 청킹(text chunking) 로직을 만드는 등 RAG 시스템 전체를 처음부터 직접 구축해야 했습니다. 여기서 흥미로운 점이 있습니다. Amazon Bedrock에는 이 모든 힘든 작업을 네이티브하게 수행하는 세 가지 내장 구성 요소가 있습니다.
1. Bedrock Knowledge Bases
Knowledge Base는 파운데이션 모델(foundation models)과 에이전트(agents)가 귀하의 독점적인 데이터 소스에 즉시 접근할 수 있도록 제공합니다. 이를 설정하는 방법은 세 단계로 간단합니다:
-
데이터 소스 연결: Amazon S3, Confluence, SharePoint 또는 웹 크롤러(Web Crawler)에 있는 원시 파일(raw files)을 Bedrock이 가리키도록 설정합니다.
-
임베딩 모델 (embedding model) 선택: Titan Embeddings V2와 같은 모델을 선택하여 작성된 문서를 기계가 즉각적으로 검색할 수 있는 수학적 벡터(vector)로 자동 변환합니다.
-
벡터 스토어 (vector store) 선택: 벡터를 별도의 데이터베이스에 저장합니다. Bedrock을 사용하면 Amazon OpenSearch Serverless와의 내장된 완전 관리형 통합을 통해 이 과정이 간소화됩니다.
2. Bedrock Agents
LLM (Large Language Model)은 단순히 대화만 주고받을 수 있을 뿐, 에이전트 (Agent) 없이는 운영 활동을 수행할 수 없습니다. 에이전트 (Agents)는 애플리케이션을 위한 지능형 오케스트레이터 (Orchestrator)입니다.
에이전트 (Agents)는 LLM이 지식 기반 (Knowledge Base)에 대한 조회를 자동으로 수행하고, 외부 API 또는 개발 도구에 안전하게 액세스하며, 복잡한 다단계 워크플로 (Multi-step workflows)를 실행하고, 진행 중인 대화 상태를 추적하여 사용자가 같은 말을 반복할 필요가 없도록 지원합니다.
3. Bedrock Guardrails
만약 사용자가 지원 어시스턴트를 속여 중요한 내부 코드를 드러내도록 유도하거나, 부적절한 질문을 던진다면 어떻게 될까요?
가드레일 (Guardrails)은 선택한 기반 LLM (LLM)과 독립적으로, 모델 바로 위에 보호 정책 계층을 제공합니다. 가드레일 (Guardrails)은 다음과 같은 실제 운영 제어 기능을 제공합니다:
-
안전 필터 (Safety Filters): 유해하거나 독성이 있거나 완전히 수용할 수 없는 콘텐츠를 자동으로 차단합니다.
-
PII 보호 (PII Protection): 처리 전 전화번호, 주소 또는 이메일과 같은 민감한 개인정보 (PII)를 식별하고 숨깁니다.
-
주제 및 응답 제어 (Topic & Response Control): 봇이 회사에서 승인한 주제로만 제한되도록 하고 조직의 응답 정책을 강제합니다.
아키텍처 심층 분석: 모든 요소가 결합되는 방식
세션에서 발표자는 다양한 구성 요소가 실시간으로 상호 작용하는 전체 아키텍처 다이어그램을 설명했습니다.
사용자가 고객 지원 앱을 사용하여 질문을 제출하면, 질문은 즉시 Bedrock Agent로 전송됩니다. 에이전트 (Agent)는 관련 문서 컨텍스트를 찾기 위해 즉시 OpenSearch Service 벡터 스토어 (Vector Store)에 쿼리를 보냅니다.
S3 버킷 내에 저장된 원본 문서는 임베딩 모델 (Embedding model)을 통해 입력되며, 백그라운드에서 동일한 벡터 스토어 (Vector store) 내에 정기적으로 업데이트됩니다.
그 후 에이전트(Agent)는 사용자의 초기 문의 사항을 새로 검색된 컨텍스트 스니펫(Context snippets)과 결합하여 매우 강력한 증강된 프롬프트(Augmented prompt)를 생성합니다. 이 전체 프롬프트는 대상 LLM(Large Language Model)으로 직접 전송됩니다. 모델은 문서 컨텍스트를 검토하고, 정확한 답변을 구성하여 에이전트를 통해 다시 전달함으로써 사용자에게 정확한 응답을 즉시 제공합니다.
실습하기: 콘솔 데모
이 과정이 얼마나 쉬운지 보여주기 위해, 발표자는 실제 설정 과정을 담은 콘솔 녹화 영상을 통해 이를 생성하는 정확한 방법을 안내했습니다.
우리는 mrinal-knowledge-base-bedrock-demo라는 제목의 데모 지식 베이스(Knowledge base) 생성을 확인했습니다. AWS Management Console에서는 다음과 같은 간단한 단계별 마법사(Wizard)를 제공합니다.
-
지식 베이스(Knowledge Base) 세부 정보 제공: 리소스를 체계적으로 관리할 수 있도록 사용자 지정 이름과 선택 사항인 설명을 입력합니다.
-
데이터 소스(Data source) 구성: 문서가 저장되어 있는 대상 스토리지 시스템을 연결합니다.
-
데이터 저장 및 처리 구성: 임베딩 모델(Embedding model)과 벡터 데이터베이스(Vector database) 설정을 선택합니다.
-
검토 및 생성: 아키텍처 설정을 확인하고 배포(Deploy)를 클릭합니다.
콘솔에서 새로운 IAM(Identity and Access Management) 서비스 역할(Service role)을 자동으로 생성하고 할당하도록 선택할 수도 있습니다. 이를 통해 사용자가 특정 JSON IAM 정책을 수동으로 개발할 필요 없이, 각 구성 요소가 적절한 통신을 수행하는 데 필요한 정확한 보안 권한을 갖도록 보장할 수 있습니다.
더 나아가기: 프로덕션(Production)을 위한 다음 단계
기본적인 RAG(Retrieval-Augmented Generation) 엔진은 콘솔에서 매우 빠르게 구축할 수 있지만, 발표자는 진정한 힘은 이를 다음에 어디에 연결하느냐에 달려 있다고 강조했습니다.
Bedrock Agent와 지식 베이스(Knowledge Base)가 가동되면, 귀사의 정확한 비즈니스 스택(Business stack)에 맞춰 기능을 신속하게 확장할 수 있습니다.
-
채팅 플랫폼과 통합 (Integrate with chat platforms): 에이전트를 Slack 또는 Microsoft Teams와 같은 일상적인 커뮤니케이션 플랫폼에 직접 연결하여, 팀원들이 실시간으로 내부 문서를 조회할 수 있도록 합니다.
-
이메일 기반 지원 활성화 (Enable email-based support): 에이전트를 Amazon Simple Email Service (SES) 또는 Amazon WorkMail과 통합하여, 수신된 고객 이메일을 자동으로 파싱(Parse)하고 정확한 문맥적 답변을 생성합니다.
-
장애 관리 도구 연결 (Connect incident management tools): 에이전트가 운영 시스템(PagerDuty, Jira, ServiceNow 등)과 직접 통신하여 지원 로그를 동적으로 생성하거나, 엔지니어링 요청을 자동으로 분류(Auto-triage)할 수 있도록 합니다.
핵심 요약 (Key Takeaways)
이번 세션을 진행하며, 강력한 AI를 개발하기 위한 진입 장벽이 얼마나 빠르게 낮아지고 있는지 실감했습니다. 자신만의 도우미를 개발하고자 한다면, 다음의 근본적인 교훈들을 기억하십시오:
-
표준 API가 상당한 시간을 절약해 줍니다: 새로운 모델이 출시되었다고 해서 애플리케이션의 아키텍처를 다시 작성할 필요는 없습니다. Bedrock이 복잡한 작업을 대신 처리해주므로, 단 하나의 파라미터(Parameter)를 변경하는 것만으로 즉시 모델을 교체할 수 있습니다.
-
문맥(Context)이 환각(Hallucination) 문제를 해결합니다: 특정 데이터로 학습되지 않은 LLM(대규모 언어 모델)은 임의로 추측하는 경향이 있습니다. RAG(검색 증강 생성) 파이프라인을 통해 모델에 정확한 문서 문맥을 제공(Grounding)함으로써, 모델이 정확하고 관련성 있는 상태를 유지하도록 해야 합니다.
-
인프라 관리는 선택 사항입니다: 대신 OpenSearch Serverless 및 관리형 Bedrock Agents와 같은 완전 통합 솔루션을 사용하면, 인프라를 설정하고 맞춤형 오케스트레이션(Orchestration) 스크립트를 구현하는 데 드는 몇 주간의 노력을 피할 수 있습니다.
-
보안은 결코 사후 고려 사항이 되어서는 안 됩니다: Bedrock Guardrails와 같은 내장 솔루션을 사용하면, 처음부터 개인정보(PII) 데이터를 숨기고 엄격한 주제 경계를 강제함으로써 사용자 대상 AI를 안전하게 배포할 수 있습니다.
결론 (Conclusion)
결론 (Conclusion)
AWS Community Day Kochi는 오늘날 클라우드 기술이 얼마나 실용적이고 접근하기 쉬운지를 다시 한번 일깨워준 훌륭한 행사였습니다. 요약하자면, 스마트하고 비즈니스 맥락을 이해하는 AI 어시스턴트를 구축하기 위해 데이터 과학자들로 구성된 대규모 팀이나 수백만 행의 특정 학습 데이터(training data)가 반드시 필요한 것은 아닙니다.
Bedrock Knowledge Bases, Agents, 그리고 Guardrails를 사용하면 가공되지 않은 PDF 문서로부터 완전히 작동 가능하며, 안전하고, 문맥을 인식하는(context-aware) 지원 봇을 단 몇 분 만에 만들어낼 수 있습니다. 이 도구들은 프로덕션 환경에 즉시 적용할 수 있는 수준(production ready)이므로, 이제 직접 나가서 구축해 볼 차례입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기