8.4.2.1 자기 모순(Self-Contradiction)과 외부 지식 모순의 구분
생성 단계의 타겟 거대 언어 모델(LLM)이 환각을 일으켜 저지르는 사실 관계 불일치 오류(Inconsistency Error)는, 그 근본적인 발생 기전(Mechanism)에 따라 MLOps 아키텍처 관점에서 크게 두 가지의 완전히 이질적인 차원으로 분류된다.
하나는 모델이 검색된 참조 문서(Context)의 물리적 경계를 무단으로 이탈하여 자신이 과거에 학습한 지식을 마음대로 개입시키면서 발생하는 **‘외부 지식 모순(External Knowledge Contradiction)’**이고, 다른 하나는 외부 지식은 단 1%도 개입하지 않았으나 모델 특유의 문맥 유지 능력(Attention Span)이 붕괴하여 자기 스스로 앞뒤가 맞지 않는 말을 입 밖으로 지껄이는 **‘자기 모순(Self-Contradiction)’**이다.
진보된 지식 검증 오라클 시스템은 이 두 가지 에러 타입의 수학적 구조 차이를 명확하게 파싱(Parsing)하여 구분한 뒤, 파이프라인 후반부의 에러 핸들링(Error Handling) 라우터를 완전히 다르게 태워 교정(Correction)을 시도해야만 한다.
1. 외부 지식 모순(External Knowledge Contradiction): 오라클의 프롬프트 제어 실패
이 모순 에러는 파라미터를 수천억 개 단위로 가진 거대 타겟 LLM의 태생적인 ’오만함(Parametric Over-confidence)’에서 기인한다.
- 발생 메커니즘: 사내 보안망의 Vector DB가 물어다 준 Context에는 분명히 “당사의 2024년 기업 시장 주력 판매 스마트폰은 A모델 단일 기종으로 한정한다“라고 명시적으로 박혀 있음에도 불구하고, 타겟 모델이 자신의 트랜스포머 가중치(Weight) 뇌파에 미리 스크래핑되어 묻어 있던 최신 구글 뉴스 블로그 데이터를 발작적으로 끄집어내어 “당사는 기업 시장에 A모델뿐만 아니라 최신 B모델도 주력으로 확장 판매 중입니다“라고 대답하는 케이스다.
- 오라클 전술: 오라클은 앞서 8.4.1절에서 설명한 NLI(자연어 추론)의 Backward Entailment 텐서 수학을 가동하여 잡아낸다. 생성 트랜잭션의 명제 벡터 공간이 원본 검색 문서의 벡터 클러스터를 완전히 벗어나 밖으로 튀어나갔음을 런타임에 인퍼런스(Inference)하여 적발하면, 오라클은 이 에러를 시스템의 RAG 철학에 대한 모델의 ’가장 근본적이고 악의적인 프롬프트 불복종(Instruction Disobedience)’으로 분류한다.
2. 자기 모순(Self-Contradiction): 어텐션 윈도우의 논리적 붕괴
반대로 이 자기 모순 에러는 모델의 악의적 오만함이 아니라, 순전히 트랜스포머 아키텍처의 한계로 인한 단기 기억 상실, 즉 ’멍청함(Reasoning Breakdown)’에서 기인한다. 여기엔 사외 웹 지식이나 외부 데이터 오염은 단 한 톨도 존재하지 않는다.
- 발생 메커니즘: 모델이 1,000토큰이 넘어가는 장문의 답변을 순차적으로 렌더링(Autoregressive Generation)할 때 첫 1번 문단에서는 “프로젝트의 프론트엔드 마감일은 12월 31일로 고정되어 있습니다“라고 원본 문서대로 아주 올바르게 잘 요약해 놓고 한참을 이빨을 까다가, 결론부인 마지막 5번 문단에 도달해서는 자신의 초기 맥락을 수학적으로 망각해 버리고 “따라서 팀원들은 내년 2월 말까지 프론트엔드 프로젝트를 여유 있게 완료하면 됩니다“라고 정면으로 충돌(Collision)되는 헛소리 문장을 스스로 이어붙이는 끔찍한 경우다.
- 오라클 전술: 이 에러를 잡아내기 위해 오라클은 무거운 Vector DB의 원본 문서를 거듭 쳐다볼 필요가 전혀 없다. 대신 오라클 파이프라인은 방금 전 타겟 모델이 생성해 낸 출력 구문(Output String) 그 자체만의 논리 구조를 해부하는 ’독립적인 Consistency Checker 알고리즘’을 가동한다.
오라클 백엔드는 답변 텍스트 덩어리를 개별 문장 배열로 슬라이싱(Slicing)한 뒤, n개의 문장 배열 속에서 임의의 문장_i와 문장_j를 n \times n 매트릭스로 1:1 교차 대조하여 서로 논리적으로 양립(Mutually Compatible)이 가능한지를 NLI 모듈로 즉각 연산한다. 만약 단일 응답 세션 블록 안에 수학적 명제 P와 그 부정명제 \sim P가 동시에 참(True)으로 존재한다면 오라클은 이를 묻지도 따지지도 않고 ’치명적인 자기 모순(Fatal Self-Contradiction)’으로 적발해 낸다.
3. 오라클의 분기형 에러 핸들링 라우팅(Routing) 전략
오라클이 파싱된 텍스트에서 도대체 ’어떤 종류의 모순 클래스(Class)’를 적발해 냈느냐에 따라, 파이프라인이 뒤이어 취해야 할 자가 치유(Self-healing) 로직의 방향성은 대자연의 교차로처럼 완전히 갈라진다.
- 외부 지식 모순이 탐지 배열에 찍혔다면, 이는 현재 설정된 시스템 프롬프트(System Prompt)의 ’억압 제어력’이 느슨해져서 모델의 자아가 비대해진 결과물이다. 오라클은 파라미터를 강제로 조종하여 System Prompt의 Temperature를 극도로 낮추고, 지시문의 패널티 강도를 더 살벌하고 강압적인 어조로 동적 패치하여 2차 재시도(Retry)를 때리거나, 그것조차 실패하면 답변 호출을 영구 포기한다.
- 자기 모순이 탐지 배열에 찍혔다면 프롬프트의 어조를 탓할 일이 아니다. 이는 한 번의 트랜잭션으로 생성해야 할 연속된 문장의 길이가 현재 할당된 VRAM 및 타겟 모델의 어텐션(Attention) 가중치 윈도우 스팬 한계를 논리적으로 초과하여 시신경이 터져버린 것이다. 오라클은 이를 치료하기 위해 거대한 **단일 답변 생성 로직을 여러 개의 짧고 독립적인 연역 스텝으로 강제 분할하는 Chain-of-Thought(CoT) 파이프라인 아키텍처로 동적 변경(Dynamic Wrapping)**을 시도하여, 모델의 토큰 집중력을 리셋시켜 환각을 물리적으로 치료해 낸다.