RAG2026 · LangGraph 기반 Modular RAG
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03이번 차시에서 배우는 것
- 041. 생성형 AI(LLM)는 어떻게 동작하나?
- 052. ChatGPT는 정말 똑똑한가?
- 063. RAG vs 일반 LLM: 무엇이 다를까?
- 074. RAG의 3단계 흐름 이해하기
- 085. 프롬프트 엔지니어링 기초
- 096. RAG에서의 프롬프트 엔지니어링
- 107. 이 차시에서 배운 내용 정리
- 11이 차시의 학습 활동
- 12체크리스트와 과제
- 13실습 1 — 생성형 AI와 RAG의 관계 실습 따라 하기
- 14퀴즈 1 — 근거 없는 답을 막는 지시문 세 줄 만들기
- 15퀴즈 2 — 글자 수를 토큰 수로 단정하지 않기
- 16정리
- 17확인문제와 해답
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03이번 차시에서 배우는 것
- 041. RAG 전체 파이프라인 이해하기
- 052. 준비 단계 상세 설명
- 063. 실행 단계 상세 설명
- 074. 전체 프로세스 다시 한 번 정리
- 085. 왜 각 단계가 중요한가?
- 096. 일반 검색과의 차이점
- 107. 실제 코드 실행 흐름 미리보기
- 11이 차시의 학습 활동
- 12체크리스트와 과제
- 13실습 1 — RAG 기본 구조 깊이 있게 이해하기 실습 따라 하기
- 14퀴즈 1 — 문서가 바뀌었을 때 다시 할 단계 고르기
- 15퀴즈 2 — 검색어가 글자 그대로 들어 있는지 확인하기
- 16정리
- 17확인문제와 해답
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03이번 차시에서 배우는 것
- 041. Python 설치하기
- 052. Virtual Environment (가상환경) 이해하기
- 063. 가상환경 만들기
- 074. 필수 라이브러리 설치
- 085. 프로젝트 폴더 구조 구성
- 096. IDE 설정 — VSCode
- 107. 첫 번째 테스트 코드 작성
- 118. 문제 해결 가이드
- 12이 차시의 학습 활동
- 13체크리스트와 과제
- 14실습 1 — 실습 환경 구축 실습 따라 하기
- 15퀴즈 1 — 차시 폴더 기준 데이터 경로 돌려주기
- 16퀴즈 2 — API 키를 환경 변수에서만 읽기
- 17정리
- 18확인문제와 해답
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03이번 차시에서 배우는 것
- 041. LangChain이란?
- 052. Document Loader — 문서 읽기
- 063. Text Splitter — 문서 분할
- 074. 첫 번째 LangChain 프로젝트
- 085. Prompt Template 사용하기
- 096. RAG 파이프라인 구축 준비
- 10이 차시의 학습 활동
- 11체크리스트와 과제
- 12실습 1 — LangChain 입문 실습 따라 하기
- 13퀴즈 1 — 본문과 출처로 Document 모양 딕셔너리 만들기
- 14퀴즈 2 — 템플릿 빈칸에 문서와 질문 채우기
- 15정리
- 16확인문제와 해답
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03이번 차시에서 배우는 것
- 041. 왜 문서 로딩부터 배울까?
- 052. Document 객체 — 모든 것의 기본 단위
- 063. 문서 형식별 로더 알아보기
- 074. 실습 ① — 텍스트 파일 읽기
- 085. 실습 ② — PDF 읽기
- 096. 실습 ③ — 로딩 결과 검증하기
- 107. 실습 ④ — metadata 다듬기
- 118. 실습 ⑤ — 폴더 전체 읽기
- 129. 자주 겪는 문제와 해결법
- 1310. 이번 차시 실습 정리
- 14체크리스트와 과제
- 15실습 1 — 문서 로딩 실습 실습 따라 하기
- 16퀴즈 1 — 쪽 번호가 붙은 Document 딕셔너리 만들기
- 17퀴즈 2 — 본문이 너무 짧은 페이지 골라내기
- 18정리
- 19확인문제와 해답
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03이번 차시에서 배우는 것
- 041. 왜 문서를 잘라야 할까?
- 052. chunk_size — 얼마나 크게 자를까?
- 063. chunk_overlap — 왜 겹쳐야 할까?
- 074. separators — 아무 데나 자르면 안 된다
- 085. 실습 ① — 기본 분할 해보기
- 096. 실습 ② — overlap을 눈으로 확인하기
- 107. 실습 ③ — chunk_size 비교 실험
- 118. 실습 ④ — 내 문서에 맞는 값 찾기
- 129. 자주 겪는 문제와 해결법
- 1310. 이번 차시 완성 코드
- 14체크리스트와 과제
- 15실습 1 — 텍스트 분할 이해 실습 따라 하기
- 16퀴즈 1 — 이웃 조각의 겹침 확인하기
- 17퀴즈 2 — 조각마다 chunk_id 붙이기
- 18정리
- 19확인문제와 해답
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03이번 차시에서 배우는 것
- 041. 오늘은 왜 특별한가?
- 052. 전체 구조 다시 보기
- 063. 새로 배우는 것 ① — 임베딩과 벡터 저장소
- 074. 새로 배우는 것 ② — 근거 기반 프롬프트
- 085. 실습 ① — 인덱싱 만들기
- 096. 실습 ② — 검색만 먼저 확인하기
- 107. 실습 ③ — 답변 생성 붙이기
- 118. 실행 결과 확인
- 129. 필수 검증 — 4가지 테스트
- 1310. 자주 막히는 지점
- 14체크리스트와 과제
- 15실습 1 — 첫 번째 RAG 실습 실습 따라 하기
- 16퀴즈 1 — 자료가 없을 때 거절 문장 돌려주기
- 17퀴즈 2 — 인덱스는 한 번만 만들고 질문만 반복하기
- 18정리
- 19확인문제와 해답
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03이번 차시에서 배우는 것
- 041. 8차시에서 놓친 질문 하나
- 052. 임베딩이란 무엇인가
- 063. 코사인 유사도 — 가까움을 재는 자
- 074. 실습 ① — 벡터를 직접 눈으로 보기
- 085. 실습 ② — 유사도 직접 재보기
- 096. 실습 ③ — 내 기준선 찾기
- 107. 임베딩 모델 고르기
- 118. 임베딩 관점에서 검색 실패 진단하기
- 129. 자주 하는 오해
- 1310. 정리 — 8차시 코드 다시 보기
- 14체크리스트와 과제
- 15실습 1 — 임베딩 이해 실습 따라 하기
- 16퀴즈 1 — 임계값으로 관련 여부 판단하기
- 17퀴즈 2 — 모델이 바뀌면 인덱스 다시 만들기
- 18정리
- 19확인문제와 해답
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03이번 차시에서 배우는 것
- 041. 9차시가 남긴 숙제
- 052. 인덱스 — 전부 뒤지지 않는 기술
- 063. 실습 ① — 인덱스 만들고 저장하기
- 074. 실습 ② — 불러와서 재사용하기
- 085. 실습 ③ — 점수까지 확인하는 검색
- 096. 실습 ④ — 문서 추가와 삭제
- 107. 저장소 종류와 선택 기준
- 118. 실습 ⑤ — 8차시 코드 개선하기
- 129. 자주 겪는 문제
- 1310. 정리 — 인덱싱 흐름 한눈에
- 14체크리스트와 과제
- 15실습 1 — 벡터저장소 이해 실습 따라 하기
- 16퀴즈 1 — 있으면 불러오고 없으면 만들기
- 17퀴즈 2 — 거리 점수를 기준과 바르게 비교하기
- 18정리
- 19확인문제와 해답
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03이번 차시에서 배우는 것
- 041. 왜 Retriever로 감싸서 쓸까?
- 052. 검색 방식 세 가지
- 063. Top-K를 몇으로 할까?
- 074. 실습 ① — Retriever 만들고 비교하기
- 085. 실습 ② — Top-K 실험
- 096. 실습 ③ — metadata 필터로 범위 좁히기
- 107. 실습 ④ — 문맥 조립하기
- 118. 오늘의 완성 코드
- 129. 자주 겪는 문제
- 13체크리스트와 과제
- 14실습 1 — Retriever 기초 실습 실습 따라 하기
- 15퀴즈 1 — 조각에 [1]부터 번호 붙여 문맥 만들기
- 16퀴즈 2 — 정답이 3위 안이면 k를 늘리지 않기
- 17정리
- 18확인문제와 해답
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03이번 차시에서 배우는 것
- 041. 왜 실패부터 공부할까?
- 052. RAG 4대 실패 유형
- 063. 진단의 핵심 기준 — 딱 하나만 기억하세요
- 074. 증상 → 원인 진단표
- 085. 실습 ① — 진단 함수 만들기
- 096. 실습 ② — 일부러 무너뜨리기
- 107. 실습 ③ — 실패 사례 목록 만들기
- 118. 실습 ④ — 실패율 측정하기
- 129. 진단할 때 빠지기 쉬운 함정
- 13체크리스트와 과제
- 14실습 1 — RAG 품질 문제 실습 따라 하기
- 15퀴즈 1 — 조각에 정답이 있으면 생성, 없으면 검색
- 16퀴즈 2 — 네 가지 실패 유형 중 하나 고르기
- 17정리
- 18확인문제와 해답
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03이번 차시에서 배우는 것
- 041. 프롬프트 한 줄의 차이
- 052. RAG 프롬프트 4단 구조
- 063. 규칙 설계 — 무엇을 넣을까?
- 074. 실습 ① — 프롬프트 파일 분리
- 085. 실습 ② — 프롬프트 A/B 비교
- 096. 실습 ③ — 출처 인용 검증하기
- 107. 실습 ④ — 개선 효과 측정
- 118. 자주 겪는 문제
- 129. 오늘의 완성 코드
- 13체크리스트와 과제
- 14실습 1 — 프롬프트 최적화 실습 따라 하기
- 15퀴즈 1 — 인용 번호가 조각 개수 안인지 검사
- 16퀴즈 2 — 버전 이름으로 프롬프트 틀 고르기
- 17정리
- 18확인문제와 해답
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03이번 차시에서 배우는 것
- 041. 왜 감으로 하면 안 될까?
- 052. 비교 실험의 4가지 원칙
- 063. 실습 ① — 자동 측정 도구 만들기
- 074. 실습 ② — 기준선 측정
- 085. 실습 ③ — 변수 하나씩 바꾸기
- 096. 결과 종합 — 최종 비교표
- 107. 실습 ④ — 결정 사항 기록하기
- 118. 실습 ⑤ — 남은 실패 분석
- 129. 실험할 때 자주 하는 실수
- 13체크리스트와 과제
- 14실습 1 — 성능 비교 실습 실습 따라 하기
- 15퀴즈 1 — 바뀐 설정이 둘 이상이면 결론 보류
- 16퀴즈 2 — 같은 정답률이면 토큰 적은 설정 고르기
- 17정리
- 18확인문제와 해답
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03이번 차시에서 배우는 것
- 041. 지금 코드의 문제
- 052. 목표 구조 — 4개 모듈
- 063. 실습 ① — config.py
- 074. 실습 ② — indexer.py
- 085. 실습 ③ — rag.py (핵심)
- 096. 예외 처리 — 앱이 죽지 않게
- 107. 실습 ④ — app.py (터미널 버전)
- 118. 실습 ⑤ — Streamlit 웹 화면 (선택)
- 129. 자주 겪는 문제
- 1310. 모듈 분리가 3부로 이어지는 방식
- 14체크리스트와 과제
- 15실습 1 — 기본 RAG 앱 만들기 실습 따라 하기
- 16퀴즈 1 — 답과 출처를 함께 담은 딕셔너리 돌려주기
- 17퀴즈 2 — 빈 질문이면 검색하지 않고 안내만
- 18정리
- 19확인문제와 해답
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03이번 차시에서 배우는 것
- 041부에서 배운 핵심 용어 총정리
- 051. 왜 여기서 한 번 멈출까?
- 062. 1부 전체 지도
- 073. 반드시 챙겨갈 5가지
- 084. 실습 ① — 백지 재구성
- 095. 실습 ② — 미니과제 (30분)
- 106. 자가진단 — 2부로 넘어가도 될까?
- 117. 1부에서 남긴 자산 확인
- 128. 2부 예고 — 무엇이 달라지나
- 131부 최종 체크리스트
- 14체크리스트와 과제
- 15실습 1 — 1부 종합정리 실습 따라 하기
- 16퀴즈 1 — 문서가 바뀔 때만 하는 준비 단계 고르기
- 17퀴즈 2 — 자료가 없을 때 거절 문장 돌려주기
- 18정리
- 19확인문제와 해답
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03이번 차시에서 배우는 것
- 0416차시까지의 RAG, 뭐가 문제일까?
- 05그래서 뭐가 필요한가? → Graph!
- 06Graph가 무엇인가? (쉽게 설명)
- 07Node와 Edge 이해하기
- 08State = "노드들이 공유하는 메모판"
- 09실제 코드로 만들어보기
- 10조건부 분기가 있는 Graph 만들기
- 11LangGraph 설치하기
- 12Graph를 그림으로 보기
- 13정리: 1부와의 차이점
- 14왜 이게 중요한가?
- 15체크리스트와 과제
- 16실습 1 — LangGraph 입문 실습 따라 하기
- 17퀴즈 1 — 바꾼 칸만 돌려주는 인사 노드
- 18퀴즈 2 — 조건에 따라 다음 노드 이름 고르기
- 19정리
- 20확인문제와 해답
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03이번 차시에서 배우는 것
- 041. 왜 State라는 개념이 필요할까?
- 052. State — 하나의 공유 공책
- 063. State의 동작 규칙 4가지
- 074. 실습 ① — State 정의하고 흐름 보기
- 085. Reducer — 덮어쓰지 않고 쌓기
- 096. 실습 ② — Reducer 비교 실험
- 107. RAG용 State 설계하기
- 118. 실습 ③ — RAGState 완성
- 129. 실습 ④ — State 흐름 추적하기
- 1310. 자주 겪는 문제
- 14체크리스트와 과제
- 15실습 1 — State 이해 실습 따라 하기
- 16퀴즈 1 — 덮어쓰기와 이어 붙이기 견주기
- 17퀴즈 2 — question은 두고 query만 바꾸기
- 18정리
- 19확인문제와 해답
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03이번 차시에서 배우는 것
- 041. 노드는 특별한 것이 아닙니다
- 052. 왜 굳이 함수를 쪼갤까?
- 063. 좋은 노드의 4가지 조건
- 074. RAG를 어떻게 나눌까?
- 085. 실습 ① — Retrieve 노드 만들기
- 096. 실습 ② — Generate 노드 만들기
- 107. 실습 ③ — Fallback 노드 만들기
- 118. 노드 명세서 만들기
- 129. 자주 하는 실수
- 1310. 노드를 이어서 돌려보기
- 14체크리스트와 과제
- 15실습 1 — Node 이해 실습 따라 하기
- 16퀴즈 1 — 지어내지 않고 안내만 하는 fallback 노드
- 17퀴즈 2 — 문서 리스트만 돌려주는 검색 노드
- 18정리
- 19확인문제와 해답
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03이번 차시에서 배우는 것
- 041. 노드가 부품이라면 Edge는 설계도
- 052. Edge의 세 가지 형태
- 063. 분기 함수 작성 규칙 4가지
- 074. 실습 ① — 19차시 if문을 Edge로 옮기기
- 085. 실습 ② — 그래프 구조 눈으로 보기
- 096. 루프 — 되돌아가는 Edge
- 107. 실습 ③ — 무한루프 체험하기
- 118. Edge 문법 정리
- 129. 설계는 표로 먼저
- 13체크리스트와 과제
- 14실습 1 — Edge 이해 실습 따라 하기
- 15퀴즈 1 — 상한을 먼저 보는 재시도 분기
- 16퀴즈 2 — 문서 유무로 ok와 empty 고르기
- 17정리
- 18확인문제와 해답
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03이번 차시에서 배우는 것
- 041. 왜 가짜 데이터로 먼저 만들까?
- 052. 그래프 만드는 4단계
- 063. 실습 ① — State와 더미 노드
- 074. 실습 ② — 노드 단독 테스트
- 085. 실습 ③ — 그래프 조립
- 096. invoke vs stream
- 107. 실습 ④ — 세 가지 경로 모두 확인하기
- 118. 그래프 디버깅 4가지 기법
- 129. 실습 ⑤ — 구조를 이미지로 저장
- 1310. 자주 겪는 문제
- 14체크리스트와 과제
- 15실습 1 — 첫 번째 LangGraph 실습 실습 따라 하기
- 16퀴즈 1 — '없는' 질문에 검색 실패를 내는 더미 노드
- 17퀴즈 2 — 통과·상한·재시도 순으로 가르는 판단 함수
- 18정리
- 19확인문제와 해답
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03이번 차시에서 배우는 것
- 041. 오늘 할 일은 딱 하나
- 052. 왜 그래프로 바꾸나 — 구체적 비교
- 063. 실습 ① — 코드 매핑 확인
- 074. 실습 ② — 그래프 완성
- 085. 실습 ③ — 단계별로 붙이기
- 096. 실습 ④ — 회귀 테스트
- 107. 실습 ⑤ — 흐름 확인
- 118. 3부에서 붙일 자리 미리 보기
- 129. 자주 겪는 문제
- 133부 미리보기
- 14여기까지의 성과
- 15체크리스트와 과제
- 16실습 1 — RAG를 Graph로 바꾸기 실습 따라 하기
- 17퀴즈 1 — 예전과 같은 키를 돌려주는 그래프 ask
- 18퀴즈 2 — 문서 유무로 다음 노드 이름 고르기
- 19정리
- 20확인문제와 해답
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03이번 차시에서 배우는 것
- 041. 22차시 시스템의 한계
- 052. 왜 한 덩어리로는 안 될까?
- 063. Modular RAG의 3+2 모듈
- 074. 모듈 간 계약 (인터페이스)
- 085. 3부에서 완성할 최종 구조
- 096. 3부 로드맵
- 107. 모듈화의 진짜 이득
- 118. 흔한 오해 걷어내기
- 129. 실습 — 내 시스템 설계하기
- 13체크리스트와 과제
- 14실습 1 — Modular RAG 개념 실습 따라 하기
- 15퀴즈 1 — 모듈 계약 표를 딕셔너리로 만들기
- 16퀴즈 2 — 답은 고치지 않고 판정만 돌려주는 Verifier
- 17정리
- 18확인문제와 해답
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03이번 차시에서 배우는 것
- 041. 왜 검색을 가장 먼저 독립시킬까?
- 052. 좋은 Retriever Node의 4가지 설계 원칙
- 063. 실습 ① — Retriever Node 완성
- 074. 실패 사유를 구분하는 이유
- 085. 실습 ② — 단독 테스트
- 096. 실습 ③ — 점진적 확대 전략
- 107. 실습 ④ — 그래프에 연결
- 118. 입출력 명세 문서화
- 129. 자주 겪는 문제
- 13체크리스트와 과제
- 14실습 1 — Retriever Node 분리 실습 따라 하기
- 15퀴즈 1 — 점수로 검색 성공과 실패 이유 가르기
- 16퀴즈 2 — 빈 검색어면 검색 없이 empty_query 돌려주기
- 17정리
- 18확인문제와 해답
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03이번 차시에서 배우는 것
- 041. 생성 모듈이 따로 있어야 하는 이유
- 052. Generator Node의 4가지 설계 포인트
- 063. 실습 ① — Generator Node 완성
- 074. 근거가 없으면 LLM을 부르지 않는다
- 085. 실습 ② — 단독 테스트
- 096. 실습 ③ — 재생성 시 피드백 반영
- 107. 실습 ④ — 프롬프트 A/B 비교
- 118. 입출력 명세
- 129. 자주 겪는 문제
- 1310. 24 + 25차시 연결 확인
- 14체크리스트와 과제
- 15실습 1 — Generator Node 분리 실습 따라 하기
- 16퀴즈 1 — 재시도 여부로 프롬프트 고르기
- 17퀴즈 2 — 근거가 없으면 모델을 부르지 않는 생성
- 18정리
- 19확인문제와 해답
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03이번 차시에서 배우는 것
- 041. 왜 검증이 따로 필요한가?
- 052. 검증 기준 4가지
- 063. 검증 방식 비교 — 비용과 정확도
- 074. 실습 ① — LLM 심판 프롬프트
- 085. 실습 ② — Verifier Node 완성
- 096. 판정 결과를 세 가지로 나눈 이유
- 107. 실습 ③ — 단독 테스트
- 118. 과도한 재시도 막기
- 129. 자주 겪는 문제
- 1310. 입출력 명세
- 14체크리스트와 과제
- 15실습 1 — Verifier Node 설계 실습 따라 하기
- 16퀴즈 1 — 인용 실패·짧은 답은 심판 없이 retry
- 17퀴즈 2 — 판정 재료로 pass·retry·research 고르기
- 18정리
- 19확인문제와 해답
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03이번 차시에서 배우는 것
- 041. 오늘 완성할 시스템
- 052. 루프 설계 — 3가지 요소
- 063. 라우팅 규칙표
- 074. 실습 ① — 그래프 완성
- 085. 실습 ② — ask 함수와 실행 추적
- 096. 실습 ③ — 루프가 도는 것 확인
- 107. 실습 ④ — 개선 효과 측정
- 118. 자주 겪는 문제
- 12여기까지의 진화
- 13체크리스트와 과제
- 14실습 1 — 기본 Modular RAG 구현 실습 따라 하기
- 15퀴즈 1 — 상한 먼저, retry일 때만 bump로
- 16퀴즈 2 — retries만 올리는 bump 노드
- 17정리
- 18확인문제와 해답
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03이번 차시에서 배우는 것
- 041. 오늘 만들 구조
- 052. 실습 ① — 분류 노드 (1차 규칙)
- 063. 실습 ② — 분류 노드 (2차 LLM)
- 074. 실습 ③ — 유형별 처리 노드
- 085. 실습 ④ — 다중 분기 구현
- 096. 실습 ⑤ — 검색 실패 사유별 세부 라우팅
- 107. 실습 ⑥ — 경로별 동작 확인
- 118. 개선 효과 측정
- 129. 오분류 점검
- 1310. 자주 겪는 문제
- 14체크리스트와 과제
- 15실습 1 — Conditional Edge 실습 실습 따라 하기
- 16퀴즈 1 — 연산 순서대로 1,000 + 2,000 * 3 계산
- 17퀴즈 2 — 인사에는 검색을 부르지 않기
- 18정리
- 19확인문제와 해답
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03이번 차시에서 배우는 것
- 041. 14차시부터 남아 있던 문제
- 052. 질의 재작성의 4가지 전략
- 063. question과 query를 나눈 이유
- 074. 실습 ① — Rewrite 프롬프트
- 085. 실습 ② — Rewrite Node 구현
- 096. 실습 ③ — 재검색 루프 연결
- 107. 완성된 그래프 구조
- 118. 실습 ④ — 14차시 실패 해결 확인
- 129. 효과와 비용 측정
- 1310. 자주 겪는 문제
- 14체크리스트와 과제
- 15실습 1 — 질의 재작성 및 재검색 실습 따라 하기
- 16퀴즈 1 — question은 두고 query만 바꾸는 rewrite
- 17퀴즈 2 — 이미 시도한 검색어 걸러내기
- 18정리
- 19확인문제와 해답
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03이번 차시에서 배우는 것
- 041. 시스템이 커질수록 실패 지점도 늘어난다
- 052. 부분 실패를 허용하는 설계
- 063. Fallback 계층화
- 074. 왜 안내 문구를 나누는가
- 085. 실습 ① — 노드별 예외 처리 표준화
- 096. 실습 ② — 타임아웃과 재시도
- 107. 실습 ③ — 운영 로그 남기기
- 118. 실습 ④ — 장애 시뮬레이션
- 129. 자주 겪는 문제
- 1310. app.py 업데이트
- 14체크리스트와 과제
- 15실습 1 — 예외 처리 설계 실습 따라 하기
- 16퀴즈 1 — 예외를 State로 바꾸는 안전 실행
- 17퀴즈 2 — 실패 이유별로 다른 안내 문장 고르기
- 18정리
- 19확인문제와 해답
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03이번 차시에서 배우는 것
- 041. 오늘 완성할 시스템
- 052. 실습 ① — 통합 그래프 완성
- 063. 실습 ② — 조립과 실행
- 074. 실습 ③ — 경로 커버리지 테스트
- 085. 실습 ④ — 전체 회귀 테스트
- 096. 성능 변화 총정리
- 107. 실습 ⑤ — 노드별 성능 프로파일
- 118. 실습 ⑥ — 아키텍처 문서 작성
- 129. 자주 겪는 문제
- 13체크리스트와 과제
- 14실습 1 — 고도화된 Modular RAG 실습 따라 하기
- 15퀴즈 1 — 검증 결과로 다음 노드 고르기
- 16퀴즈 2 — 문서 질문만 검색으로 보내기
- 17정리
- 18확인문제와 해답
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03이번 차시에서 배우는 것
- 041. 최적화의 제1원칙 — 먼저 측정하라
- 052. 프로파일링 결과 읽기
- 063. 최적화 ① — 모델 티어링
- 074. 최적화 ② — 검증 호출 줄이기
- 085. 최적화 ③ — Re-ranking
- 096. 최적화 ④ — 캐싱
- 106-2. 최적화 ⑤ — 하이브리드 검색
- 116-3. 하이브리드 검색 효과 측정
- 127. 최적화 종합 결과
- 138. 3부 전체 복습
- 149. 4부 준비 — 무엇이 남았나
- 15체크리스트와 과제
- 16퀴즈 1 — 노드별 시간 비중 계산하기
- 17퀴즈 2 — 통과한 답만 담는 캐시 만들기
- 18정리
- 19확인문제와 해답
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03이번 차시에서 배우는 것
- 041. 3시간 안에 무엇을 만들 수 있나
- 052. 주제 선정
- 063. 피해야 할 주제
- 074. 실습 ① — 요구사항 정의서
- 085. 실습 ② — 문서 준비와 로딩
- 096. 실습 ③ — 인덱싱과 첫 질문
- 107. 실습 ④ — 초기 상태 점검
- 118. 39·40차시 계획 세우기
- 12체크리스트와 과제
- 13실습 1 — 미니프로젝트 ① 주제 선정과 설계 실습 따라 하기
- 14퀴즈 1 — 문서 사전 점검 합격 판정하기
- 15퀴즈 2 — Definition of Done 판정하기
- 16정리
- 17확인문제와 해답
40차시 확인문제의 객관식을 Day 별로 한곳에 모았습니다.
이 교안에 실은 원본 자료와, 각각이 어느 차시에 들어갔는지를 모았습니다.
장마다 나온 용어를 한곳에 모았습니다. 위의 찾기 칸에 낱말을 넣으면 그 줄만 남습니다.
차시마다 구성은 같습니다. 먼저 쉬운 말과 그림 한 장으로 큰 그림을 잡고, 오늘 나올 용어를 훑어본 다음, 원본 교재(PDF)의 본문을 절 단위로 차례로 봅니다. 끝에는 실습 따라 하기, 퀴즈, 정리, 확인문제가 있습니다. 처음이시라면 과정 안내부터 읽고 오세요.
본문은 강의 교재 PDF의 글을 그대로 옮긴 것입니다. 페이지 맨 위 "출처" 줄에 원본 쪽 번호가 있고, 번호를 누르면 원본 쪽 그림이 새 창으로 열립니다. 글로 옮기다 어색해진 곳이 보이면 쪽 그림이 원본입니다.
분홍색 "실습" 딱지가 붙은 줄은 그 아래 코드가 실습/src 의 어느 파일이고, 원본 PDF의 어느 쪽과 이어지는지를 알려 줍니다. 그 쪽의 설명을 읽고 바로 아래 코드를 보시면 됩니다. 코드에는 초보자도 따라올 수 있게 한국어 주석을 달았고, "복사" 단추로 가져갈 수 있습니다. 코드 아래 "실행 결과 샘플"은 교안에 기록된 출력입니다. 모델의 답은 실행할 때마다 조금씩 달라집니다.
실습은 대부분 OpenAI API 키가 있어야 돌아갑니다. 키는 실습/.env 파일에 직접 넣으시고, 이 교안에는 실제 키를 싣지 않았습니다.
퀴즈는 먼저 혼자 힘으로 풀어 보세요. "결과 보기 (예시 풀이)"를 누르면 주석을 단 풀이 코드와 실제 실행 결과가 펼쳐집니다. 퀴즈는 API 키 없이 파이썬만으로 풀리게 냈고, 답은 하나가 아니니 결과만 같으면 어떻게 푸셔도 됩니다.
어떤 원본 파일이 어느 차시에 실렸는지, 실습 코드를 어느 쪽 아래에 넣었는지는 수업 자료 목록에 정리해 두었습니다.