8.9.1 법률/규정(Legal) 도메인에서의 조항 원문 대조 엄격 오라클
법률 문서나 정부 규제 지침(Compliance)을 다루는 Legal RAG 시스템에서 LLM이 지닌 가장 큰 죄악은 **‘유의어 번역(Synonym Translation)’**이다. 타겟 모델은 “기한의 이익을 상실한다“라는 엄밀한 법적 용어를 사용자에게 쉽게 설명한답시고 “돈을 당장 갚아야 한다“라고 렌더링하거나, “선량한 관리자의 주의 의무(선관주의 의무)“를 “최선을 다해 관리해야 한다“라는 모호한 도덕적 표현으로 뭉개버리곤 한다.
법무 도메인에서 이러한 시맨틱 뭉개기(Semantic Blurring)는 패소나 벌금으로 직결되는 치명적인 할루시네이션(Hallucination)이다. 법률 조항은 일상어가 아니며, 오직 그 단어 자체로만 판례(Precedent)와 연결되는 식별자(Identifier)의 역할을 수행한다. 따라서 Legal 오라클은 일반적인 의미론적 충실성(Semantic Faithfulness)을 넘어, **‘N-gram 기반의 조항 원문 Exact Match(정확한 일치)’**를 강제하는 가장 혹독한 검증망을 설계해야 한다.
1. 조항 원활화(Legal Term Blurring) 방지를 위한 N-gram 교차 검증
일반적인 LLM-as-a-Judge는 생성된 텍스트와 원본 문서의 뜻만 통하면 100점을 주지만, Legal 오라클은 NLI(자연어 추론) 과정을 생략하고 수학적인 문자열(String) 일치 알고리즘을 최우선으로 가동한다.
- 핵심 조항/용어의 NER(Named Entity Recognition) 추출: 오라클은 사전 학습된 법률 전용 토크나이저를 사용해 원본 법률 문서(Context)와 생성된 답변(Answer) 양쪽에서 법적 전문 용어(예: ‘채무불이행’, ‘손해배상’, ‘근로기준법 제24조’, ‘과실치사’)를 1차로 무자비하게 추출해 낸다.
- Lexical Overlap 점수 측정 (BLEU/ROUGE-N의 변형): 오라클은 추출된 법적 용어 리스트가 타겟 LLM의 답변 속에 조사 하나 틀리지 않고 100% 동일한 형태(N-gram)로 보존되어 있는지 2차 검사한다.
- 제로 톨러런스(Zero-Tolerance) 판결: 원본 문서에는 ’손해배상의 예정’이라고 적혀 있는데, 타겟 모델이 이를 ’예상되는 페널티’라고 유의어로 교체(Paraphrasing)하여 렌더링했다면, 오라클은
Term Mismatch Exception을 발생시키고 해당 답변을 즉각 셧다운시킨다. 뜻이 맞더라도 원문 그대로의 법률 용어를 쓰지 않으면 무조건 탈락이다.
2. 제외 조항(Exclusion Clause) 누락 탐지 오라클
법률 문서의 본질은 “무엇이 가능하다“보다 **“단, 어떠한 경우에는 불가하다(Exclusion)”**라는 예외 조항에 있다. LLM의 요약(Summarization) 본능은 글을 깔끔하게 만들기 위해 이 길고 복잡한 단서 조항을 자주 누락시킨다. 이는 사용자에게 불완전한 법적 조언을 제공하는 끔찍한 결과를 낳는다.
Legal 오라클 시스템은 프롬프트의 지시문을 넘어, 구조적인 파서(Parser)를 통해 예외 조항의 누락을 기계적으로 적발한다.
- 오라클 미들웨어는 검색된 원본 문서 안에
["단,", "제외한다", "다만,", "예외로 한다", "불구하고"]등의 키워드가 존재하는지 정규표현식(Regex)으로 백그라운드 스캐닝을 돌린다. - 만약 원본에 ’단서 조항 키워드’가 존재함에도 불구하고 타겟 LLM이 생성한 텍스트 배열 안에 해당 메타 의미가 누락되었다면, 오라클은 “제외 조항(Exclusion Clause)이 누락된 불완전 고지“로 판단하여 트랜잭션을 리젝트(Reject)한다.
- 타겟 모델에게는 *“원본 문서에 명시된 ’단서 조항’이 누락되었습니다. 예외 조건을 반드시 원문 그대로 포함하여 다시 작성하십시오”*라는 강제 피드백을 주입하여 자동 수정(Self-Correction) 로프를 회전시킨다.
3. 원문 조항의 강제 인용(Hardcoded Citation) 템플릿
법률 오라클을 통과하기 위한 가장 안전하고 권장되는 아키텍처는 타겟 LLM의 텍스트 생성 방식 자체를 제한(Constraint)하는 것이다. 사용자에게 조항을 ’당신의 언어로 설명(Explain in your own words)’하게 두지 않고, 반드시 [법적 견해] + [원문 직접 인용] 형태의 하드코딩된 JSON 구조로 강제 렌더링하게 만든다.
{
"explanation": "해당 계약 해지는 정당한 사유로 인정될 수 있습니다.",
"legal_clause_exact_quote": "계약의 해제는 손해배상의 청구에 영향을 미치지 아니한다. (민법 제551조)",
"reference_doc_id": "doc_civil_law_551"
}
오라클은 legal_clause_exact_quote 밸류(Value) 값이 Vector DB에서 당겨온 원본 해시(Hash) 값과 1 byte만 달라도 위변조로 간주하여 차단한다. 법무 도메인에서 오라클의 역할은 LLM의 유창함을 극대화하는 것이 아니라, LLM이 법을 해석하고 창작하려는 오만함을 가차 없이 짓밟고 철저한 **법률 검색 및 앵무새형 반환기(Parrot-like Responder)**로 그 권한을 축소/통제하는 것에 있다.