10.2.1 단일 정답형(Single-Turn Exact Match) 데이터셋: 흔들릴 수 없는 사실 정보(Fact) 및 계산 로직 검증용 골든 스탠다드

10.2.1 단일 정답형(Single-Turn Exact Match) 데이터셋: 흔들릴 수 없는 사실 정보(Fact) 및 계산 로직 검증용 골든 스탠다드

회귀 테스트(Regression Testing)를 위한 골든 데이터셋(Golden Dataset) 아키텍처 중 가장 고전적이고 기계적이며 직관적인 유형이다. 하나의 쿼리(질문/명령) 단발성 인풋(Single-Turn Input)이 시스템에 입력되었을 때, AI 에이전트는 맥락이나 창의성 따위는 배제하고 반드시 **특정한 객관적 사실 정보(Object Fact)나 0.00% 오차의 수학적 수치(Calculated Number)**를 도출해 내야 하는 치명적인 비즈니스 도메인에서 1순위로 강제 사용된다.

주로 사내 취업 규칙(HR)이나 복무 규정을 대답하는 사내 RAG 기반 규정 조회 시스템, 금융권 챗봇의 대출 이자 및 세금 회계 로직 계산, 혹은 제약/의료 앱의 처방 약품 정량 스펙을 안내해야 하는 B2B 고객 지원 에이전트 패널 등 **타협할 수 없는 단일 팩트(Non-negotiable Single Fact)**가 모델의 1순위 생존 조건인 경우 이 데이터셋 구조를 절대적으로 채택한다.

이 파괴적이고 차가운 데이터셋의 핵심 설계 철학은 명료하다. **“문장력이 얼마나 문학적이고 훌륭한지, 얼마나 친절하게 감정을 섞어 대답했는지는 1%도 관심 없다. 오직 우리가 법적으로 요구한 그 ’정답 키워드’가 누락 없이 그 안에 정확히 박혀 있고, ’금지된 오답’은 없는가를 수학적으로 증명하라.”**이다.

1. 결정론적 채점을 위한 데이터셋 스키마(Schema) 설계 전략

단일 정답형 골든 데이터는 전통적 NLP의 BLEU 스코어처럼 완성된 문장형 정답을 스키마에 때려 넣지 않는다. 입력된 엣지 케이스(Edge Case) 질문에 대해, 오프라인 오라클 파서(Parser)가 결정론적으로 스캐닝(Scanning)할 수 있도록 **‘필수 키워드 배열(Required Keywords Array)’**의 정규화된 제약 조건 형태로 정답을 메타데이터 마스킹(Metadata Masking)하여 정의한다.

{
  "test_id": "ST-FACT-HR-001",
  "category": "HR_Policy_Leave",
  "input_context": "올해 내 부서 팀원의 직계 가족상 경조사 휴가는 주말 포함해서 며칠까지 쓸 수 있나요?",
  "golden_truth": {
    "expected_eval_type": "exact_match_rule_based",
    "required_keywords": ["5일", "영업일 기준", "연차 차감 없음"],
    "forbidden_keywords": ["7일", "주말 포함", "팀장 재량", "무급"]
  }
}

위의 Pydantic 덤프 스키마에서 보듯, 테스트 엔지니어는 정답을 완전한 완성형 문장(예: “해당 경조사 휴가는 영업일 기준 5일이며 연차 차감은 없습니다.”)으로 바인딩하지 않았다.
만약 완성된 스트링 문장으로 하드코딩 검증을 정의할 경우, LLM 모델이 프롬프트를 해석하여 *“회사 규정상 영업일 기준으로 5일간의 경조사 휴가가 보장되며, 이는 귀하의 연차에서 차감되지 않습니다.”*라고 조사와 어순만 조금 훌륭하게 바꿔 생성해도, 멍청한 스트링 오라클(==)은 이를 곧바로 False로 처리해 파이프라인(CI)을 폭파시켜 버린다(Test Brittleness). 따라서 문장의 형태는 모델에 자유도를 주되, 비즈니스 핵심 제약 조건(Business Constraints Component)만을 원자 단위의 독립된 배열(Array) 덩어리로 분해하여 저장하는 것이 현대 골든 데이터 스키마의 핵심이다.

2. 오라클 매핑 아키텍처: 정규표현식(Regex)과 토큰 포함 여부(Token Containment)

이 차가운 이분법적 데이터셋 유형에 가장 적합한 심판(Oracle)은, GPU를 수십 장씩 태우는 무겁고 느린 LLM 심판(LLM-as-a-Judge) 파이프라인이 아니다. 파이썬 빌트인만으로 1밀리초(ms) 만에 수만 건을 처리하는 가볍고 무자비하게 빠른 전사적 렉시컬 검사기(Lexical Scanner / Heuristics Oracle) 엔진이면 충분하다.

  1. [논리곱 토큰 매칭 (Logical AND Token Containment)]:
    파이썬 오라클은 AI의 최종 스트리밍 출력 텍스트를 인메모리 버퍼로 파싱하여, required_keywords 배열에 명시된 문자열 세트 요소가 모두 텍스트 내에 존재하는지 이터레이션 검사한다(엄격한 AND 조건 교집합). 이 경우 인간과 기계의 띄어쓰기 오차를 방지하기 위해, 대소문자 무시(Case-insensitive, .lower()) 옵션이나 불필요한 공백 및 특수문자 제거 정규화 체인(Normalization Chain)을 사전에 선행 태우는 것이 실무적 국룰이다.
  2. [정규표현식(Regex) 기반 값 추출 비교]:
    만약 핀테크 금융 시스템의 대출 이자 계산 스펙 답변을 TDD로 검증한다면, 스키마의 expected_eval_typeregex_numerical로 라우팅 제어하고, \d{1,3}(,\d{3})*원 류의 강력한 정규표현식을 오라클 팩토리(Oracle Factory)에 매핑한다. 오라클은 잡다한 문장 속에서 계산된 금액 도메인(예: “45,000원”)만 날카롭게 RegEx 그룹핑 추출 한 뒤, 백엔드의 자바(Java) 수학적 정답 로직과 파이썬에서 abs(A - B) < epsilon 비교 연산을 직접 수행해 정합성을 따진다.

3. 구축 시 치명적 주의점: 할루시네이션(Hallucination) 방어를 위한 ’오답(Negative Fact)’의 철저한 명시

시니어 프롬프트 엔지니어조차 단일 정답형 검증에서 흔히 저지르는 아마추어적인 실수는, **‘요구하는 정답 키워드가 존재하는지만 검사하고 얼렁뚱땅 테스트를 100점 통과(Pass)시키는 것’**이다.
만약 오작동 중인 AI가 할루시네이션(Hallucination)을 심하게 일으켜, *“네, 경조사 휴가는 5일 주어지며, 추가로 원하시면 부서장 재량으로 주말 포함 7일까지도 가능하고 무급 처리됩니다.”*라고 미친 횡설수설을 내뱉었다고 치명적 가정을 해보자. 오라클이 순진하게 ['5일']이라는 키워드 유무 긍정 연산만 검사한다면, 이 회사를 소송으로 몰고 갈 치명적인 허위 대답은 무사통과하여 라이브 프로덕션(Production) 파이프라인의 유저 브라우저에 그대로 노출되어 버린다.

이를 인프라 레벨에서 원천 방어하기 위해 앞선 골든 스키마 명세에 **forbidden_keywords (금지어/Negative Constraints 목록)**를 반드시 필수 스키마 제약으로 명시해야 한다. QA 오라클 설계자는 레거시 시스템이 과거 운영 중에 자주 헷갈렸던 잘못된 팩트 패턴(이전 연도 개정 전 규정, 헷갈리기 쉬운 타사 스펙, 빈번한 환각 단어)을 피의 오답 노트처럼 데이터셋에 하드코딩하여 박아두어야만 한다.
AI의 문장은 ‘정답 키워드는 모조리 포함하고(Include ALL), 오답 키워드는 단 하나도 포함하지 않았을(Exclude ANY)’ 때, 즉 교집합의 부정 상태일 때 비로소 오프라인 오라클 시스템은 이 단일 정답형 인퍼런스 테스트를 신뢰할 수 있는 완전 무결한 초록색(Pass) 통과로 승인할 수 있다.