Skip to content

fix(eval): QA 평가를 단일 데이터셋(qa_pairs.json) 소스로 통합#66

Merged
TaskerJang merged 1 commit into
feat/p1-extractor-hardeningfrom
fix/qa-eval-single-dataset
May 30, 2026
Merged

fix(eval): QA 평가를 단일 데이터셋(qa_pairs.json) 소스로 통합#66
TaskerJang merged 1 commit into
feat/p1-extractor-hardeningfrom
fix/qa-eval-single-dataset

Conversation

@TaskerJang

Copy link
Copy Markdown
Owner

배경

QA 평가가 수동으로 쪼갠 분리 파일 2개(vectorrag_qa.json, graphrag_qa.json)를 읽고 있었음. 합본 qa_pairs.json은 멀쩡한데 분리본에만 글자가 손상되는 사고 발생:

LocalRetriever 시작 — question='두산밥칿의 목표주가는 얼마인가?'   # 캣 → 칿

run_qa_eval._load_qaread_text(encoding="utf-8")로 읽고 질문을 그대로 넘기므로 로더/콘솔 문제가 아니라 분리본 파일 자체의 글자 손상이었음. scripts/에 합본→분리 자동 스크립트가 없어 손으로 쪼개다 생긴 divergence.

변경

  • 입력 단일화: _load_qa가 분리 파일 2개 대신 단일 소스 eval/dataset/qa_pairs.json 하나만 읽고, 각 항목의 qa_set("vectorrag"/"graphrag") 필드로 필터링.
  • 결과는 그대로 분리: print_summary가 qa_set별 2개 섹션으로 집계하고, 결과 JSON도 항목마다 qa_set을 유지 → "하나의 데이터셋, 분리된 결과".
  • 방어: qa_set 필드 누락 시 pattern/expected_route 유무로 추론(_infer_qa_set).
  • --qa-set vectorrag|graphrag|both 동작·CLI 인터페이스 변경 없음.

효과

  • 합본↔분리 어긋남(글자 손상 등) 원천 차단. source of truth가 하나.
  • vectorrag_qa.json / graphrag_qa.json더 이상 사용 안 함 (이 PR에서 삭제는 안 함 — 필요 시 수동 정리).

검증

  • qa_pairs.json은 80개(vectorrag 40 + graphrag 40), 각 항목에 qa_set 존재 → 필터링 정상.
  • --qa-set both → 80, vectorrag → 40, graphrag → 40 기대.

비고

  • 이 PR과 별개로, 측정이 1번 문항 judge 호출에서 멈추는(httpx 응답 본문 read 행 → KeyboardInterrupt) 이슈가 있음. judge 클라이언트 요청 타임아웃 + 재시도는 후속에서 처리 예정.

수동으로 쪼갠 vectorrag_qa.json/graphrag_qa.json 분리본이 합본과
어긋나(예: '두산밥캣'→'두산밥칿' 글자 손상) 측정이 오염되는 문제가 있어,
단일 소스 eval/dataset/qa_pairs.json 만 읽고 각 항목의 qa_set 필드로
필터링하도록 변경. 결과 집계는 기존대로 qa_set별 분리 유지
(print_summary 2개 섹션 + 결과 JSON의 qa_set 필드).

- _load_qa: 분리 파일 2개 읽기 → 단일 qa_pairs.json 읽고 qa_set 필터
- qa_set 필드 누락 시 pattern/expected_route 유무로 추론(방어)
- vectorrag_qa.json / graphrag_qa.json 는 더 이상 사용 안 함(수동 삭제 가능)
@TaskerJang TaskerJang merged commit d554c1d into feat/p1-extractor-hardening May 30, 2026
TaskerJang added a commit that referenced this pull request May 30, 2026
…d on feat/p1)

feat/chunk-rerank 가 dev 베이스라 eval 인프라(#66/#67/gpt-5.2 토글)가 없던 문제 →
feat/p1-extractor-hardening 위로 rebase. 변경 내용은 동일:

- Cypher: MENTIONS 청크를 12개까지 원문으로 retrieve ([..3]/substring 제거)
- _rank_chunks_by_question: bge-m3 cosine 으로 entity 당 top 3 채택 + 600자 절단
- payload 모양({chunk_id,text,page}) 유지 → 답변 프롬프트 무변경

근거: Sentence-Transformers Retrieve & Re-Rank, MS GraphRAG Local Search.
한계: 답 청크가 해당 entity 의 MENTIONS 집합 안에 있을 때만 동작.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant