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. Retrieval | 1 ~ 2일 |
3. Generation | 1일 |
4. 연결 (서비스) | 0.5일 |
5. 최적화 | 0.5일 |
6. Next.js 연동 | 1일 |
총 예상 개발 기간: 5~6일 (풀타임 기준)
(너가 혼자 한다면 1주 정도 템포)
📣 정리 요약
"처음부터 Layer별로 모듈화된, 확장 가능한, RAG 기반 문제 출제 시스템을 만든다."
✍️ 다음 액션
Step 1
✅ backend/ 구조 스캐폴딩하고
✅ main.py (FastAPI Hello World) 띄우는 걸로 시작할까?