소개
지난 포스팅에 이어 RAG(Retrieval-Augmented Generation, 검색증강생성) 기반 챗봇을 개선해 보았다. 목표는 “현장에서도 바로 사용할 수 있는 실용적 챗봇”을 만드는 데에 있다.
이에 따라 다음과 같은 기능을 추가 구현하였다.
🧩 추가된 요구사항
1. Slack 앱 연동
PC뿐 아니라 현장에서도 모바일 Slack 앱을 통해 챗봇을 바로 사용할 수 있도록 구성하였다. 별도 앱 설치나 로그인 절차 없이 기존 Slack 채널에서 질문과 답변이 가능해졌다.
2. Google Drive 연동
지식 데이터의 저장소로 Google Drive를 활용하였다. 관련 문서를 클라우드에 업로드하면, 챗봇이 이를 자동으로 인식하여 벡터 데이터로 처리하게 된다.
3. FAQ 자동생성 기능
사용자의 질문 내역을 수집하여 자주 묻는 질문(FAQ)을 자동으로 Google Sheets에 정리하는 기능을 추가하였다. 반복되는 질문을 파악하고 문서화하는 데에 매우 유용하다.
🛠 사용한 도구
구성 요소
역할
Google Drive
지식 문서 저장소
Pinecone Vector DB
벡터 검색용 임베딩 저장소
Slack
사용자와의 인터페이스
OpenAI (AI Agent)
자연어 응답 생성 엔진
Google Sheets
FAQ 저장 및 관리 도구
🔁 전체 워크플로우 구성
📥 데이터 로더 워크플로우
Google Drive에 새 문서가 업로드되거나 업데이트 되면, 이를 자동 감지하여 벡터 임베딩한 후 Pinecone에 저장하는 흐름이다.
Pinecone에는 지식데이터가 다음과 같이 저장되어 있다.
🔍 지식 검색 워크플로우
사용자가 Slack에 질문을 입력하면, 챗봇이 해당 질문과 관련된 내용을 Pinecone에서 검색하고, OpenAI를 통해 자연어로 응답을 생성한다.
📄 FAQ 업데이트 워크플로우
Slack에서의 대화 내용을 수집하여 자주 반복되는 질문과 그에 대한 답변을 Google Sheets에 자동으로 기록한다.
💬 실제 사용 예시
가공공구 관련 문서를 Google Drive에 업로드한 후, Slack을 통해 질문을 입력해본 결과, 챗봇이 정확하고 신속하게 답변을 반환하였다.
특히 휴대폰을 통한 현장 접근성이 좋아져 실무 적용 가능성이 높아졌음을 확인할 수 있었다.
이번에는 분량이 많은 국민취업지원제도업무매뉴얼(2025.1).pdf (270쪽)을 입력하고 질문을 던져봤다. 역시 정확하게 대답하는 것을 확인할 수 있었다.
🚧 앞으로의 과제
하지만 아직도 개선해야 할 부분은 남아있다.
세션 기반 대화 컨텍스트 유지
Simple Memory 노드를 통해 대화 흐름을 유지하려고 시도하였으나, 세션 ID 생성 로직이 없어 오류가 발생하였다. 이에 대한 수정이 필요하다.온프레미스 벡터 DB 고려
현재 Pinecone을 사용하고 있으나, 보안을 강화하기 위해 자체 호스팅 가능한 벡터DB(예: Qdrant, Weaviate 등)로의 전환도 고려 중이다.
도움 받은 글
벡터DB와 n8n의 chat node를 활용한 맞춤형 챗봇의 시작, 이재엽님 게시글
스터디장 사례발표, 박정기님
스터디장 미니강의, 허세임님
🧠 마무리하며
이번 개선을 통해 챗봇은 단순한 기술 데모를 넘어서, 현장에서 실질적으로 활용 가능한 RAG 시스템으로 발전하게 되었다.
Slack, Google Drive, Google Sheets 등 특별히 어렵지 않은 친숙한 도구들과 연동했으니 사용자 입장에서도 도입과 사용을 고려해 볼 것 같다. 기업에 적용하면서 더 보강해보려고 한다.