Skip to content

Leejaewang03/smart-study-assistant

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Smart Study Assistant

PDF 기반 RAG 학습 보조 서비스

사용자가 PDF 교재를 업로드하면,

RAG(Retrieval-Augmented Generation) 기반으로 문서 내용을 검색하고,

GPT를 활용하여 질문에 답변하는 학습 보조 AI 서비스.

또한 이미지/표/도식 질문 시에는

필요한 페이지에만 Vision API를 호출하는 Lazy Vision 구조를 적용하여

비용을 절감하면서도 시각 자료 기반 답변을 제공한다.


주요 기능

  • PDF 업로드

  • PDF 텍스트 추출

  • 페이지 이미지 추출

  • Chunking

  • Embedding 생성

  • ChromaDB 벡터 검색

  • GPT 기반 질의응답

  • PDF 페이지 출처 제공

  • PDF 원문 페이지 바로 이동

  • Lazy Vision 기반 이미지 분석

  • 문서 삭제 기능


전체 흐름

PDF 처리 흐름

PDF 업로드

→ PDF 저장

→ PDF 전처리

→ 텍스트 / 표 / 이미지 메타데이터 추출

→ Chunking

→ Embedding 생성

→ Vector DB 저장

질문 처리 흐름

사용자 질문

→ 질문이 이미지/표/도식 질문인지 판단

→ RAG로 관련 텍스트 chunk 검색

→ 관련 chunk의 page 추출

→ 이미지 질문이면 해당 page_visual 확인

→ vision_summary 없으면 Vision API 호출 후 저장

→ vision_summary 있으면 재사용

→ 텍스트 context + vision context 같이 GPT에게 전달

→ 최종 답변 + 출처 페이지 제공


차별점

1. PDF 기반 RAG 학습 보조 서비스

단순 챗봇이 아닌 PDF 문서를 기반으로 답변.

2. 답변마다 PDF 페이지 출처 제공

GPT hallucination 감소.

3. PDF Viewer로 원문 페이지 바로 이동

출처 페이지 링크 제공.

4. 표 구조와 페이지 정보를 유지한 전처리

페이지 단위 정보 유지.

5. 이미지 전체 분석 대신 이미지 메타데이터 우선 저장

비용 절감 구조.

6. 필요할 때만 Vision API를 호출하는 Lazy Vision 구조

이미지 질문 시에만 Vision 사용.

7. 로컬 임베딩 모델 사용으로 비용 절감

sentence-transformers 사용.


기술 스택

Frontend

  • Next.js

  • Tailwind CSS

Backend

  • FastAPI

  • LangChain

AI

  • OpenAI GPT-4o-mini

  • sentence-transformers

Database

  • MySQL

  • ChromaDB

Storage

  • Local Storage

  • Cloudflare R2 (예정)


역할

MySQL

사용자, 문서 정보, 채팅 기록, PDF 메타데이터 저장

ChromaDB

chunk embedding 저장 및 유사 문서 검색

Cloudflare R2

PDF 원본 저장소

OpenAI GPT API

최종 답변 생성

sentence-transformers

문서 및 질문 embedding 생성

StorageService

로컬 저장소와 R2 저장소를 교체 가능하게 만드는 계층


현재 구현 완료

  • PDF 업로드

  • PDF 텍스트 추출

  • Chunking

  • Embedding 저장

  • ChromaDB 검색

  • GPT 기반 답변 생성

  • 페이지 출처 제공

  • 페이지 이미지 추출

  • Lazy Vision 구조

  • 문서 삭제 기능

  • Frontend UI


실행 방법

  1. Backend 가상환경 생성 python3 -m venv venv 가상환경 실행 source venv/bin/activate 패키지 설치 pip install fastapi uvicorn python-multipart sqlalchemy pymysql python-dotenv pip install pymupdf pip install chromadb sentence-transformers pip install langchain langchain-community pip install openai 서버 실행 uvicorn main:app --reload

  1. Frontend 패키지 설치 npm install 실행 npm run dev

  1. MySQL Docker 실행 docker compose up -d 종료 docker compose down DB 완전 초기화 docker compose down -v

  1. ChromaDB 초기화 rm -rf chroma_db mkdir chroma_db

환경 변수 backend/.env OPENAI_API_KEY=YOUR_API_KEY DATABASE_URL=mysql+pymysql://smart_user:smart_password@localhost:3307/smart_study

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages