--- phase: P9 component: kebab-eval + docs task_id: p9-fb-39 title: "Retrieval precision 튜닝 (rank 5+ 노이즈 완화)" status: completed target_version: 0.7.0 depends_on: [] unblocks: [] contract_source: ../../docs/superpowers/specs/2026-04-27-kebab-final-form-design.md contract_sections: [§3 chunking, §4 search, §7 RAG, §10.3 eval metrics] source_feedback: 사용자 도그푸딩 2026-05-06 — Claude Code 가 kebab CLI 사용 후 "rank 5+ 부터 노이즈 섞임" 지적. precision-at-k 가 k=5 이후 떨어짐. --- # p9-fb-39 — Retrieval precision 튜닝 > ✅ **Eval foundation 부분 구현 완료.** P@k metric (P@5, P@10) 추가. 본 spec 의 lever 적용 (chunk policy / RRF / cross-encoder / embedding 업그레이드) 은 별도 task 로 분리 (fb-39b 이후). > > - Design: [`docs/superpowers/specs/2026-05-10-p9-fb-39-eval-foundation-design.md`](../../docs/superpowers/specs/2026-05-10-p9-fb-39-eval-foundation-design.md) > - Plan: [`docs/superpowers/plans/2026-05-10-p9-fb-39-eval-foundation.md`](../../docs/superpowers/plans/2026-05-10-p9-fb-39-eval-foundation.md) > - fb-39b (lever 적용 — embedding upgrade): [`tasks/p9/p9-fb-39b-embedding-upgrade.md`](./p9-fb-39b-embedding-upgrade.md) ✅ ## 증상 / 동기 - top-1~4 chunk 는 관련 있으나 5번째부터 무관 chunk 섞임. recall OK, precision-at-k 저하. - LLM 이 noise chunk 를 context 에 포함하면 답변 품질 저하 / hallucinate 위험. ## Goal (skeleton — brainstorm 단계에서 확정) - top-k 결과의 precision 향상. 후보: 1. chunk policy 재검토 (size / overlap / boundary). 2. RRF k 파라미터 (현재 default 60) 재튜닝 또는 score gate threshold default ON. 3. cross-encoder reranker PoC — top-N retrieve → rerank → top-k. 4. embedding model 업그레이드 (fastembed default → 더 큰 / 한글 강한 모델). - 평가 지표: P@5, P@10, MRR, NDCG. P5 eval runner 활용. ## 후속 작업 — brainstorm 필요 항목 - 어느 lever 부터 손볼지 — 비용 / 효과 trade-off. - cross-encoder 도입 시 local-only 유지 가능한지 (fastembed cross-encoder 지원?). - embedding 변경이면 `embedding_version` cascade — 전체 재처리 필요. ## Risks / notes - embedding_version bump = 전체 vector index 재구축. p9-fb-23 incremental ingest 와 충돌 가능. - cross-encoder 는 latency 증가 — 단일 사용자 local 환경에서 받아들일 수 있는지 확인. - eval golden set 부족하면 튜닝 불가 — golden set 확장 선행 필요할 수 있음.