8장. 최종 프로젝트
정리
- 첫 챗봇의 주제는 근거 문서가 있고, 질문이 반복되고, 틀리면 안 되는 범위가 분명하고, 개인정보가 없는 일에서 고릅니다.
- 코드를 쓰기 전에 설계서(사용자와 질문, 문서, 부품, 범위 밖 질문에 할 말, 평가)를 쓰고, 평가 질문과 정답 위치도 먼저 만듭니다. Pydantic 틀로 두면 빠진 칸을 코드가 찾아 줍니다.
- 챗봇 앱은 1~7장의 부품(문서 읽기, 나누기, 임베딩, FAISS, 체인, 기억, 도구, 화면)을 차례로 끼운 것이고, 로직은 부품 파일에, 화면은 화면 파일에 나눕니다. 임베딩과 모델만 바꿔 끼우면 연습용이 진짜가 됩니다.
- 프로젝트 1에서 평가 질문 10개의 1위 적중은 6개였고, 피드백대로 별칭 사전을 넣자 9개(셋째 안 10개)가 되었습니다. 그러나 사전에 없는 새 말투 4개 가운데 2개만 찾아, 평가 질문에 맞춰 고친 것은 새 질문으로 따로 재야 한다는 것을 보였습니다.
- 맞게 찾은 거리(가장 먼 1.664)와 규정 밖 거리(가장 가까운 1.68) 사이에 문턱 1.67 을 두자 규정 밖 질문 3개 모두 모델을 부르지 않고 인사팀으로 넘겼습니다. 두 무리 사이의 틈은 0.016 으로 좁았습니다.
- 시연은 정해 둔 순서(설계서, 평가 결과, 잘 되는 질문, 범위 밖 질문, 안 되는 질문, 피드백 기록)로 하고,
AppTest로 만든 시연 점검표(프로젝트 1에서 여섯 가지 통과)와 키 노출 점검을 먼저 돌립니다. - 피드백은 한 줄에 하나씩 "받은 피드백 | 고친 것 | 다시 잰 결과"로 적고, 고친 뒤에는 같은 평가와 점검표를 다시 돌리는 회귀 시험으로 나빠지지 않았는지 봅니다.