Bolnee-Chat: 비즈니스 웹사이트를 위한 셀프 호스팅 RAG 챗봇
Bolnee-Chat은 비즈니스 웹사이트 통합을 위해 설계된 셀프 호스팅 Retrieval-Augmented Generation (RAG) 챗봇 플랫폼입니다. 사용자가 특정 웹사이트 콘텐츠와 업로드된 문서에 기반한 AI 봇을 생성할 수 있게 하며, 간단한 두 줄의 JavaScript 스니펫을 통해 배포할 수 있습니다. 또한, 벤더 종속성(vendor lock-in)과 메시지당 과금을 피하기 위해 사용자의 자체 인프라에서 완전히 호스팅됩니다.
핵심 기능 및 RAG 구현
Bolnee-Chat은 챗봇의 응답이 LLM의 내부 지식에만 의존하지 않고 제공된 소스 자료에 기반하도록 보장하기 위해 RAG 파이프라인을 사용합니다.
지식 수집 (Knowledge Ingestion)
플랫폼은 지식을 추가하는 두 가지 주요 방법을 지원합니다:
- 웹사이트 크롤링: Python 기반 크롤러(
crawler/crawler.py)가h1,h2,p,li태그에서 콘텐츠를 추출합니다. 크롤러는robots.txt를 준수하며, 중복을 제거하고 콘텐츠를 JSON 파일로 저장하기 위해 사이트맵과 홈페이지를 처리합니다. - 파일 업로드: 시스템은 PDF, TXT, MD, DOCX 파일을 수집합니다.
인덱싱 및 검색 (Indexing and Retrieval)
수집된 데이터는 청크(chunk) 단위로 나뉘어 Full-Text Search (FTS)를 사용하는 SQLite 데이터베이스에 저장됩니다. 사용자가 봇에게 질문하면, 시스템은 이러한 청크를 기반으로 근거 있는 프롬프트를 생성하며, 응답에 사용된 소스에 대한 인용을 제공합니다. 데이터베이스에서 일치하는 소스가 발견되지 않으면 구성 가능한 폴백(fallback) 메시지가 트리거됩니다.
기술 아키텍처 및 스택
Bolnee-Chat은 현대적인 TypeScript 및 Python 스택으로 구축되었으며, 쉬운 배포를 위해 경량 데이터베이스를 활용합니다.
기술 스택
- Frontend: React 19, Vite, TypeScript, 및 Tailwind CSS.
- Backend: Express (Node.js 18+) 및 Python 3.10+ (크롤러용).
- Database: 챗봇, 소스, 청크 및 메시지를 저장하기 위한 SQLite (
better-sqlite3사용). - LLM Integration: OpenRouter, OpenAI, Groq, Ollama, vLLM을 포함하여 모든 OpenAI 호환 제공업체를 지원합니다.
보안 및 저장소
- API Key 암호화: 제공업체 API 키와 기본 URL은 AES-256-GCM을 사용하여 암호화되며, 클라이언트 측 임베드 스니펫에는 절대 노출되지 않습니다.
- 아바타 관리: 사용자가 업로드한 아바타(PNG, JPG, WEBP, 최대 MB)는 데이터 URL에서
/api/public/avatar/:id를 통해 접근 가능한 저장된 파일로 변환됩니다.
배포 및 통합
플랫폼은 Vercel 및 Cloudflare Pages를 포함한 다양한 호스팅 환경에서 신속한 배포가 가능하도록 설계되었습니다.
통합 프로세스
통합은 웹사이트의 닫는 </body> 태그 이전에 구성 객체와 스크립트 태그를 추가함으로써 이루어집니다:
<script>
window.BotConfig = {
botName: "Customer Bot",
avatar: "https://your-domain/api/public/avatar/BOT_ID",
chatUrl: "https://your-domain/api/public/chat/BOT_ID",
accentColor: "#111111",
greeting: "Hi! How can I help?",
theme: "dark"
};
</script>
<script src="https://your-domain/chatbot-widget.js" async></script>
위젯 기능
- 지속성 (Persistence):
localStorage를 사용하여VISITOR_ID와 채팅 히스토리를 저장하여, 인사가 한 번만 나타나고 대화가 세션 간에 유지되도록 합니다. - 스트리밍 (Streaming): 실시간 응답 스트리밍을 위해 Server-Sent Events (SSE)를 구현합니다.
- UI/UX: 우측 하단에 플로팅 버블, 슬라이딩 윈도우(360x520), 그리고 테마 인식 스타일링(light, dark, 또는 auto)을 특징으로 합니다.
관리자 관리
Bolnee-Chat은 여러 봇을 관리하고 상호작용을 모니터링하기 위한 종합적인 대시보드를 포함합니다.
봇 관리
관리자는 봇의 외형(이름, 아바타, 강조 색상, 테마)을 사용자 정의할 수 있으며, API에서 사용 가능한 모델을 직접 가져와 LLM 제공업체를 구성할 수 있습니다.
분석 및 내보내기
방문자 채팅은 visitorId 및 IP 주소별로 그룹화됩니다. 대시보드는 총 메시지 수와 활성 세션(최근 5분 이내의 고유 방문자)에 대한 통계 정보를 제공합니다. 채팅 로그는 CSV (Excel), JSON, 또는 PDF 형식으로 내보낼 수 있습니다.