3.3.2 원칙 2: 포맷 불가지론(Format Agnosticism) - 내용 중심의 검증
본질적으로 인간의 신경망을 모방한 파운데이션 언어 모델(Foundation LLM)이 생성해 내는 자연어(Natural Language) 문장 스트림(Stream)은 결정론적 소프트웨어의 전통적인 return 출력값과 달리 텍스트의 표면적 형태가 극도로 가변적(Variable)이고 엔트로피(Entropy)가 높다. 어제 야간 배치 테스트에서는 “당신의 현재 증권 계좌 잔액은 5,000원입니다.“라고 정중하게 대답했던 동일한 온도의 모델이, 오늘은 앞단 시스템 프롬프트(System Prompt)의 단 한 단어가 바뀌었거나 벡터 DB에서 검색해 온 컨텍스트(Context) 토큰 가중치(Weight)의 미세한 변경 나비효과로 인해 “현재 고객님의 계좌에는 보유 예수금 오천 원이 남아있습니다.“라고 의미론적으로는 완벽히 동일하지만 구문상으로는 완전히 다르게 대답할 확률이 항상 열려 있다.
이러한 태생적인 확률적 무작위성(Stochasticity) 상황에서, 소프트웨어 엔지니어가 과거 XUnit의 전통적인 assertEquals("당신의 계좌 잔액은 5,000원입니다.", response)와 같은 ’정확한 마이크로 문자열 일치(Exact String Match)’만을 편협하게 유일한 골든 데이터셋(Golden Dataset) 정답지로 딱딱하게 설정해 두었다면 어떤 재앙이 발생할까? 오늘 모델의 바뀐 대답(“고객님 계좌에 5000원이 남았습니다”)은 실제 비즈니스 정보 전달과 의도(Intent) 파악에 있어서는 아무런 치명적인 로직 결함이나 오류가 없음에도 불구하고, 무식한 CI/CD 오라클의 하드코딩된 바이트 문자열 비교 평가에서는 여지없이 폭력적인 FAIL 판정을 받고 파이프라인 배포를 중단(Block)시키게 된다. 이러한 인위적이고 불필요한 False Alarm 현상을 소프트웨어 테스팅 공학에서는 **‘테스트 취성(Test Brittleness, 부서지기 쉬운 테스트)’**이라고 부르며, 이는 현업에서 AI 파이프라인의 민첩한 CI/CD 애자일(Agile) 배포 주기를 가로막고 엔지니어들의 야근을 유발하는 가장 큰 피로도의 주범이자 아키텍처 장애물이다.
따라서 위대한 오라클 아키텍처를 지탱하는 결정론적 정답지는, 텍스트의 표피를 벗어나 **포맷 불가지론(Format Agnosticism)**이라는 고도의 추상화 설계 원칙을 가장 엄격하게 준수하여 수학적으로 설계되어야만 한다.
1. 포맷 불가지론(Format Agnosticism)의 아키텍처적 정의와 필요성
포맷 불가지론의 설계 철학이란, **“데이터가 밖으로 어떠한 의상(Format/Syntax/Grammar)으로 포장되어 렌더링(Rendering)되었든 간에, 그 겉껍질을 완전히 무시하고 오직 그 안에 타임캡슐처럼 담긴 논리적인 정보의 알맹이(Core Values / Semantics) 수치 비트값이 물리적으로 일치한다면, 이는 100% 동일하고 무결한 것으로 간주하여 정답(Pass) 처리한다”**는 유연하면서도 가장 냉혹하고 정확한 의미론적 검증 설계 사상이다.
전통적인 구시대의 소프트웨어 통합 테스트(Integration Testing) 환경에서는 백엔드의 출력값이 XML인지 JSON인지, 날짜 포맷이 ISO 8601의 YYYY-MM-DD인지 아니면 영미식의 DD/MM/YYYY인지가 파이프라인의 명운을 가를 만큼 매우 중요했다. 토큰 다운스트림 파서(Parser) 컴포넌트 전체가 형태 불일치로 인해 NullPointerException이나 TypeMismatch 에러를 뿜으며 처참하게 깨지기 때문이다.
그러나 비정형 자연어(Natural Language)라는 거대한 바다를 헤엄치는 AI가 파이프라인 정중앙에 끼어든 현대의 매크로 아키텍처에서는 기준이 완전히 달라져야 한다. AI 엔진 시스템이 복잡한 문맥 속에서 5,000원이라는 핵심 정보를 훌륭하게 추론하여 추출(Extraction)했음에도 불구하고, 단순히 텍스트 내에서 천 단위 구분 기호인 콤마(,) 한 글자가 누락되었거나 마크다운 줄 바꿈(Line Break \n) 문자가 보기 좋게 하나 더 추가되었다는 어처구니없는 이유로, 오라클 시스템이 이를 마치 치명적인 환각(Hallucination) 에러인 양 멍청하게 뿜어내고 CI 빌드를 멈추게 해서는 절대 안 된다.
2. 골든 정답지와 오라클 검사기(Oracle Judge)의 인지적 분리 (Separation of Concerns)
이 위대한 포맷 불가지론 사상을 파이프라인 컴포넌트에 물리적으로 실현하기 위해서는, 정적으로 멈춰있는 골든 데이터셋(Golden Dataset)에 저장되는 텍스트 정답지와, 런타임에 이를 능동적으로 검사하는 오라클 로직(Oracle Evaluator Logic)이 다음과 같은 분리된 책임 메커니즘으로 동작하도록 엔지니어링해야 한다.
- 순수 메타 데이터 단위(Data Entity) 중심의 환원적 정답지 작성:
오라클 정답지 JSON 파일에는 “출력물은 반드시 ’잔액은 5천 원입니다’라는 한국어 문장을 포함해야 함“이라는 모호하고 형태 의존적인 지시문 덩어리를 하드코딩하지 않는다. 그 대신 오직 검증해야 할 가장 깊은 본질인 변수 구조화되고 정규화된 데이터 엔티티 해시맵(예:{"expected_account_balance_krw": 5000}) 상수값 자체만을 뼈대로 명시한다. - 스마트 전처리(Pre-processing) 및 정규화 파싱(Parsing) 계층(Layer)의 전면 도입:
오라클 심판관(Judge)은 무작정 문자열==비교 검증을 수행하기 전에, 앞단의 AI가 수다스럽게 내뱉은 자연어나 비정형 텍스트 덩어리를 먼저 파싱(Parsing)하여 정답지 메타데이터 딕셔너리와 완벽히 동일한 추상화 수준(Abstract Information Level)으로 기계적으로 조립해서 강제로 끌어올려야 한다.
예를 들어, 텍스트 버퍼에서 정규표현식(Regex)을 돌려 화폐 단위와 숫자만 순수하게Integer5000으로eval추출하거나, “오늘”, “내일”, “10월 3일“처럼 로케일(Locale) 기반으로 흩뿌려진 상대적인 날짜 텍스트 덩어리들을 백엔드의datetime라이브러리를 통해 확정적인 유닉스 시스템의 UTC 표준 정수 밀리초(Unix Epoch Time)로 통일 강제 변환하는 파싱 전처리 과정이 반드시 Assert 전에 선행(Pre-requisite)되어야 한다.
이러한 우아하고 파워풀한 시스템적 포맷 불가지론적 접근 방식을 아키텍처에 내제화함으로써, 엔지니어는 AI 모델이 런타임에 “5,000”, “5000”, “O처넌”, “오천 냥” 중 그 어떤 악랄하고 파편화된 기괴한 문자 형식(Format)으로 겉포장하여 인간처럼 유창하게 대답하든 전혀 개의치 않고, 오직 “Integer 숫자 5000“이라는 데이터가 추출되었다는 내용 유효성(Semantic Validity)의 철학적 본질 단 하나에만 강력하게 포커스하여 실패 없는 결정론적 시스템 검증을 에러 없이 수행할 수 있게 된다.
이는 과거의 부서지기 쉽고 과적합(Overfitted)된 멍청한 구시대적 exact 텍스트 매칭을 과감하게 버리고, 어떠한 프롬프트 변화에도 모델의 변덕을 묵묵히 소화해 내면서도, 비즈니스 코어 데이터의 오류만은 매섭게 잡아내는 가장 유연하고도 가장 엄격한 차세대 데이터 검증 오라클 시스템으로 진화하는 소프트웨어 공학의 궁극적인 핵심 마스터키(Master Key)이다.