Skip to content

gy8879/rag-chatbot

Repository files navigation

RAG 챗봇 프로젝트

이 프로젝트는 Gradio를 사용한 RAG(Retrieval-Augmented Generation) 챗봇입니다.

주요 기능

  • 📄 문서 처리 (PDF, DOCX, TXT)
  • 🔍 OCR을 통한 이미지 텍스트 추출
  • 🖼️ 이미지 캡셔닝
  • 💬 대화형 챗봇 인터페이스
  • 🔍 벡터 데이터베이스를 통한 효율적인 검색
  • 🧠 대화 히스토리 저장 및 맥락 유지
  • 📝 대화 히스토리 관리 기능
  • 🔄 자동 시스템 초기화

새로운 기능 (v2.0)

🧠 대화 히스토리 시스템

  • 자동 히스토리 저장: 모든 대화가 자동으로 저장됩니다
  • 맥락 유지: 이전 대화를 참고하여 일관성 있는 답변 제공
  • 히스토리 관리: 대화 히스토리 조회 및 초기화 기능
  • 최근 3개 대화 참조: 메모리 효율성을 위한 최적화

🎯 스마트 검색 시스템

  • 질문 의도 분석: 키워드 기반으로 검색 범위 자동 결정
  • 문서 전용 검색: "문서 요약" 질문 시 문서만 검색
  • 이미지 전용 검색: "이미지 분석" 질문 시 이미지만 검색
  • 통합 검색: "모든 자료" 질문 시 문서+이미지 모두 검색

🤖 지능형 통합 챗봇

  • 자동 모드 선택: 질문 복잡도에 따라 RAG 또는 Agent 모드 자동 선택
  • RAG 모드: 빠른 검색 및 응답 (단순한 질문)
  • Agent 모드: 복잡한 작업 단계별 처리 (복잡한 질문)
  • 사용자 선택: 원하는 모드를 직접 선택 가능

🔄 개선된 시스템

  • 자동 초기화: 앱 시작 시 자동으로 시스템 초기화
  • 향상된 프롬프트: 히스토리를 포함한 더 정확한 답변 생성
  • 에러 처리: 더 안정적인 에러 핸들링

설치 방법

  1. 가상환경 활성화:
# Windows
venv\Scripts\activate

# Linux/Mac
source venv/bin/activate
  1. 의존성 설치:
pip install -r requirements.txt
  1. Tesseract OCR 설치:

  2. API 키 설정 (선택사항):

    • .env 파일에 다음 중 하나 추가:
      • OPENAI_API_KEY=your_api_key_here (OpenAI 사용 시)
      • HUGGINGFACE_API_KEY=your_api_key_here (HuggingFace 사용 시)

사용 방법

python app.py

대화 히스토리 사용법

  1. 자동 히스토리: 모든 대화가 자동으로 저장됩니다
  2. 히스토리 조회: "📝 대화 히스토리 보기" 버튼 클릭
  3. 히스토리 초기화: "🗑️ 대화 히스토리 초기화" 버튼 클릭
  4. 맥락 활용: "이전 대화에서 언급된 내용에 대해 더 자세히 설명해주세요" 같은 질문 가능

스마트 검색 사용법

  1. 문서 전용 질문:

    • "업로드된 문서들의 주요 내용을 요약해주세요"
    • "PDF 파일에서 정보를 찾아주세요"
    • "텍스트 문서를 분석해주세요"
  2. 이미지 전용 질문:

    • "이미지에서 어떤 내용이 보이나요"
    • "사진을 분석해주세요"
    • "스크린샷의 내용을 설명해주세요"
  3. 통합 질문:

    • "업로드된 모든 자료를 요약해주세요"
    • "문서와 이미지를 모두 참고해서 답변해주세요"

통합 챗봇 사용법

  1. 자동 모드 (권장):

    • 질문 복잡도에 따라 자동으로 최적 모드 선택
    • "업로드된 문서들의 주요 내용을 요약해주세요" → RAG 모드
    • "문서를 분석하고 핵심 포인트를 추출해주세요" → Agent 모드
  2. 수동 모드 선택:

    • RAG 모드: 빠른 응답이 필요한 단순한 질문
    • Agent 모드: 복잡한 분석이 필요한 질문
  3. 모드별 특징:

    • RAG 모드: 빠른 검색, 출처 정보 표시
    • Agent 모드: 단계별 실행 과정, 상세한 분석

프로젝트 구조

RAGtest/
├── app.py                 # 메인 Gradio 앱 (히스토리 + Agent 기능)
├── rag_agent.py          # ReAct DocStore Agent
├── document_processor.py  # 문서 처리 모듈
├── image_processor.py     # 이미지 처리 모듈
├── rag_system.py         # RAG 시스템 핵심 (히스토리 관리)
├── utils.py              # 유틸리티 함수들
├── data/                 # 문서 저장소
│   └── chromadb/        # 벡터 데이터베이스
├── uploads/              # 업로드된 파일들
└── requirements.txt      # 의존성 목록

기술 스택

  • RAG 아키텍처: Retriever + Chain + Memory
  • 벡터 데이터베이스: ChromaDB
  • 임베딩 모델: SentenceTransformer
  • LLM: OpenAI GPT, Ollama, HuggingFace
  • 웹 인터페이스: Gradio
  • 문서 처리: PyPDF2, python-docx
  • 이미지 처리: Tesseract OCR, Transformers

학습 내용

이 프로젝트는 다음 개념들을 학습하고 구현합니다:

  1. Retriever: 벡터 검색을 통한 관련 문서 검색
  2. Chain: RAG 파이프라인 구성
  3. Memory: 대화 히스토리 관리
  4. Vector Database: ChromaDB를 통한 임베딩 저장
  5. Prompt Engineering: 맥락을 고려한 프롬프트 설계

About

RAG 기반 지능형 챗봇 - 문서 및 이미지 분석, 대화 히스토리 관리, ReAct Agent 기능을 제공하는 AI 문서기반 챗봇 시스템

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors