15차시. 기본 RAG 앱 만들기
정리
- 실험 파일이 흩어지면 무엇을 실행할지, 설정이 어디 있는지 알 수 없습니다. 지금이 정리할 시점입니다. (15차시 「1. 지금 코드의 문제」)
- 파일은 "언제 바뀌는가"로 나눕니다. 튜닝은 config, 문서 형식은 indexer, 알고리즘은 rag, 화면은 app입니다. (15차시 「2. 목표 구조 — 4개 모듈」)
- 모든 숫자와 문자열은 config.py에 모으고, 경로는 Path(__file__) 기준으로 잡아 실행 위치와 상관없게 합니다. (15차시 「3. 실습 ① — config.py」)
- 인덱스 로드는 ask 밖에서 한 번만 합니다. 질문마다 인덱싱하면 매우 느려집니다. (15차시 「4. 실습 ② — indexer.py」)
- 밖에는 ask() 하나만 보이고, 성공이든 실패든 answer와 sources가 든 같은 모양의 딕셔너리를 돌려줍니다. (15차시 「6. 예외 처리 — 앱이 죽지 않게」)
- app.py와 web.py는 ask를 부르기만 하므로 화면을 바꿔도 rag.py는 그대로입니다. 이 분리가 3부 노드 구조로 이어집니다. (15차시 「10. 모듈 분리가 3부로 이어지는 방식」)