김범진(데이터 처리) 메모 — 목차
이 폴더의 진입점. 규칙 둘: ① 주제마다 문서 하나. ② 값은 정본에서만 고치고 나머지는 링크로 넘긴다.
뭘 알고 싶으신가요
| 궁금한 것 | 여기로 |
|---|---|
| 질문 하나가 답이 되기까지 무슨 일이 일어나나 | 쿼리 파이프라인 |
| 어떤 질문이 어느 갈래로 가나 | 라우터 5분기 판정 흐름 🖼 |
| 지금 검색이 어떤 상태인가 · 뭘 채택했나 | 검색 실험 결과 (4모델·BM25) |
| 실험이 뭘 기준으로 재는 건가 (파이프라인·정답지·지표·통제) | 검색 실험 설계 (4모델·BM25) ← 측정 조건 정본 |
| 어떤 모델·변형을 놓고 비교하나 (M0/M1/M2, C~G) | 검색 실험 설계 (4모델·BM25) §6~§8 |
| 정답지가 공정한가 · 라벨을 어떻게 늘렸나 | 검색 실험 결과 (4모델·BM25) §8 |
| 실험하다 뭘 틀렸고 어떻게 알았나 | 검색 실험 결과 (4모델·BM25) 2부 |
| 평가 기준(정답지)이 어떻게 만들어졌나 | 골든셋 |
| MRR·BM25·리랭커가 뭔지 모르겠다 | 개념 색인 |
| 웹 화면이 어디까지 붙었나 | BidMate 웹 연동 현황 |
검색 실험 — 문서 둘
검색 실험 문서는 설계 / 결과 둘뿐이다.
검색 실험 설계 고정·변수·비교쌍·가설·3단계 순서 ← 조건이 헷갈리면 여기
↓
검색 실험 결과 판정표 + 근거 + 바로잡은 것 4건 ← 결론은 여기, 경위는 2부
실험은 3단계로 갔다 — 후보 구성 → 리랭커 → 임베딩. 리랭커·임베딩은 후보 안에 든 것만 다루므로 아래층이 바뀌면 위층 판정이 다시 열리는데, 1단계에서 후보가 C(dense 단독)로 확정되어 위층 조건이 그대로다. 세 판정 모두 최종 → 검색 실험 설계 (4모델·BM25) §8-1
| 문서 | 답하는 것 | 상태 |
|---|---|---|
| 검색 실험 설계 (4모델·BM25) | 파이프라인·전제 · 정답지(v5) · 지표 · 실험 대상(M0 | ★ 조건 정본 |
| 검색 실험 결과 (4모델·BM25) | 판정표 · 프로덕션 반영 상태 · 실험하며 바로잡은 것 4건 | ★ 판정 정본 |
| 골든셋 | 40→200 확장 설계 · 라운드별 성적 (라벨링 성적 정본) | 현행 |
| 골든셋 200문항 제작 | 200문항을 실제로 어떻게 뽑았나 · 버전 이력(v3→v4→v5) | 현행 |
| 검색 실험 골든셋 40문항 | 첫 40문항 라벨링·감사 · 문항 전체 목록 + 실패 4건 분석 | 사료 (수치 인용 금지) |
| 검색 개선 스토리보드 🖼 | 골든셋 40 → 청킹 → 메타 → BM25 인과 서사 | 사료 |
“1차·2차” 구분은 버렸다. 전수로 다시 재면서 그 구분이 의미를 잃었고, 옛 수치 상당수가 무효다.
이전에는 검색 문서가 여섯이었다(검색 개선 · 검색 실험 계획/결과 (164문항) · 검색 2차 실험 · 정답지 편향 제거 · 검색 실험 골든셋 40문항). 2026-07-29에 둘로 재편하고 나머지는 _archive/로 내렸다 — 배너를 붙여뒀으니 사료로만 읽을 것.
그 밖의 문서
파이프라인
| 문서 | 답하는 것 |
|---|---|
| 쿼리 파이프라인 | 검색이 왜 2번 일어나나, chunks vs doc_cards, run_turn 5분기, 잔여 백로그 |
| 라우터 5분기 판정 흐름 🖼 | 질문이 어느 분기로 가고 왜 갈리는가 (라우터 정본) |
인덱스 품질
| 문서 | 답하는 것 |
|---|---|
| 청킹 표 처리 수정 (Phase 11) 🖼 | 표 깨짐·섹션 뭉개짐 원인 3개와 수정, 재인덱싱 |
| 인덱스 데이터 손상 진단 | 고유번호 유실·중복 청크 등 손상 7종과 우선순위 |
제품 · 기타
| 문서 | 답하는 것 |
|---|---|
| BidMate 웹 연동 현황 | 프론트-백엔드 연동 상태, 블록된 화면 3개 |
| BidMate 실제 웹 플로우 🖼 | 실기동 스크린샷 12장으로 본 전체 플로우 |
| 작업 화면 개편 실험 | 목록+채팅 한 화면 개편 실측 (동작 정본) |
| 작업 화면 개편 실험 (요약) 🖼 | 위 문서를 스크린샷 4장 + 발견 4개로 압축 |
| 유저 플로우 🖼 | BidMate UX 설계 + RFP 추천 초기 브레인스토밍 |
| 참가자격 매칭 구조 정리 🖼 | 전재완 Eligibility — 추출·매칭 구조와 미해결 5건 |
| 참가자격 판정 — 지금 vs 제안 🖼 | 판정을 “개수 세기 → 종류 보기”로 바꾸자는 제안 |
| 팀 초기 기록 | 역할 분담 회의(07-22) + 인프라 구상. 사료 |
| 팀 인프라 초기 구상 🖼 | 브랜치·VM·스토리지 초기 스케치(07-20) |
개념 (별도 폴더)
검색 캐시의 dense_doc / dense_full / bm25 구분은 후보 캐시에 있다.
용어가 막히면 개념 색인. 16개 노트가 개념/에 있다 —
MRR · nDCG · Recall과 hit rate · BM25 · Dense 검색 · RRF ·
하이브리드 검색 · 크로스인코더 리랭커 · 임베딩 · 청크와 chunk_id ·
골든셋 · 재현율과 정밀도 · 지표 포화 · 후보 캐시 ·
상·하한 채점 · paired bootstrap
🖼 = 캔버스(다이어그램). 배치와 연결선 자체가 정보라 md로 옮기지 않고 남겼다.
숫자 기준표 — 헷갈릴 때 여기부터
| 값 | 수 | 설명 |
|---|---|---|
| 원본 RFP 문서 | 100 | 프로젝트 개요 기준 |
chunks 컬렉션 | 30,002청크 / 99문서 | 추출 실패 1건 제외. data/chroma_v2 |
doc_cards 컬렉션 | 100 | 실패 문서도 카드는 있음 |
| 구 인덱스 | 28,293청크 | data/chroma — 낡음. 이 수가 보이면 갱신 안 된 서술 |
| 문서당 청크 | 중앙값 280 / 최대 794 | |
| 골든셋 전체 | 200문항 | v5 — 전체 풀링 라벨링 반영본. 그 전이 v4_20260729(v3에서 라벨 변경 없이 파일만 분리) |
| 채점 성립 문항 | 164 | 200 − 모른다 15 − 반문 15 − 빈 정답 6 |
| 정답 청크 (v5) | 연인원 353 | v4의 310 + 신규 42 + 검증 추가 1 → 검색 실험 결과 (4모델·BM25) §8 |
| 판정 풀 (v5) | 8,856 | 문항당 41.2 → 54.0. 미판정률 전 조합 0.0% |
| 정답 청크 (v4) | 연인원 310 / 고유 253 | 옛 수치. v4 기준 성적표를 읽을 때만 쓴다 |
| 유형 분포 (200 기준) | 단일세부 90 · 후속 30 · 탐색비교 25 · 직답 25 · 모른다 15 · 반문 15 | |
| 유형 분포 (채점 164 기준) | 단일세부 90 · 후속 29 · 탐색비교 25 · 직답 20 | 실험 수치는 이쪽이다. 후속 1 · 직답 5가 gold 없음 |
| 정답지 검증 | 170문항 완료 | rest130 130 + pilot40 40 |
| 골든셋 v5 위치 | 로컬 산출물 | VM current는 아직 v4_20260729를 가리킨다 |
| 36 · 40 · 42문항 | — | 옛 모수. 지금 정본은 164. _archive/ 문서에 남아 있다 |
골든셋 버전을 확인하고 읽어라. 판정 성적표는 v5 기준, dense 단독 진단표는 v4 기준이다. 라벨을 늘린 경위 → 검색 실험 결과 (4모델·BM25) §8
검색 성적 — 값 정본은 검색 실험 결과 (4모델·BM25) §1
골든셋 v5 · 리랭커 R1 · C_doc
| 임베딩 | MRR@10 | 기준선 대비 | 95% CI |
|---|---|---|---|
| e5-small (현행) | 0.7443 | 기준선 | — |
| bge-m3 | 0.7640 | +0.0197 | [−0.0151, +0.0578] |
| KURE-v1 | 0.7740 | +0.0297 | [−0.0042, +0.0654] |
리랭커를 켠 것이 지금까지 최대 이득이다 — dense 단독 0.6402 → 0.7443 (+0.104).
→ 세 축 모두 현행 유지. 임베딩은 점추정이 앞서도 구간이 0을 품어 미채택 (“차이가 없다”가 아니라 “이득이 증명되지 않는다”, 재판정 조건 3개는 결과 §2-1). R2 리랭커는 점수 포화로 기각. BM25는 설계 결함 2건을 고쳐 재측정했으나 미채택 — MRR은 유의차 없고 nDCG·Recall은 유의하게 나쁘다(결과 §4).
정본이 볼트 밖인 것
| 대상 | 실제 위치 |
|---|---|
| 라벨링 스킬 원문 | GPTPilots_Project/.harness-mem/goldenset-skill/rounds/rN/SKILL.md — 현행 v8 |
| 라운드 성적 | 같은 경로 rounds/rN/score.json |
| 골든셋 200문항 (버전 관리) | VM /srv/GPTPilot/goldenset/ — 현행 v5(전체 풀링 반영), 직전 v4_20260729. 파일 구성은 goldenset.jsonl 200줄 · rerank_labels.jsonl 164줄(실험용) · rerank_labels_full.jsonl 200줄 |
| 1차 실험 판정표 | GPTPilots_Project/data/promote_decision_200.md (gitignore) |
| 태스크 로드맵 | GPTPilots_Project/Plans.md 6.5~6.8 |
_archive/ — 읽되 현행으로 믿지 말 것
낡았지만 사료 가치가 있어 지우는 대신 내렸다. 전부 상단에 배너가 붙어 있다.
| 문서 | 대체 정본 | 왜 내렸나 |
|---|---|---|
검색 개선.md | 검색 실험 설계 (4모델·BM25) · 검색 실험 결과 (4모델·BM25) | 1부 구현 커밋 이력은 여기가 유일한 기록 — 그 목적으로만 |
검색 실험 계획 (164문항).md | 검색 실험 설계 (4모델·BM25) | 36~164문항 시절 설계 |
검색 실험 결과 (164문항).md | 검색 실험 결과 (4모델·BM25) | 유효한 내용은 전부 이관 |
검색 2차 실험 (임베딩·BM25·리랭커).md | 〃 | “1차·2차” 프레이밍을 버리며 재편 |
검색 2차 실험 계획/결과 *.md | 〃 | 그 전 판 (변형 D 설명이 틀림) |
정답지 편향 제거 (전체 풀링 라벨링).md | 검색 실험 결과 (4모델·BM25) §8·§9 | 상·하한 3가정 표 전체가 여기 남아 있다 |
검색 실험 구도.md | 검색 실험 설계 (4모델·BM25) | 측정 전 사전등록 설계서 |
검색 품질 개선 (BM25·리랭커).canvas | 검색 실험 설계 (4모델·BM25) | 4변형 시절 설계도 |
쿼리 파이프라인 개선안.md | 쿼리 파이프라인 §잔여 백로그 |
미해결
검색
- 거짓양성 미검사 — 모른다·반문 30문항에서 없는 근거를 지어내지 않는지 아직 안 봤다
- 탐색비교·후속 유형이 안 오른다 — 리랭커로 +0.034 / +0.005뿐. 여러 문서를 걸치는 검색은 별도 접근 필요
- 정답이 후보에 아예 없는 문항 — dense만으로는 e5 17 / KURE 9. 임베딩으로도 BM25로도 다 못 없앴다. 남은 접근 미정
- e5 수치의 셋째 자리를 못 믿는다 — 리랭커 점수 동점 시 입력 순서가 결과를 바꿔 MRR이 ±0.007 흔들린다(해당 문항 e5 18 / bge 2 / KURE 0). 재려는 효과와 자릿수가 같다 → 검색 실험 결과 (4모델·BM25)
- 라벨링 보류 5건 — 사람 확인 대상. 쟁점은 표기 정규화(예: “3개월”과 “90일”을 같은 값으로 볼지) → 검색 실험 결과 (4모델·BM25) §8-4
- KURE는 언제 다시 보나 — 지금은 기각이지만 조건 3개 중 하나면 재판정한다(골든셋 300문항↑ · 다른 이유로 재인덱싱 · Recall@20이 병목인 기능) → 검색 실험 결과 (4모델·BM25) §2-1
그 밖
- 자격요건 재추출이 왜 98건인가 — 문서 100 / chunks 99 / 자격요건 98. 마지막 1건 기록 없음 → 참가자격 매칭 구조 정리
- 전건 재추출이 팀 공용 키($20)를 쓰는가 — 청킹 표 처리 수정 (Phase 11)은 팀 합의 대상으로 두고 동결. 자격요건 쪽도 같은 성격인지 미확인
- 적합도 “상/중/하” 정의 미합의 — 이것 때문에 웹 화면 3개가 블록 → BidMate 웹 연동 현황
- 골든셋 v5가 아직 VM에 안 올라갔다 —
current는v4_20260729를 가리킨다 - 볼트 공개 범위 — Quartz
ignorePatterns가메모/를 제외하지 않는다. gh-pages로 배포하면 RFP 발췌가 있는 문서가 공개된다
해소된 것 (기록)
리랭커를 아직 안 켰다→RETRIEVAL_USE_RERANKER = True로 켰다. 선결 둘 다 해소 → 검색 실험 결과 (4모델·BM25) §5동시 요청 시 568M 모델 중복 로드 → OOM→ 이중검사 락 +MODEL_LOAD_TIMEOUT_S=300유한 대기(초과 시 폴백 강등). 8스레드 Barrier 테스트로 로더 1회 호출 확인맥(MPS) 지연시간 재측정→ 전제가 틀렸다. 코드가 MPS를 안 쓰고 CPU로 돈다. 맥 CPU 실측 문항당 13.27초(VM L4 0.27초의 49배) →RERANKER_REQUIRE_GPU=True가드로 GPU 없으면 dense 단독 자동 강등
BM25는 dense가 약한 임베딩 위에선 살아날 수 있다→ RRF 순서 융합은 임베딩 3종 전부에서 순손해(−0.031 → −0.124). 단 후보 확장 효과는 별개이고 미측정 — 위 미해결 참조리랭커 모델끼리는 비교한 적이 없다→ R1 유지 확정. 한국어 튜닝판 R2는 전 조합 −0.06~−0.08. 점수가 1.0으로 포화해 변별을 못 한다 → 검색 실험 결과 (4모델·BM25) §3M0×R2에서 C_doc ≠ D_doc (0.001 차이)→ 버그 아님. 애초에 D가 후보 집합을 안 바꿔 C와 동치이고, 0.001은 R2 점수 동점 위에 얹힌 부수 현상이다 → 검색 실험 결과 (4모델·BM25) §10-1골든셋 200문항 검증 완료 여부→ 2026-07-29 완료, 170문항 검증
2026-07-29 정리 — 문서 10 + index + 캔버스 9 + _archive/ 8. 개념 노트 16개는 개념/ 폴더.