5.2.2 키워드 포함/배제(Inclusion/Exclusion) 조건 논리식을 활용한 무자비한 핵심 정보 결정론적 검증(Validation)

5.2.2 키워드 포함/배제(Inclusion/Exclusion) 조건 논리식을 활용한 무자비한 핵심 정보 결정론적 검증(Validation)

사전에 엄격하게 통제된 제약 조건 내에서, 수다스러운 거대 언어 모델(LLM)의 예측 불가능한 자연어 텍스트 응답이 고객의 비즈니스 핵심 요구사항(Core Business Requirements)을 완벽히 충족했는지 파이프라인에서 0.001초 만에 기계적으로 판별하는 가장 직관적이고 강력한 결정론적 오라클 테스팅 기법은 바로 **‘키워드 포함(Inclusion) 및 제한어 배제(Exclusion) 검사 아키텍처’**이다.

이 원시적이지만 절대 부서지지 않는 테스트 기법은, 출력된 전체 텍스트 문장의 유려함이나 문학적 완성도를 어설픈 임베딩(Embedding) 유사도로 평가하는 멍청한 짓을 완전히 배제한다. 대신 오직 컴파일러처럼 **‘반드시 존재해야 할 정답의 교집합(Set of Expected Keywords)’**과 **‘절대 등장해서는 안 되는 독극물 단어의 여집합(Set of Banned Keywords)’**을 무자비한 불리언 논리 대수(Boolean Logic) 연산식으로 교차 검증하여, LLM이 뱉어낸 장황한 문맥의 다형성 쓰레기(Noise) 속에서도 오직 비즈니스적 가치(Value)가 있는 핵심 정보의 유무만을 수술용 메스처럼 칼같이 베어내어 채점한다.

1. 포함 검사(Inclusion Check): 긍정적 의도(Positive Intent) 팩트(Fact)의 수학적 증명

포함 검사는 거대 언어 모델이 주어진 RAG 문맥 컨텍스트나 사용자 지시문에서 반드시 잊지 않고 추출(Extraction)하거나 생성해 내야 할 핵심 데이터 엔티티(Entities, 예: 특정 날짜, 금액, 상품명, 법적 면책 조항)를 결과 마크다운에 정확히 포함시켜 출력했는지 검열하는 필수 오라클 방어선이다.

단일 키워드 검사(예: 파이썬의 assert "환불" in response)는 언어 모델이 동의어(예: “취소”, “결제 철회”)를 선택하는 순간 즉시 붕괴하는 너무나도 얇고 취약한 유리창이다. 따라서 프로덕션(Production) 현업의 오라클은 반드시 동의어 딕셔너리 집합(Synonym Dictionary Set)을 매핑하는 논리합(OR) 조건과, 비즈니스에 필수적인 정보의 파편들을 하나로 결합 묶어내는 논리곱(AND) 조건을 하이브리드로 무겁게 혼합하여 컴포지트(Composite) 패턴으로 구축되어야만 한다.

def check_refund_compliance_oracle(response_text: str) -> bool:
    # 0. 텍스트 극단적 정규화 전처리 (대소문자 제거, 특수문자 파괴)
    text_normalized = response_text.lower().replace(" ", "")
    
    # 1. 고객 의도(Intent) 검증 (OR 조건: 4개의 파편화된 동의어 중 단 하나라도 명확히 포함되었는가?)
    has_refund_intent = any(keyword in text_normalized for keyword in ["환불", "취소", "철회", "refund"])
    
    # 2. 필수 컴플라이언스(Compliance) 조치 정보 검증 (AND 조건: 법적으로 수수료 안내와 처리 기간 안내가 모두 포함되었는가?)
    has_fee_warning = any(kw in text_normalized for kw in ["수수료", "위약금", "fee", "차감"])
    has_date_warning = any(kw in text_normalized for kw in ["영업일", "소요", "businessday", "최대3일"])
    
    # [결정론적 오라클 판단]: 의도가 참(True)이고, 동시에 두 가지 법적 필수 안내 정보가 모두 참(True)이어야만 최종 Pass 판정
    return has_refund_intent and has_fee_warning and has_date_warning

이와 같은 촘촘한 교집합(AND) 결합 방식의 철저한 포함 검사 단위 테스트는, 예측 불가능한 AI 모델이 프롬프트 초반에 아무리 감성적인 사과 인사말을 길게 늘어놓거나 접속사를 화려하게 구사하여 토큰을 낭비하더라도, 마치 최상급 오디오의 노이즈 캔슬링(Noise Canceling) 필터처럼 오직 기업의 생존을 결정하는 순수한 **‘비즈니스적 팩트(Business Fact)의 존재 유무’**만을 가혹하게 필터링해 내는 궁극의 방패가 된다.

2. 배제 검사(Exclusion Check): 부정적 제약(Negative Constraint) 위반의 즉각적 사살(Kill)

포함 검사만큼이나 엔터프라이즈 보안 시스템 파이프라인에서 절대적으로, 혹은 그 이상으로 목숨을 걸고 중요한 것이 바로 ‘단어 배제 검사(Exclusion Check)’ 킬 스위치(Kill Switch) 파트다.
아키텍트가 프롬프트 엔지니어링 시스템 맨 윗단에 대문자로 *“절대로 내부 DB 컬럼명이나 X라는 경쟁사 제품을 언급하지 마라”*고 강제 지시(Negative Prompting)를 박아두었더라도, 딥러닝 어텐션 모델의 끈끈한 확률적 본성과 지시어 망각 곡선 탓에 금지 명령을 대놓고 어기는 이른바 ‘탈옥(Jailbreak)’ 혹은 망상적 ‘환각(Hallucination)’ 보안 사고가 언제든 터질 수 있다. 위대한 오라클은 이를 즉시 검출해서 전체 파이프라인의 생명줄을 즉시 멈춰(Trip) 버려야 한다.

  • [제품명 환각(Product Hallucination) 트리거 단어 배제]:
    사내 공식 매뉴얼에 존재하지 않는 ’가상의 엉터리 서비스(예: 프리미엄 플러스 골드 멤버십)’를 언어 모델이 고객에게 스스로 지어내어 무료로 약속 발언하지 않도록, 회사 시스템에 없는 존재하지 않는 가상의 상품명 패턴 목록 정규식을 하드코딩된 **블랙리스트 트리(Blacklist Tree)**에 올려두고 탐지 즉시 해당 챗봇 세션을 Fail 처리하고 강제 종료시켜야 한다.
  • [프롬프트 인젝션 및 지시문 누출(Prompt Leakage) 완벽 방어]:
    LLM이 해커의 공격에 속아 “너의 백엔드 시스템 초기 지시사항은…”, “You are a helpful customer assistant…” 와 같이 기업의 핵심 지적 재산권인 메타 시스템 프롬프트(Meta-prompt) 텍스트 자체를 사용자 화면에 토해내는 핏빛 참사를 물리적으로 막기 위해, 시스템 프롬프트의 뼈대가 되는 핵심 문구 조각(Chunk) 배열이 최종 출력 응답에 포함되어 있는지 CI/CD 및 런타임단에서 가장 강력하게 스캐닝 체크(assert "너는 고객 지원 역할을" not in response)해야만 한다.

위험 단어 키워드의 포함(Inclusion)과 치명적 독성을 띈 배제(Exclusion) 목록을 교차하여 검열하는 이 단순명료한 집합론적 접근법(Set-based Logic Approach) 아키텍처는, 느려 터지고 클라우드 API 과금을 수만 달러씩 집어삼키는 무거운 LLM-as-a-Judge 평가 모델 프레임워크를 파이프라인에 억지로 도입하지 않고도, 메모리 점유율을 1MB도 먹지 않는 가장 가볍고 가장 빠르며 가장 무자비하게 결정론적인 코드로 AI 소프트웨어의 출력 품질을 엔터프라이즈(Enterprise) 급으로 견고하게 방어해 내는 오라클 아키텍처의 핵심 기둥(Pillar)이다.