C.W.K.
Stream
Lesson 04 of 05 · published

스택 평가와 튜닝

~22 min · hybrid, evaluation

Level 0Scout
0 XP0/41 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

eval set 이 빌드할 가장 가치 있는 artifact

모든 retrieval 개선은 측정 전까진 추측. 진짜 유저 반영하는 query-document pair 50–200 개 labeled eval set 빌드. 각 query 마다 'definitely relevant' 한 document id 나열. 그 작은 set 이 모든 미래 튜닝 power.

알아둘 만한 4 metric

  • Hit rate @ k — top-k 에 relevant doc 있는 query 의 비율. 읽기 쉬움.
  • MRR (Mean Reciprocal Rank) — 첫 relevant 의 1 / position. '맞는 답이 얼마나 위에 떨어졌나' 캡처.
  • nDCG @ k — graded relevance + position 고려. 업계 표준.
  • Recall @ k — 실제 retrieve 한 relevant doc 의 비율. RAG 에서 LLM 이 다 필요할 때 critical.

모든 변경마다 eval 실행

retrieval 을 코드처럼 다뤄: 모든 tweak (청크 크기, 모델, RRF k, reranker) 가 번호 매긴 eval run. metric 시간순 plot. 'small change' 가 recall tank 하는 날, chart 가 유저보다 먼저 잡음.

Code

tiny eval harness 빌드·python
import json
from statistics import mean

EVAL = json.load(open('eval.json'))   # [{'query': str, 'relevant_ids': [str]}]

def hit_rate(retriever, k=5):
    hits = []
    for ex in EVAL:
        results = retriever(ex['query'], k=k)
        ids = [r['id'] for r in results]
        hits.append(any(rid in ids for rid in ex['relevant_ids']))
    return mean(hits)

def mrr(retriever, k=10):
    scores = []
    for ex in EVAL:
        results = retriever(ex['query'], k=k)
        ids = [r['id'] for r in results]
        rank = next((i for i, rid in enumerate(ids) if rid in ex['relevant_ids']), None)
        scores.append(0.0 if rank is None else 1.0 / (rank + 1))
    return mean(scores)

print('hit@5:', hit_rate(vector_only,    5))
print('hit@5:', hit_rate(vector_plus_bm25, 5))
print('mrr:  ', mrr(vector_plus_bm25_then_rerank))

External links

Exercise

본인 진짜 코퍼스에서 50-row eval set 빌드 (query, relevant_ids 리스트). 세 파이프라인 hit@5 + MRR 계산: vector only, hybrid + RRF, hybrid + RRF + cross-encoder. 숫자 저장. 모든 청킹/모델 변경 후 재실행.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.