Action Plan - RAG, Fine-tuning, and more


🛠️ [전체 Action Plan] - "RAG 기반 문제 출제 시스템"


🏗️ 1단계: 프로젝트 초기 세팅

📂 목표

  • 기본 폴더 구조 잡기
  • FastAPI 실행되게 만들기

ToDo List

  • backend/ 폴더 생성

  • FastAPI main.py 생성 (Hello World)

  • 폴더 구조 scaffold

    backend/
      ├── api/
      ├── retriever/
      ├── generator/
      ├── schemas/
      ├── services/
      └── config.py
    
  • requirements.txt 작성 (fastapi, uvicorn, torch, transformers, faiss-cpu 등)


🏛️ 2단계: Retrieval 모듈 구축

📂 목표

  • 기출 문제를 벡터로 변환해서 저장하고, 검색할 수 있게

ToDo List

  • retriever/embedder.py : 텍스트 → 벡터 변환기 (Sentence Transformer, InstructorEmbedding 등)
  • retriever/vectordb.py : FAISS 벡터DB 핸들러 (save/load/search 기능)
  • Vector DB 초기화 스크립트 작성 (dataset 적재)
  • /search API 만들기 (FastAPI)

🧠 3단계: Generation 모듈 구축

📂 목표

  • 검색된 문맥을 받아 모델로 자연어 생성하기

ToDo List

  • generator/prompt_builder.py : context를 prompt로 정리
  • generator/llm_inference.py : 모델 로딩 및 inference
  • /generate API 만들기 (FastAPI)
  • Prompt 템플릿 관리 (프롬프트 문자열 따로 저장)

🔗 4단계: Retrieval + Generation 연결 (Service Layer)

📂 목표

  • 질문이 들어오면 검색 → 프롬프트 조합 → 답변 생성 → 반환

ToDo List

  • services/rag_pipeline.py : 전체 흐름 구현
    • 검색 → prompt 조합 → 모델 추론
  • /ask API 하나로 통합 (질문하면 답변까지 한방에)

📈 5단계: Infra + 최적화

📂 목표

  • 서버 성능/관리 최적화

ToDo List

  • /health API 추가 (서버 상태 확인)
  • GPU / CPU 자동 선택
  • 모델 warm-up 처리 (초기 로딩 최적화)
  • Retrieval cache (자주 검색되는 질문 미리 저장 - Redis 옵션)

🎨 6단계: 프론트엔드 (Next.js) 연동 준비

📂 목표

  • UI/UX에서 API 호출해서 문제 생성 테스트

ToDo List

  • /api/ask 엔드포인트 호출하는 Next.js 페이지 생성
  • 사용자 입력 폼 + 답변 표시
  • (옵션) 채팅 UI 형태로 구성 (shadcn-ui 추천)

🧠 전체 계획 구조화 (한 눈에)

1. 기본 FastAPI 세팅
2. Retriever 구축 (embedding + search)
3. Generator 구축 (prompt + model inference)
4. RAG 파이프라인 구성
5. Infra 최적화 (cache, healthcheck)
6. Next.js 프론트에서 API 연동

🚀 Development Milestone (시간 예시)

단계예상 소요
1. 초기 세팅0.5 ~ 1일
2. Retrieval1 ~ 2일
3. Generation1일
4. 연결 (서비스)0.5일
5. 최적화0.5일
6. Next.js 연동1일

총 예상 개발 기간: 5~6일 (풀타임 기준)
(너가 혼자 한다면 1주 정도 템포)


📣 정리 요약

"처음부터 Layer별로 모듈화된, 확장 가능한, RAG 기반 문제 출제 시스템을 만든다."


✍️ 다음 액션

Step 1
✅ backend/ 구조 스캐폴딩하고
✅ main.py (FastAPI Hello World) 띄우는 걸로 시작할까?


Was this page helpful?