프로젝트 목록

AI · Data Analysis

Featured

RAG-Based Product Support Chatbot

제품 매뉴얼 PDF를 검색해 근거와 함께 답변하는 RAG 챗봇입니다. Manual Search와 문맥 유지형 AI Assistant를 한 화면에서 제공해, 사용자가 제품 정보를 더 빠르고 신뢰도 높게 찾을 수 있도록 설계했습니다.

RAG-Based Product Support Chatbot

프로젝트 유형

AI · Data Analysis

진행 기간

2024.12 — 2024.12

진행 상태

완료

담당 역할

Full-stack Developer

프로젝트 구성

팀 프로젝트 · 4명

대표 여부

대표 프로젝트

Tech Stack

사용 기술

LangChainFAISSUpstage EmbeddingsOpenAI Assistants API

Key Highlights

핵심 성과

  • 01

    PDF 매뉴얼 기반의 RAG(Retrieval-Augmented Generation) 답변

  • 02

    OpenAI Assistant thread 기반의 문맥 유지형 대화

  • 03

    서비스 중에도 안전하게 수행되는 벡터 스토어 재생성

  • 04

    IndexedDB 기반 local-first 대화 저장

Project Story

상세 내용

제품 매뉴얼은 필요한 정보를 담고 있지만, 긴 문서와 복잡한 목차 때문에 사용자가 원하는 내용을 빠르게 찾기 어려운 경우가 많습니다.

Manual AI는 사용자가 자연어로 질문하면 매뉴얼 PDF에서 관련 내용을 검색하고, 이해하기 쉬운 답변과 함께 근거 페이지를 보여주는 제품 지원 챗봇입니다. 기본 지식 베이스는 Galaxy A35 매뉴얼로 구성했으며, 다른 제품 PDF로도 벡터 스토어를 다시 생성할 수 있도록 설계했습니다.

Key Features

  • PDF 매뉴얼 기반의 RAG(Retrieval-Augmented Generation) 답변
  • 답변별 문서 제목, 페이지, 발췌문 등 근거 정보 제공
  • 매뉴얼 검색과 AI Assistant 모드를 UI에서 즉시 전환
  • OpenAI Assistant thread 기반의 문맥 유지형 대화
  • 서비스 중에도 안전하게 수행되는 벡터 스토어 재생성
  • IndexedDB 기반 local-first 대화 저장

How It Works

Manual Search · RAG

사용자의 질문을 받으면 로컬 FAISS 벡터 스토어에서 관련 매뉴얼 문서를 검색합니다. 이후 Upstage LLM이 검색된 문맥을 기반으로 답변을 생성하며, 사용자는 답변과 함께 참조한 매뉴얼의 제목·페이지·발췌문을 확인할 수 있습니다.

검색에는 MMR(Maximal Marginal Relevance)을 적용해 관련성뿐 아니라 결과 간 다양성도 함께 고려했습니다.

AI Assistant

자유로운 대화가 필요한 상황을 위해 OpenAI Assistants API 기반의 AI Assistant 모드를 제공합니다. 브라우저에 저장된 thread ID를 활용해 이전 대화 흐름을 이어가므로, 사용자는 제품 사용 경험 전반을 자연스럽게 질문할 수 있습니다.

Reliable Vector Store Rebuild

벡터 스토어를 갱신할 때 기존 인덱스를 바로 덮어쓰지 않습니다. 새 인덱스를 staging directory에서 먼저 생성하고 검증한 뒤, 완료된 결과만 원자적으로 교체합니다.

이 방식으로 인덱스 생성 중에도 기존 RAG 기능은 유지되며, 작업 실패 시에는 이전 인덱스를 보존할 수 있습니다.

Privacy and Feedback

대화 기록과 Assistant thread ID는 서버가 아닌 브라우저 IndexedDB에 저장합니다. 서버에는 대화 내용을 별도로 보관하지 않아 local-first 사용자 경험을 지향했습니다.

답변 피드백은 JSON Lines 형식으로 기록됩니다. 축적된 데이터는 검색 결과 분석, 실패 사례 확인, 프롬프트 및 청킹 전략 개선 등 향후 RAG 품질 향상에 활용할 수 있습니다.

Architecture

Frontend (Vanilla JS + Parcel + Tailwind)
  └─ Chat UI / IndexedDB / Feedback UI
           │
           ├─ POST /chat
           │     └─ FAISS Retrieval → Upstage LLM → Sources
           │
           ├─ POST /assistant
           │     └─ OpenAI Assistant Thread
           │
           ├─ POST /feedback
           │     └─ feedback.jsonl
           │
           └─ POST /vectorstore/rebuild
                 └─ PDF Parse → Embedding → FAISS Index

My Contributions

주요 기여

  • FastAPI 기반 RAG 및 Assistant API 설계·구현
  • PDF 파싱, 텍스트 청킹, 임베딩, FAISS 검색 파이프라인 구축
  • 무중단 벡터 스토어 재생성 및 롤백 구조 설계
  • 대화 UI, IndexedDB 저장, 피드백 기능 구현

Related Links

관련 링크