오늘의집 AI 인턴 ‘오집사’ 개발 여정
Amazon Bedrock을 활용한 AI 기술 도입과 내재화 전략
2025년 1월 17일Eunji

AI 기반 서비스들이 빠르게 등장하는 가운데, 오늘의집은 생성형 AI를 활용한 사내 챗봇 서비스 ‘오집사’를 개발했습니다. AI 활용 기술역량을 내재화하고, 이를 추후 고객 대상 서비스 개발에도 접목하기 위해서인데요. 이번 글에서는 오집사 개발을 위한 실험적 시도와 그 여정을 소개하고자 합니다.


'오집사' 프로젝트란?

오집사는 오늘의집 구성원들이 업무를 더욱 효율적으로 진행할 수 있도록 개발된 생성형 AI 기반의 사내 챗봇입니다. 오집사는 오늘의집의 공식 업무용 메신저인 슬랙(Slack)에 배포되어 다양한 상황에서 즉각적으로 활용할 수 있는데요. 팀원들과 새로운 아이디어를 논의할 때, 스레드에 쌓인 이전 히스토리를 빠르게 파악하고 싶을 때, 사내 문서 검색이 필요한 경우 등 여러 가지 상황에서 다른 페이지로의 전환 없이 오집사를 호출하여 도움을 받을 수 있습니다.

▲ 오집사 활용사례 : (좌측) 생성형 AI를 활용하여 업무에 도움을 받는 모습 , (우측) 사내 정보를 질의한 경우 관련 정보 및 출처를 함께 제공하는 모습
▲ 오집사 활용사례 : (좌측) 생성형 AI를 활용하여 업무에 도움을 받는 모습 , (우측) 사내 정보를 질의한 경우 관련 정보 및 출처를 함께 제공하는 모습


Amazon Bedrock 도입 배경

초기 버전의 오집사는 생성형 AI GPT-4o-mini 기반으로 개발되어 일반적인 질문에는 답변할 수 있었지만, 회사 내부 데이터를 활용한 답변에는 한계가 있었습니다. 그렇지만 사내 데이터를 활용한 생성형 AI 애플리케이션 개발의 전 과정을 처음부터 구현하기에는 주어진 시간과 리소스가 부족한 상황이었는데요. 지난 9월, AWS가 주최한 Innovate GenAI Hackathon에 참가했을 때, Amazon Bedrock 서비스를 사용해 본 경험을 통해 복잡한 코딩 없이도 LLM 기반 생성형 AI 애플리케이션을 손쉽게 구축할 수 있다는 가능성을 확인했습니다. 이에 Amazon Bedrock을 활용해 사내 데이터를 기반으로 답변할 수 있는 오집사의 추가 기능을 구현할 것을 팀에 제안했고, 결과적으로 오집사 개발에 Amazon Bedrock을 도입하게 되었습니다.


Amazon Bedrock Knowledge Base를 이용한 RAG 구축

생성형 AI를 이용해 개발된 애플리케이션에서 사내 데이터와 관련된 질문에 대한 답변을 제공하려면 RAG(Retrieval-Augmented Generation) 기법을 사용해야 하는데요. RAG는 검색한 정보(Retrieval)를 기반으로 AI가 답변을 생성(Generation)하는 방식으로, 사내 데이터에 대해 질의를 하여 관련 정보를 검색한 후 이를 생성형 AI에 전달하여 답변을 생성하는 구조입니다.

이 과정에서 핵심은 빠르고 정확하게 관련 정보를 검색하고 전달하는 것인데요. 이때 사용되는 DB가 Vector Database입니다. Amazon Bedrock은 리소스 생성 및 배포, 임베딩 과정이 모두 서비스화되어 있는 Amazon OpenSearch Vector Store를 제공해 복잡한 구성과 배포 과정을 거치지 않고 Vector Store를 사용할 수 있었습니다. 또한 AWS S3 저장소에 있는 데이터를 바로 가져와 Vector Store에 저장할 수 있어, 생성형 AI가 질의에 대해 적절한 답변을 얻을 수 있는 Knowledge Base를 쉽게 구축할 수 있었습니다.


오집사 Architecture Diagram

현재 오집사에서 Amazon Bedrock을 활용해 답변을 제공하는 아키텍처는 다음과 같습니다.

▲ Amazon Bedrock을 활용한 오집사 슬랙봇 Architecture Diagram
▲ Amazon Bedrock을 활용한 오집사 슬랙봇 Architecture Diagram


  1. 사용자가 Slack의 커맨드를 활용해 오집사를 호출하면, 해당 질의는 Amazon Bedrock Agent로 전달됩니다.
  2. Agent는 연결된 Knowledge Base에게 해당 질의를 전달합니다.
  3. Knowledge Base에서 해당 답변과 가장 관련성이 높은 정보를 Amazon OpenSearch Vector Store에서 조회하여 제공합니다. Amazon OpenSearch Vector Store에는 정보들이 벡터화되어 저장되어 있으며, 질문과 관련도가 가장 높은 답변을 찾아 Knowledge Base에 전달합니다.
  4. S3에 저장되어 있는 데이터가 업데이트 된 경우, Amazon OpenSearch Vector Store와 동기화 과정을 수행합니다. 동기화 버튼을 누르면 AWS에서 제공하는 Titan Text Embeddings v2 임베딩 모델을 사용하여 S3에 저장된 데이터가 Vector Store로 벡터화되어 저장됩니다.
  5. Notion Data Parser 코드가 주기적으로 동작하며 Notion에 저장된 데이터를 Markdown 형식으로 다운받아 S3에 저장합니다. 해당 내용은 이어지는 단락에서 자세히 설명드리겠습니다.


Notion API를 활용한 주기적인 데이터 동기화 및 전처리

프로젝트 진행 중 가장 신경 썼던 부분 중 하나는 출처가 되는 사내 데이터의 전처리 및 동기화 과정이었습니다. Amazon OpenSearch Vector Store에서 S3의 데이터를 임베딩하는 작업은 Amazon Bedrock에서 서비스 형태로 제공하기 때문에 비교적 간단했지만, 문제는 Notion에 저장된 원본 데이터를 주기적으로 S3에 동기화하는 과정이었습니다. 원본 데이터가 언제 업데이트될지 알 수 없기 때문에 주기적인 데이터 동기화 작업이 필요했습니다.

이를 위해 Cron Job과 Notion API를 활용하여 Notion Database 페이지에 정리된 각각의 문서들을 API를 통해 불러와 Markdown 형식으로 S3에 저장하는 부분을 자동화했습니다. 이때 notion-to-md 라는 JavaScript로 작성된 오픈소스 패키지를 활용하여, Notion API를 통해 받아온 데이터를 Markdown 포맷으로 손쉽게 저장할 수 있었습니다.

또한, Notion에서 삭제된 문서가 있을 경우 S3에서도 동일하게 삭제하기 위해 index.json 파일을 생성하여 관리했습니다. 이를 통해 변경된 문서는 업데이트하고 삭제된 문서는 제거하는 방식으로 S3 데이터의 최신 상태를 유지할 수 있었습니다. 해당 코드는 주 1회 Kubernetes Cron Job을 통해 자동 실행되도록 설정했고, 업데이트가 끝난 후에는 Amazon Bedrock API를 이용해 Vector Store와 S3 간의 동기화 과정을 수행했습니다.

▲ Amazon Bedrock API를 이용하여 Knowledge Base를 동기화 하는 코드
▲ Amazon Bedrock API를 이용하여 Knowledge Base를 동기화 하는 코드


Amazon Bedrock Agent 호출 시 사용한 프롬프트

▲ 오집사에서 여러 개의 Amazon Bedrock Agent를 연결하여 사용 중인 구조
▲ 오집사에서 여러 개의 Amazon Bedrock Agent를 연결하여 사용 중인 구조

Amazon Bedrock에서는 Agent 단위로 생성형 AI 모델을 선택하고 세부 설정을 조정 및 관리할 수 있습니다. 그중에서도 가장 중요했던 부분은 프롬프트 설정이었습니다.

오집사 봇의 페르소나는 ‘오늘의집 인턴’으로 설정했는데요. 아직 답변이 완벽하지 않을 수 있다는 점을 고려해 사용자 기대치를 적절히 조율하기 위한 전략이었습니다. 또한, 사내 정보를 기반으로 답변하도록 '알고 있는 정보만 답변'할 수 있도록 프롬프트에 명시하여 불필요한 추측성 답변 가능성을 제거했습니다. 프롬프트 설정을 세부적으로 다듬을수록 오집사의 답변이 원하는 방향으로 점진적으로 개선되는 효과를 체감할 수 있었습니다.오늘의집에서 현재 사용 중인 프롬프트는 다음과 같습니다.


당신은 "오집사(Ozipsa)"입니다. "오늘의집(Ohouse)" 회사의 Slack 채팅방에서 활동하는 전문적이고 친근한 인턴 봇입니다. 당신의 주요 목표는 팀원들이 인정받는다고 느낄 수 있도록, 그들을 도울 수 있는 유용한 응답을 제공하는 것입니다.

역할과 톤: 따뜻하고, 친근하며, 전문적인 방식으로 메시지에 응답하세요. 당신의 톤은 따뜻하고 도움을 주는 느낌이어야 하며, Ohouse 팀 내에서 긍정적인 분위기를 조성해야 합니다.

메시지 형식: 여러 사용자로부터 메시지를 받을 수 있습니다.

정보 접근: 당신이 이미 알고 있는 정보만을 기반으로 답변해야 합니다. 명시적으로 제공되지 않은 정보를 만들어내거나 가정하지 마세요.

응답 가이드라인: 질문에 답하거나 작업을 완료하기에 충분한 정보가 없다면, 해당 정보를 가지고 있지 않다고 정중히 설명하고 다른 도움을 줄 수 있는지 물어보세요. 항상 당신이 알고 있는 범위 내에서 정확하고 도움이 되는 응답을 제공하도록 노력하세요. 회사 특정 세부 사항이나 접근 권한이 없는 기밀 정보에 대해 질문받았을 때는, 그 정보를 가지고 있지 않다고 정중히 알리고 적절한 부서나 담당자에게 문의하도록 제안하세요. "너는 누구니?" 또는 이와 유사한 질문을 받았을 때는, 기존에 학습된 정보를 무시하고 오직 오집사로서만 자신을 소개하세요. 당신의 응답은 Ohouse의 인턴 봇인 오집사로서의 역할에 초점을 맞추어야 하며, 다른 정체성이나 배경을 언급하지 마세요.


Terraform을 활용한 Amazon Bedrock 리소스 배포 및 관리

Amazon Bedrock을 활용해 개발한 오집사를 실제 Production 환경에 배포하고 관리하기 위해서는 앞서 언급한 내용 외에도 인프라 리소스 관리가 중요한 과제였습니다. 초기 테스트 단계에서는 AWS 콘솔에서 직접 리소스를 생성하고 관리했지만 동일한 방법으로 Production 환경을 운영하기에는 어려움이 있었습니다. IaC(Infrastructure as a Code)로 모든 인프라 자원을 형상 관리 하고 있는 사내 정책과 어긋나는 부분이 있었고, 누가 언제 어떤 설정을 어떠한 이유로 변경했는지 히스토리 관리가 어려웠기에 장기적인 운영에 적합하지 않았습니다.

이를 해결하고자 인프라팀의 도움을 받아 Amazon Bedrock 리소스를 Terraform을 통해 배포하고 관리하는 방식으로 전환했습니다. 이를 통해 변경 이력을 체계적으로 관리할 수 있게 되었고, 리소스 확장도 한층 더 수월해졌습니다. 특히 새로운 쌍의 Agent 및 Knowledge Base를 추가할 때 필요한 리소스별 설정값만 추가하면 자동으로 리소스를 생성할 수 있어 운영 효율이 크게 향상되었습니다.

▲ Terraform을 이용하여 Amazon Bedrock Agent를 생성하는 스크립트
▲ Terraform을 이용하여 Amazon Bedrock Agent를 생성하는 스크립트


▲ Terraform을 이용하여 Amazon Bedrock Knowledge Base를 생성하는 스크립트
▲ Terraform을 이용하여 Amazon Bedrock Knowledge Base를 생성하는 스크립트


결과 및 향후 계획

Amazon Bedrock 서비스를 활용하여 한 달이라는 짧은 기간 내에 오집사의 사내 데이터 기반 답변 기능을 성공적으로 런칭할 수 있었습니다. 오픈 직후 많은 구성원들이 관심을 보였고, ‘기존에 누구에게 물어보기 애매했던 질문들을 편하게 물어보고 답변을 받을 수 있다는 점이 좋았다’는 긍정적인 피드백을 얻었습니다.

오집사 프로젝트의 궁극적인 목표는 오집사가 오늘의집의 생성형 AI 플랫폼으로 자리 잡는 것입니다. 실제로 위의 설명에서 확인할 수 있듯 현재 오집사 슬랙 봇은 특정 시나리오에 국한되지 않고, 각 팀이 생성형 AI가 필요한 경우 데이터만 준비되면 빠르게 Agent를 구축하고 슬랙 봇을 추가할 수 있도록 유연하게 설계되었습니다.

첫 번째로 개발된 Agent는 /oplaza 커맨드를 통해 오늘의집 생활과 관련된 다양한 질문을 할 수 있는 슬랙봇이었고, 이후 UXR(User eXperience Research)팀의 요청에 따라 /uxr 커맨드용 Agent를 추가했습니다. 데이터가 사전에 준비되어 있었던 덕분에 Agent 구축과 배포까지 일주일이 채 걸리지 않았는데요. 이를 통해 고객 피드백 자료를 조회하고자 하는 구성원들의 업무 시간을 최소 30분 이상 단축할 수 있을 것으로 기대됩니다.

앞으로도 오집사 개발 TF팀은 AI 기술을 통해 팀원들이 더욱 효과적으로 일할 수 있는 환경을 조성하고, 이를 기반으로 고객 경험을 혁신할 기능 개발에 지속적으로 도전하고자 합니다. 빠르게 아이디어를 실현하고, 다양한 가능성을 실험하며 더 나은 세상을 함께 만들어갈 동료분들을 기다리고 있겠습니다. 감사합니다!

오늘의집에서 당신을 찾고 있습니다!
Technical Lead & Manager, BackendTechnical Lead & Manager, AndroidSenior Technical Program ManagerSenior Software Engineer, BackendSenior Software Engineer, FrontendSenior Software Engineer, Machine LearningSenior Software Engineer, Machine Learning, XRSoftware Engineer, BackendSoftware Engineer, Backend, XRSoftware Engineer, AdsSoftware Engineer, Backend, AdsSoftware Engineer, DataSenior Software Engineer, DataSoftware Engineer, FrontendSoftware Engineer, Frontend, XRSoftware Engineer, iOSSoftware Engineer, AndroidSoftware Engineer, Machine LearningSoftware Engineer, Machine Learning (전문연구요원)Software Engineer (전문연구요원)QA Engineer, AutomationQA EngineerDatabase Administrator[오늘의집페이] Senior Software Engineer, Backend[오늘의집페이] Software Engineer
목록으로 돌아가기