39차시. 미니프로젝트 ② 구현과 개선
1. [0~15분] 설정 재측정
출처: 원본 PDF 39차시_미니프로젝트구현.pdf 3~4쪽 · 쪽 그림 3쪽 4쪽
32차시 config는 이전 문서 기준입니다. 새 문서에 맞춰야 합니다.
1-1) 왜 재측정이 필요한가
📏 문서마다 점수 분포가 다릅니다
9차시에서 MIN_SCORE를 0.47로 정했고
24차시에서 chunk를 300으로 바꾸며 0.39로 재측정했습니다.
새 문서는 또 다릅니다.
· 규정집은 조항이 짧아 점수가 높게 나옵니다
· 논문은 서술이 길어 점수가 낮게 나옵니다
· 문서가 짧으면 무엇을 물어도 비슷한 점수입니다
이전 값을 그대로 쓰면 대부분 fallback으로 빠지거나
반대로 무관한 문서까지 통과합니다.
1-2) 임계값 재측정 (7분)
📝 24차시 tune_threshold.py 재사용
RELATED = [ # 내 문서에 답이 있는 질문 5개
"육아휴직 얼마나 쓸 수 있어?",
"연차 며칠이야?",
"지각하면 불이익 있나?",
"출산휴가 기간은?",
"퇴직금 언제 나와?",
]
UNRELATED = [ # 문서에 전혀 없는 질문 5개
"회사 주차장 위치는?",
"오늘 점심 메뉴는?",
"주식 시장 어때?",
"카페 추천해줘",
"서울 날씨는?",
]
rel = [top_score(q) for q in RELATED]
unrel = [top_score(q) for q in UNRELATED]
print(f"관련 최저: {min(rel):.3f}")
print(f"무관 최고: {max(unrel):.3f}")
print(f"권장 MIN_SCORE: {(min(rel)+max(unrel))/2:.2f}")
print(f"권장 WEAK_MARGIN: {min(0.08,(min(rel)-max(unrel))/3):.2f}")실행 결과 예시 (코드를 읽고 만든 예상 화면입니다. 실제 실행 결과, 특히 모델의 답은 다를 수 있습니다)
관련 최저: 0.531
무관 최고: 0.274
권장 MIN_SCORE: 0.40
권장 WEAK_MARGIN: 0.081-3) chunk_size 빠른 비교 (8분)
출처: 원본 PDF 4쪽
for cs in (200, 300, 500):
chunks = split(docs, cs, int(cs*0.1))
lengths = [len(c.page_content) for c in chunks]
print(f"chunk={cs:<4} 조각 {len(chunks):<4} "
f"평균 {sum(lengths)//len(lengths):<4} "
f"최소 {min(lengths)}")
for c in chunks[:2]:
print(f" {c.page_content[:60]}...")실행 결과 예시 (코드를 읽고 만든 예상 화면입니다. 실제 실행 결과, 특히 모델의 답은 다를 수 있습니다)
chunk=200 조각 241 평균 163 최소 38
2026 취업규칙 제1장 총칙 제1조(목적) 이 규칙은 회사에 근무하는 직원의 근로조건과 복무에 관한 사항을...
정함을 목적으로 한다. 제2조(적용범위) 이 규칙은 회사와 근로계약을 체결한 모든 직원에게 적용한다....
chunk=300 조각 156 평균 246 최소 62
2026 취업규칙 제1장 총칙 제1조(목적) 이 규칙은 회사에 근무하는 직원의 근로조건과 복무에 관한 사항을...
제2조(적용범위) 이 규칙은 회사와 근로계약을 체결한 모든 직원에게 적용한다. 다만, 별도의 계약이 있는 경...
chunk=500 조각 91 평균 421 최소 95
2026 취업규칙 제1장 총칙 제1조(목적) 이 규칙은 회사에 근무하는 직원의 근로조건과 복무에 관한 사항을...
제4조(채용) ① 직원의 채용은 공개 채용을 원칙으로 하며, 서류전형과 면접을 거쳐 결정한다....💡 8차시 판단 기준 4가지로 고르세요
① 조각 하나만 보고 무슨 얘긴지 알겠는가
② 한 조각에 여러 주제가 섞였는가
③ 문장이 어색하게 끊기는가
④ 제목과 내용이 갈라졌는가
규정집은 조항 하나가 한 조각이 되도록 잡으면 좋습니다.
보통 300~400이 적당합니다.