8.5.1 문장 단위 출처 표기(Fine-grained Citation)의 강제화 전략
RAG 시스템의 가장 고질적인 사용자 경험(UX) 실패 중 하나는 타겟 모델이 장황하게 10개의 문단을 렌더링해 놓고는, 그 밑바닥에 ’참고 문서: A규정, B매뉴얼, C가이드’라고 뭉뚱그려 던져놓는 이른바 ‘문서 단위(Document-level) 번들 인용’ 방식이다. 이렇게 될 경우, 만약 10개의 문단 중 단 하나의 문장에서 논리적 환각(Logical Hallucination)이나 심각한 수치 왜곡이 발생해도, 인간 검수자는 도대체 그 헛소리가 A, B, C 중 어느 문서의 어느 조항에서 기인했는지 증명할 방법이 없어 팩트 체크를 포기하게 된다.
따라서 신뢰할 수 있는 무결점 오라클 아키텍처는 모델의 응답에 대해 반드시 문장 단위(Fine-grained, Sentence-level) 거시적 출처 표기를 강제해야만 한다. 이는 모든 주장(Claim)과 서술이 렌더링될 때마다 마치 학술 논문의 미주(Endnote)나 각주 형식처럼 그 문장에 바로 맞닿은 [Doc_ID:Chunk_ID] 형태의 명시적 포인터를 기계적으로 렌더링하도록 타겟 LLM을 억압적이고 강압적인 프롬프트로 조종하는 전략이다.
1. 프롬프트 엔지니어링을 통한 식별자(Identifier) 강제 매핑 룰셋
타겟 LLM이 문서 단위가 아닌 ’문장 단위’로 쪼개어 인용 태그를 달게 만들기 위해서는, 오라클 시스템의 전처리 파이프라인에서 검색된 참조 문서(Context) 덩어리를 프롬프트에 주입할 때부터 애초에 텍스트를 철저히 넘버링(Numbering)된 특수 블록 객체로 치환해야 한다.
- 전처리 모듈의 문서 주입 형식:
<Context> [Doc1_Chunk1]: 당사의 2024년 정기 휴가는 15일로 배정된다. [Doc1_Chunk2]: 단, 신입사원의 경우 별도의 협의를 거쳐 10일로 제한된다. [Doc2_Chunk1]: 10년 차 이상 장기 근속자는 보너스 휴가 5일을 추가로 받는다. </Context>
그리고 타겟 LLM을 구속하는 System Prompt 레이어에 다음과 같은 가장 무자비하고 차가운 '절대 규칙(Absolute Constraints)'을 하드코딩한다.
> *"System: 당신은 결코 독자적인 문장을 스스로 창작해 내서는 안 된다. 당신이 생성하는 모든 마침표(.) 앞에는, 그 문장을 연역해 낸 핵심 근거인 문서의 배열 넘버링을 반드시 `[DocX_ChunkY]`와 같은 브래킷 태그 형식으로 부착하라. 단 하나의 문장이라도 이 브래킷 식별자가 누락되어 있거나 여러 개의 문장을 합쳐서 뭉뚱그려 표기한다면, 당신의 출력 세션은 즉시 파기될 것이다."*
## 2. 오라클의 렌더링 결과 검열 및 정규화(Normalization) 파서
타겟 LLM이 위와 같은 인스트럭션 제어를 받아 텍스트를 모두 렌더링하고 나면, 텍스트가 클라이언트 UI에 도달하기 전 백엔드 단에서 대기하고 있던 오라클 정규화 파서(Normalization Parser)가 개입하여 트랜잭션을 후가공한다.
파서는 생성된 전체 응답 스트링을 다시 마침표(.)를 기준으로 문장 배열($S_{1}, S_{2}, \dots, S_{n}$)로 해체한 뒤, 루프를 돌며 각 문장 끝에 정규표현식 매칭 패턴(예: `\[Doc[0-9]+_Chunk[0-9]+\]`)에 해당하는 태그가 온전히 붙어있는지 거시적으로 1차 스캐닝을 실시한다.
| 타겟 LLM 생성 문장 파이프라인 | 오라클 파서(Parser)의 일차원 문법 스캐닝 결과 |
| :--- | :--- |
| 신입사원의 정기 휴가는 10일로 제한됩니다. `[Doc1_Chunk2]` | **[Pass]** 토큰 식별자 문법 규칙 준수 확인 |
| 10년 차 이상 직원은 총 20일의 휴가를 받습니다. | **[Fail & Reject]** 마침표 앞 인용 브래킷 누락 발작 감지 |
이처럼 문장 단위 출처 표기 강제화 전략은, LLM이 '자신이 참조하지도 않은 상상 속의 지식'을 함부로 텍스트로 렌더링하는 것을 일차적으로 머뭇거리게 만드는 거대한 심리적/확률론적 압박 기제(Constraint)로 작용한다.
오라클 엔진은 이 정규표현식 파서를 통해, 문장 끝에 인용 태그를 달지 않은 문장이 발견되는 즉시 해당 응답 트랜잭션 전체를 무너진 논리로 판정하여 배포를 기각(Reject)하고 타겟 LLM에게 강력한 패널티 가중치와 함께 재작성을 요구하는 자동 폴백(Fallback) 라우터를 발동시킨다. 이는 가장 단순한 형태의 포맷 강제화(Formatting Enforcement) 기술이지만, RAG 파이프라인의 환각(Hallucination) 투명성을 확보하는 가장 중요한 첫 번째 관문이다.