- Benchling은 여러 리전과 환경에서 클라우드 인프라를 운영
- Terraform Cloud로 16만 개 이상의 리소스를 관리하며, 한 달 동안 약 50명의 엔지니어가 인프라 변경 사항을 릴리스
- 방대한 FAQ 문서(20페이지)와 Slack 스레드 기록이 존재하지만, "검색의 비효율성"이 문제.
- 이를 해결하기 위해 RAG LLM을 활용한 Slackbot을 구축했음
구축 목표
- Terraform Cloud 관련 질문을 실시간으로 해결하는 내부 Slackbot 개발.
- 내부 및 외부 데이터 소스를 결합해 사용자에게 친숙한 Slack 인터페이스를 통해 답변 제공.
-
활용 가능 사례:
- HR 질문 응답
- 고객 문제 해결 사례 검색
- 소프트웨어 오류 코드 설명
작동 원리
-
사용자 쿼리 분석: 데이터베이스에서 관련 정보를 검색.
-
LLM 프롬프트 구성: 검색 결과와 지침을 포함해 답변 생성.
기술 스택
-
RAG 모델: Amazon Bedrock 사용.
- OpenSearch Serverless 데이터베이스로 구성된 지식베이스 설정.
- Claude 3.5 Sonnet v2 모델로 답변 생성.
데이터 소스
-
Confluence: Terraform Cloud FAQ(PDF로 저장 후 S3에 업로드).
-
웹: HashiCorp의 Terraform Cloud 및 언어 문서.
-
Slack: 해결된 Terraform Cloud 이슈가 포함된 스레드(POC는 수작업으로 수집).
- 데이터는 벡터 데이터베이스에 저장되어 쿼리 시 검색 가능.
구현 아키텍처
-
구성 요소:
- Slack 앱
- AWS API Gateway
- AWS Lambda (Python 사용)
- AWS Bedrock
- OpenSearch Serverless (벡터 데이터베이스)
-
모델 사용:
- Amazon Titan Text Embeddings v2 (임베딩 생성)
- Claude 3.5 Sonnet v2 (답변 생성)
제한 사항 및 향후 개선점
제한 사항
-
이미지 처리 불가: 이미지 기반 아키텍처 다이어그램 또는 스크린샷 미포함.
-
Terraform 지원 부족: 현재 Terraform AWS 프로바이더가 Bedrock 리소스를 지원하지 않음.
향후 개선점
-
출처 링크 추가: Slack 응답에 문서 출처 포함.
-
Slack 스레드 자동 저장: "@help-terraform-cloud 기억해줘" 명령으로 데이터베이스 업데이트.
-
데이터 동기화 자동화: CloudWatch 이벤트를 사용해 주간 동기화.
-
Confluence API 활용: 현재 수동 PDF 업로드를 API 연결로 전환.
-
다중 대화 지원: 사용자와 지속적인 대화 문맥 유지.
구축 과정에서 배운 점
-
데이터 청크 전략:
- 초기에 300 토큰(약 1단락) 크기를 사용했으나 긴 답변이 잘리지 않도록 1500 토큰(약 5단락)으로 조정.
-
PDF 파싱의 효율성:
- 이미지 제외, 텍스트 기반 데이터는 안정적으로 추출.
-
지식 베이스 설정 용이성:
- Amazon Bedrock을 활용해 몇 분 만에 구축 가능.
사용 사례
-
FAQ 및 오류 코드 조회.
-
반복적인 질문 자동 응답.
-
팀별 맞춤형 데이터셋 활용:
보안 고려사항
- 데이터 민감도 및 부정확한 결과 위험 평가.
- 조직에서 승인된 모델 확인.
결론
- LLM을 활용한 Slackbot은 빠른 프로토타입 개발 가능성을 입증.
- 새로운 기술 실험을 통해 효율성과 생산성 향상 가능.
- 이 사례를 바탕으로 여러분도 LLM 기반 도구를 구축해 보세요!