RAG2026-5일39차시 · 미니프로젝트 ② 구현과 개선15 / 17← 이전목차다음 →MetaContents

39차시. 미니프로젝트 ② 구현과 개선

퀴즈 2 — 개선 전후 비교표와 유지 판단

개선 전 측정값 before, 개선 후 측정값 after, 목표 targets 를 받아 지표마다 (이름, 전, 후, 변화, 달성 여부) 한 줄씩 만드는 compare 를 완성해 보세요. 이어서 Correctness 가 올랐으면 "유지", 아니면 "되돌림" 을 돌려주는 decide 도 만드세요.

빈칸 코드에서 시작합니다.

Python
def compare(before, after, targets):
    pass

def decide(before, after, key="Correctness"):
    pass
결과 보기 (예시 풀이)
Python
# 5절 개선 전후 비교표를 만들고, 개선을 유지할지 되돌릴지 정합니다.

# 목표: (비교 방향, 목표값). 목표가 없는 지표는 넣지 않습니다.
TARGETS = {
    "Correctness": (">=", 0.85),
    "Faithfulness": (">=", 0.95),
    "Abstention": (">=", 1.0),
    "P95 응답": ("<=", 10.0),
}

def compare(before, after, targets):
    # 지표마다 (이름, 전, 후, 변화, 달성 여부) 한 줄을 만듭니다.
    rows = []
    for name in before:
        b, a = before[name], after[name]
        if name in targets:
            op, goal = targets[name]
            ok = a >= goal if op == ">=" else a <= goal
            mark = "달성" if ok else "미달"
        else:
            mark = "-"
        rows.append((name, b, a, a - b, mark))
    return rows

def decide(before, after, key="Correctness"):
    # 핵심 지표가 올랐으면 유지, 아니면 config 한 줄을 되돌리고 기록에 남깁니다.
    return "유지" if after[key] > before[key] else "되돌림 (실패한 실험으로 기록)"

def show(title, before, after):
    print(f"[{title}]")
    for name, b, a, d, mark in compare(before, after, TARGETS):
        print(f"   {name:<13} {b:>7.3f} → {a:>7.3f}  ({d:+.3f})  {mark}")
    print("   판단:", decide(before, after))

before = {"Hit Rate@k": 0.778, "MRR": 0.611, "Correctness": 0.714,
          "Faithfulness": 0.941, "Abstention": 1.0, "P95 응답": 11.3}

# 예시 1: 수업 자료 5절의 MMR + k=7 결과 → Correctness 는 달성, Faithfulness·P95 는 미달이어야 합니다.
after_mmr = {"Hit Rate@k": 0.889, "MRR": 0.694, "Correctness": 0.857,
             "Faithfulness": 0.928, "Abstention": 1.0, "P95 응답": 11.8}
show("MMR + k=7", before, after_mmr)

# 예시 2: 7-1절처럼 개선했는데 Correctness 가 66.7% 로 떨어진 경우 → 되돌림이어야 합니다.
#        (Correctness 말고는 이 예시를 위해 정한 값입니다)
after_bad = dict(before, Correctness=0.667)
show("떨어진 실험", before, after_bad)

실행 결과

출력
[MMR + k=7]
   Hit Rate@k      0.778 →   0.889  (+0.111)  -
   MRR             0.611 →   0.694  (+0.083)  -
   Correctness     0.714 →   0.857  (+0.143)  달성
   Faithfulness    0.941 →   0.928  (-0.013)  미달
   Abstention      1.000 →   1.000  (+0.000)  달성
   P95 응답         11.300 →  11.800  (+0.500)  미달
   판단: 유지
[떨어진 실험]
   Hit Rate@k      0.778 →   0.778  (+0.000)  -
   MRR             0.611 →   0.611  (+0.000)  -
   Correctness     0.714 →   0.667  (-0.047)  미달
   Faithfulness    0.941 →   0.941  (+0.000)  미달
   Abstention      1.000 →   1.000  (+0.000)  달성
   P95 응답         11.300 →  11.300  (+0.000)  미달
   판단: 되돌림 (실패한 실험으로 기록)

채점 기준: P95 응답처럼 작을수록 좋은 지표의 방향을 구분하고, 목표가 없는 지표는 달성 여부를 비워 두면 정답입니다.

관련 교안: 39차시 「5. 개선 전후 비교표」

← 이전 절39차시 · 퀴즈 1 — 관련·무관 점수로 임계값 권장하기다음 절 →39차시 · 정리