#Backend

우아한공방의 새로운 동료, 시스템 맥락을 가진 챗봇서비스 개발기(feat. RAG)

우아한공방의 새로운 동료, 시스템 맥락을 가진 챗봇서비스 개발기(feat. RAG)
01

Summary

우아한형제들은 디자인시스템 상담원을 AI로 만들었습니다: RAG 기반 챗봇 개발기

AWS Bedrock과 RAG로 반복 문의는 줄이고 설계 의도는 더 정확하게 전달하는 디자인시스템 플랫폼 구축 전략

디자인시스템 '우아한공방'은 파편화된 문서와 방대한 가이드로 인한 사용자 피로도를 해결하기 위해 AI 챗봇을 도입했습니다. 단순한 문서 검색을 넘어 시스템 프롬프트 튜닝, 메타데이터 기반 Retrieval, 그리고 Guardrail을 통한 답변 정제까지 실무적인 RAG 최적화 기법을 총동원했습니다. 이제 개발자들은 반복 답변에서 벗어나 더 가치 있는 설계 고민에 집중하고 있습니다.

  • 01AWS Bedrock Knowledge Bases와 Amazon OpenSearch Serverless를 활용한 고성능 RAG 체인 구현
  • 02사용자 질문의 오타 보정 및 컴포넌트 이름 추출을 통한 정교한 메타데이터 필터링 적용
  • 03SSE(Server-Sent Events) 기반 스트리밍 응답과 TextDecoder를 활용한 끊김 없는 UI 인터랙션 구현
  • 04Storybook Composition 환경에서도 전역적으로 노출되는 독립적인 챗봇 UI 패키지화
  • 05AWS Bedrock Guardrails를 활용한 부적절한 질의 차단 및 답변 범위 제한

RECOMMENDATION

디자인시스템 운영 효율을 높이고 싶은 팀이나, 사내 지식 베이스를 기반으로 정확도 높은 RAG 서비스를 구축하려는 백엔드 엔지니어에게 강력히 추천합니다.

The Problem

우아한형제들의 디자인시스템인 '우아한공방'의 방대한 문서, 가이드, 코드베이스로 인해 사용자가 필요한 정보를 찾는 데 시간이 오래 걸리고, 반복되는 서포트 문의로 인해 개발자의 운영 리소스가 낭비되는 문제가 있었습니다.

The Solution

AWS Bedrock Knowledge Bases와 LangChain을 기반으로 RAG 시스템을 구축하여, 사용자 질문에서 컴포넌트 명칭을 추출하고 메타데이터 필터링을 거친 정확한 문맥을 LLM에 제공하는 챗봇 서비스를 개발했습니다. 또한 AWS Bedrock Guardrails를 도입하여 디자인시스템과 무관한 질의를 제한하고, 스토리북 최상단에 전역 UI로 배치하여 접근성을 높였습니다.

The Result

반복되는 기본적인 사용 문의를 챗봇이 대신 처리함으로써 운영 효율을 높였으며, MCP와 RAG API를 통합하여 IDE 환경에서도 일관된 설계 맥락을 제공하게 되었습니다. 결과적으로 개발자가 시스템 개선에 집중할 수 있는 환경을 조성하고 GenUI 플랫폼 확장을 위한 기술적 기반을 마련했습니다.

Trade-off

Guardrail의 출력 검사 활성화 시 스트리밍 응답이 지연되거나 정상적인 응답이 필터링되는 부작용이 발견되어, 입력 검사만 유지하고 비동기 스트리밍 처리를 위해 AWS SDK를 직접 호출하는 방식의 트레이드오프가 있었습니다.

03

Key Concepts

Concept · 01

RAG (Retrieval-Augmented Generation)

외부 지식 베이스에서 관련 정보를 검색한 뒤, 그 정보를 LLM에 컨텍스트로 제공하여 답변의 정확성을 높이는 생성 AI 기법입니다.

  • 우아한공방의 가이드 문서와 코드베이스를 벡터화하여 답변 생성 시 참고 자료로 활용했습니다.
Concept · 02

AWS Bedrock Knowledge Bases

데이터 소스를 파이프라인화하여 벡터 데이터베이스와 LLM을 쉽게 연결하고 관리해주는 완전 관리형 RAG 서비스입니다.

  • Amazon OpenSearch Serverless를 벡터 스토어로 사용하여 메타데이터 필터링 기반의 검색을 수행했습니다.
Concept · 03

Guardrails for Bedrock

LLM의 입력과 출력 내용을 모니터링하고 정책에 따라 부적절한 콘텐츠를 필터링하는 안전 장치입니다.

  • 디자인시스템과 관련 없는 개인 정보 요구나 일반 상식 질문을 차단하는 용도로 활용되었습니다.