생성형 AI 기반 RAG 개발자 과정
Session 24 · Day3 최종 프로젝트: 문서 업로드형 RAG 챗봇
생성형 AI 기반 RAG 개발자 과정

Day3 최종 프로젝트
문서 업로드형 RAG 챗봇

Session 24 / 33 — Day 3

오늘 만든 모든 조각을 하나의 서비스로

박수현 · (사)한국정보공학기술사회 · 2026

LLM 이론 · LangChain · ChromaDB CRUD · Agent — 4일 핸즈온
생성형 AI 기반 RAG 개발자 과정·Session 24 · Day3 최종 프로젝트: 문서 업로드형 RAG 챗봇출처: Day 3최종 프로젝트

완성 기능 체크리스트

📄 문서 관리 (CRUD)

  • ✅ PDF / TXT 업로드 (DOCX 확장 가능)
  • ✅ 문서 목록 조회
  • ✅ 문서 삭제

💬 대화

  • ✅ ChatGPT 기반 질의응답
  • SSE 스트리밍 답변
  • 출처(Source) 표시
  • Chat History 유지

🎯 목표: 개별 구현한 API 를 한 화면에서 동작하는 완결된 서비스로 통합.

생성형 AI 기반 RAG 개발자 과정·Session 24 · Day3 최종 프로젝트: 문서 업로드형 RAG 챗봇출처: Day 3최종 프로젝트

화면 ⇄ API ⇄ 서비스 통합

flowchart TB subgraph 화면 UP["업로드"]; LS["문서 목록"]; DEL["삭제"]; CH["질문/답변"] end UP -->|"POST /upload"| API LS -->|"GET /documents"| API DEL -->|"DELETE /documents/&lt;filename&gt;"| API CH -->|"POST /ask"| API API["Flask REST"] --> SVC["services<br/>vectorstore · qa"] SVC --> DB[("ChromaDB + uploads/")] style API fill:#fdcb6e22,stroke:#fdcb6e style SVC fill:#a29bfe22,stroke:#a29bfe style DB fill:#00b89422,stroke:#00b894

4개 화면 동작 → Flask REST(4개 API) → 서비스 계층 → ChromaDB+uploads/

생성형 AI 기반 RAG 개발자 과정·Session 24 · Day3 최종 프로젝트: 문서 업로드형 RAG 챗봇출처: Day 3최종 프로젝트

지금까지 구현한 구성요소의 총합

💡 4개 API + 서비스 계층 + 영속 저장 = 지금까지 구현한 구성요소의 총합.

📌 명칭 안내

  • 파일관리 예제(5.file_manager_restapi)는 /files 계열
  • 최종 프로젝트(13.document_qa)는 /documents 계열
  • 이 세션은 최종 프로젝트의 /upload·/documents·/ask 를 기준으로 한다.
생성형 AI 기반 RAG 개발자 과정·Session 24 · Day3 최종 프로젝트: 문서 업로드형 RAG 챗봇출처: Day 3최종 프로젝트

한 화면에 담기는 것 — 좌: 문서 / 우: 대화

final document QA chatbot UI

최종 문서 QA 챗봇 UI · 좌측 업로드·문서목록(삭제), 우측 질의응답·스트리밍·출처(Source) 표시

🔑 프론트엔드는 JSON 을 수신해 화면에 렌더링하며, 로직은 전부 백엔드에 위치한다.

생성형 AI 기반 RAG 개발자 과정·Session 24 · Day3 최종 프로젝트: 문서 업로드형 RAG 챗봇출처: Day 3최종 프로젝트

화면 영역 ⇄ 엔드포인트

┌──────────────┬─────────────────┐
│ 📄 문서       │ 💬 문서 QA      │
│ ┌──────────┐ │  Q: NVMe 가?    │
│ │ 끌어다놓기│ │  A: NVMe 는 …   │
│ └──────────┘ │    📎 nvme.pdf  │
│ nvme.pdf [x] │                 │
│ ssd.txt  [x] │ [질문 입력] [전송]│
└──────────────┴─────────────────┘

영역별 연결

  • 업로드 박스POST /upload
  • 문서 목록 + [x]GET /documents / DELETE
  • 질문 입력 → 답변POST /ask
  • 출처 칩 ← 응답의 sources

🔑 좌측 사이드바(업로드·목록·삭제)와 우측 채팅(스트리밍·출처)으로 구성.

생성형 AI 기반 RAG 개발자 과정·Session 24 · Day3 최종 프로젝트: 문서 업로드형 RAG 챗봇출처: Day 3최종 프로젝트

토큰 단위로 출력되는 SSE 스트리밍 답변

검색은 LangChain, 생성은 스트리밍

  • similarity_search(question, k=3) 로 근거 검색
  • OpenAI stream=True 로 토큰 단위 생성
  • SSE(data: ...\n\n)로 전송
  • 종료 시 sources[DONE] 전송
def generate():
    response = client.chat.completions.create(
        model="gpt-4o-mini", stream=True,
        messages=[...context + question...])
    for chunk in response:
        c = chunk.choices[0].delta.content
        if c:
            yield f"data: {json.dumps({'content': c})}\n\n"
    yield f"data: {json.dumps({'sources': sources})}\n\n"
    yield "data: [DONE]\n\n"

💡 동일한 답변이라도 체감 응답성이 크게 향상된다. 프론트엔드는 content 누적 → sources 표시 → [DONE] 종료 순으로 처리한다.

생성형 AI 기반 RAG 개발자 과정·Session 24 · Day3 최종 프로젝트: 문서 업로드형 RAG 챗봇출처: Day 3최종 프로젝트

학습 결과물 — 직접 구현 항목

항목 구현
OpenAI API 사용
Embedding 생성 · Vector Search
ChromaDB 영속
LangChain RAG Chain
PDF/TXT 업로드 (DOCX 확장 가능)
문서 목록 · 삭제 (CRUD)
질의응답 + 출처 표시
SSE 스트리밍 응답
Chat History (멀티턴 확장)
실제 RAG 웹서비스

💡 여기까지가 사내 문서검색 챗봇 한 세트다. 문서만 교체하면 실무에 바로 투입할 수 있다.

생성형 AI 기반 RAG 개발자 과정·Session 24 · Day3 최종 프로젝트: 문서 업로드형 RAG 챗봇출처: Day 3최종 프로젝트

내 서비스로 완성하기

핵심 (필수)

  • [ ] 내 분야 문서 3~5개 업로드 → 목록 확인
  • [ ] 5개 질문으로 출처가 정확한지 검증
  • [ ] 문서 1개 삭제 → 그 내용이 답에서 사라지는지 확인

확장 (옵션)

  • [ ] 답변이 토큰 단위로 흐르는지(스트리밍) 눈으로 확인
  • [ ] 후속 질문("그럼 ~는?")으로 Chat History 동작 확인
  • [ ] style.css 만 교체해 화면 디자인 바꾸기
생성형 AI 기반 RAG 개발자 과정·Session 24 · Day3 최종 프로젝트: 문서 업로드형 RAG 챗봇출처: Day 3최종 프로젝트

핵심 5가지

  1. 업로드·인덱싱·목록·삭제·질의응답을 한 서비스로 통합
  2. ✅ 4개 REST API + 서비스 계층 + 영속 저장의 합
  3. ✅ 프론트는 정적 파일(JSON 소비)만 담당하고, 로직은 백엔드에
  4. ✅ 답변은 SSE 스트리밍 + 출처 로 신뢰·체감응답성 확보
  5. ✅ 문서만 바꾸면 어떤 도메인이든 문서검색 챗봇
1 / 10

목차 — Session 24

키보드 단축키 (뷰어)

네비게이션

다음 슬라이드 Space
이전 슬라이드 PgUp
처음 / 끝Home End
목차M

화면

전체화면F
테마 전환D
글자 크게 / 작게+ -
원래 크기 (100%)=
도움말 (열기/닫기)H ?
닫기 (모든 오버레이)Esc
강의 종료 (메인으로)Q

키보드 단축키 (강사)

네비게이션

다음 슬라이드 Space
이전 슬라이드 PgUp
처음 / 끝Home End
목차 (Menu)M
전체화면F

화면

테마 전환D
도움말 (열기/닫기)H ?
닫기 (모든 오버레이)Esc
툴바 펼치기 / 접기[ ]
강의 종료 (메인으로)Q

화면 확대

글자 크게 / 작게+ -
원래 크기 (100%)=
돋보기 (마우스 따라 2× 확대)V

발표자 도구 (PPT 호환)

화이트 화면W ,
블랙 화면B .
레이저 포인터L
펜 모드 ON/OFFP
펜 색상1 2 3 4
펜 자국 지우기 (현재 슬라이드)E
펜 — 마지막 스트로크 취소 (Undo)Z
펜 — 다시 (Redo)R
⏰ 쉬는시간 타이머T
📱 노트뷰 QR (휴대폰 동기화)N

PDF / 종료

PDF 저장 (슬라이드)Ctrl+P
강의 종료 (메인으로)Q X