V2 골든 데이터셋
골든 데이터셋과 검증
V2 골든 데이터셋
골든 데이터셋과 검증 > 골든 데이터셋과 검증
- 골든 데이터셋 문항의 서식을 안다
- 설계 원칙 다섯을 적용할 수 있다
V2 — 골든 데이터셋: CQ 를 시험지로 만들기
골든 데이터셋(GD)은 [자연어 질문, 정답 쿼리, 기대 결과]의 삼중쌍 모음입니다. 코스 2의 CQ 50선이 문제 은행이고, 여기에 정답지를 붙이는 작업입니다.
GD 1문항의 서식:
- id: GD-AN01-001
cq: AN-01 # 추적성 매트릭스 연결
question: "현재 적재분 기준, ETA 대비 2시간 이상 지연 접안한 선박은?"
question_variants: # 표현 변형 (코스 4 자연어 평가용)
- "예정보다 두 시간 넘게 늦게 들어온 배 알려줘"
- "접안 지연 2시간 이상인 선박 목록"
gold_cypher: |
MATCH (v:Vessel)-[:MAKES_CALL]->(pc:PortCall)<-[:PART_OF_CALL]-(be:BerthingEvent)
WHERE be.actualTime > be.plannedTime + duration({hours: 2})
RETURN v.name, v.imoNumber,
duration.between(be.plannedTime, be.actualTime) AS delay
ORDER BY delay DESC
expected:
type: rowset # rowset | scalar | boolean | path
key_fields: [imoNumber] # 순서 무관 비교의 기준 키
snapshot_ref: "batch-2026-08-13" # 어느 적재분 기준 정답인가
hops: 2
category: AN
설계 원칙 다섯
1. 정답은 스냅숏에 고정됩니다. 데이터가 갱신되면 정답도 변합니다 — 그래서 snapshot_ref로 정답의 기준 적재분을 명시합니다. 앞 모듈의 LoadBatch가 여기서 세 번째로 일합니다. 갱신 시 정답 재생성은 gold_cypher 재실행으로 자동화합니다.
2. 비교 방식은 유형별로 다릅니다. 목록형(rowset)은 키 기준 집합 비교(순서 무관), 수치형(scalar)은 허용 오차, 경로형(path)은 노드 시퀀스 비교. ⚠️ "결과 문자열 일치"로 채점하면 순서·포맷 차이로 오탐이 쏟아집니다.
3. 난이도 분포를 설계합니다. 코스 2의 hop 분포(1-hop 7 / 2-hop 22 / 3-hop 이상 21)를 GD에도 유지합니다. 코스 4에서 "우리 시스템은 2-hop까지는 95%, 3-hop에서 78%" 같은 구간별 성적표를 뽑기 위한 사전 설계입니다.
4. 음성 문항을 반드시 포함합니다. "존재하지 않는 선박 '무지개호'의 지연 이력은?" — 정답은 빈 결과입니다. 없는 것을 없다고 답하는 능력이 할루시네이션 제로의 절반이며, 이 능력은 음성 문항 없이는 측정 자체가 불가능합니다. GD의 15% 이상을 음성·경계 문항(빈 결과, 기간 밖, 권한 밖)으로 배정합니다.
5. 변형 질문(variants)을 미리 쌓습니다. 지금은 안 쓰지만 코스 4 자연어 평가에서 "같은 뜻, 다른 표현"에 대한 강건성 측정 재료가 됩니다. 문항 작성 시점에 함께 쓰는 것이 가장 쌉니다.
규모 계획
v1은 MVP 12선 × 평균 3문항(본문항+변형+음성) ≈ 40문항으로 시작하고, 전 CQ 확장 시 150문항 규모입니다.
코스 1에서 본 것처럼 학계 QA 평가도 hop 구간 설계가 관행입니다 — 우리는 여기에 음성 문항과 스냅숏 고정을 더해 운영형 KG에 맞게 확장했습니다.