LLM을 이용한 기업용 챗봇 서비스
Overview 💬 사내 문서에 대한 Q&A 챗봇 개발 네이버 클라우드에서 고객사의 문서 데이터를 취급하기 위한 인프라 및 보안 설계 챗봇 형태의 PoC 서비스 아키텍처 설계 무정형의 HWP를 HTML 형태로 변환해 LLM에 적합한 형태로 정형화하고 검수하는 Frontend 개발 Architecture sequenceDiagram autonumber actor frontend as 💻 Frontend participant auth as Auth λ participant backend as 🗄️ Backend frontend ->> auth: 📩 ID, PW auth ->> frontend: 🔐 Token frontend ->> backend: 🔐 Token backend ->> auth: 🔐 Token auth ->> backend: ✅❌ Pass/Fail backend ->> frontend: 💯 Response Technology 인프라 Minio 라는 S3-compatable object storage에 원본 문서와 Chunking document를 적재 네이버 클라우드 VM 초기 구성, 목적 별로 할당 및 관리 VPN을 통해서만 VPC 내부에 접근할 수 있도록 구성 챗봇 형태의 PoC 서비스 구성 React frontend가 Fast API chat server, Self-hosted Sentry 등에 접근할 수 있는 Nginx 개발 업데이트가 잦은 Fast API 서버에 의존하지 않도록 JWT 서비스를 Naver Cloud Function 를 이용해 별도로 분리 채팅 API 사용 시나리오 관리 HTML 정형화 Frontend 개발 기술 스택 Lit : 대량의 검수 대상 HTML element에 Virtual DOM 없이 직접 접근하고 Boiler plating 없이 빠르게 개발하기 위해서 선택 pREST : 백엔드의 지원 없이 HTML 데이터를 DB에 적재하기 위해 선택 DB 문서 파싱 규칙은 Indexed DB에 적재해 개인이 관리 문서 파싱 결과는 Postgres에 적재해 RAG 시스템과 연동 html 트리를 탐색하며 html element마다 세상에 id를 부여하는 해싱 알고리즘 개발 문서 파싱 규칙을 UI를 통해 작성하고 규칙의 적용 결과를 바로 확인할 수 있음 textContent 에 대한 Regex matching, CSS selector, DOM tree 내의 위치 등을 고려 Minio와 연동된 Batch 기능 개발 Lessons 새로운 회사에서 일을 시작하며 직접 고객사와 소통하지 않고 PM과 협업했습니다. Lit framework를 이용해서 복잡한 상태 관리를 해보았다. AWS 이외의 클라우드로 네이버 클라우드를 처음으로 경험해보았으나, 불안정하고 완성도가 떨어지는 모습에 더는 경험해보고 싶지 않았습니다. 언어 모델과 RAG 시스템의 특성을 서서히 이해해가고 있습니다. 성능에 대한 사람들의 높은 기대치에는 절대 대중들이 예상하는 만큼 쉽게 도달할 수 없어 보이고, 언어 모델 이외의 전문 지식과 소프트웨어 기술에 대한 중요성을 매일 느끼며 겸손을 배우고 있습니다.