대한민국 법령 디지털트윈 구축 명세서 (Digital Twin Specification)
0. 문서 목적
본 문서는 대한민국 법령 체계(법령–조–항–호 및 상·하위 관계, 개정 이력, 시행일 등)를 “디지털트윈”으로 구축하여, 향후 PandektRAG(Geometry-first) 기반 탐색·검색·설명 생성에 일관되게 활용할 수 있도록 데이터 모델·파이프라인·인프라 운영전략을 정리한다.
1. 핵심 목표와 성공 기준
1.1 핵심 목표
- 정확성: 최신 법령 상태(현행), 과거 버전(이력), 시행일 기반 효력 구분을 정합성 있게 보존한다.
- 추적 가능성: “어떤 근거로 이렇게 저장됐는지”를 재현 가능한 형태로 기록(수집본, 변환본, 해시, 업데이트 로그)한다.
- 탐색 가능성: Bartleby Agent가 PandektRAG 도구를 통해 DB 위를 구조적으로 탐색(조문 그래프/계층/상호참조)할 수 있게 설계한다.
- 확장성: 텍스트 검색 + 구조 검색 + 벡터 검색(pgvector 등)까지 통합 가능하게 한다.
- 운영 단순성: 비용·운영 부담을 최소화하면서도 매일/주기적 업데이트가 안정적으로 돌아가게 한다.
1.2 성공 기준
- “오늘 기준 현행”과 “특정 과거일자 기준 효력”을 요청 시 정확히 재현 가능하다.
- 개정 시나리오에서 **어떤 조문이 어떻게 바뀌었는지(diff)**를 레코드로 남긴다.
- PandektRAG가 조·항·호 관계 및 참조관계를 따라 근거를 회수할 수 있다.
- 업데이트 파이프라인이 1일 1회 자동 실행(GitHub Actions 중심)되고 실패 시 원인 추적 가능하다.
2. 범위 정의
2.1 1차 범위(MVP 디지털트윈)
- 법령 본문(법률/시행령/시행규칙 등 “법령” 계층) 텍스트
- 계층 구조: 법령 → 편/장/절(있으면) → 조 → 항 → 호
- 메타: 공포일, 시행일, 개정일, 현행/폐지 상태
- 참조: 다른 법령·조문 인용(가능한 범위에서 링크/엣지로 저장)
- Master Statute ID(MST): “법령 마스터 식별자” 네이밍 컨벤션 적용
3. 전체 아키텍처 개요
3.1 논리 흐름
- 수집(Crawl/Fetch)
- 정규화/파싱(Preprocess): 조·항·호 분해, 메타 추출, 참조 인식
- 적재(Load): PostgreSQL에 “정형 구조 + 원문 + 버전” 저장
- 색인(Index): (a) 키워드/전문 검색, (b) 구조 탐색용 그래프/관계, (c) 벡터 색인(pgvector 등)
- RAG 탐색(Serve): Bartleby Agent가 PandektRAG 도구를 사용하여 디지털트윈을 탐색·회수 → Marquardt가 최종 생성
3.2 인프라 원칙
- PostgreSQL을 디지털트윈의 1차 저장소로 채택(현행+이력+관계)한다.
- GitHub Actions를 가능한 한 활용하여 매일 업데이트/검증 루틴 자동화한다.
- 서비스 운영(법망 웹)과 디지털트윈(배치/DB)은 관심사 분리하여 운영한다.
4. 데이터 모델(안)
4.1 기본 엔티티
statute(법령 마스터)mst_id(Master Statute ID)title_ko,type,status등
statute_version(법령 버전)mst_id+version_idpromulgated_at(공포),effective_at(시행),text_norm(정규화) 등
article_unit(조문 단위: 조/항/호)unit_id,mst_id,version_idunit_type,parent_unit_id,label,content등
reference_edge(참조 관계)from_unit_id→to_unit_idref_type(인용/위임/준용 등),confidence
5. 업데이트 파이프라인 설계
5.1 일일 배치(권장)
- 매일 1회: 원천 데이터 체크 -> 변경분 다운로드 -> 파싱/정규화 -> DB 적재 -> 참조 추출/정합성 검사
5.2 GitHub Actions 활용
- CPU 위주의 크롤링/파싱/정규화/검증은 Actions로 수행한다.
6. PandektRAG 탐색 로직 (Query Pattern)
Bartleby Agent가 PandektRAG 도구를 사용하여 수행하는 탐색 패턴이다.
A. 설계 원칙
- 구조 우선(Structure-first): 법령 계층·참조·시점(효력)을 먼저 좁히고, 벡터는 랭킹/리콜 보강 용도로 사용한다.
- 시점 일관성(Temporal consistency): 질의 시점
t에 유효한 버전을 우선한다. - 증거 단위 원칙: 최종 증거는 기본적으로 **“조문 단위(article_unit)”**로 반환한다.
B. 주요 쿼리 패턴
- 법령명 기반 Seed 찾기:
title_ko정확/유사 매칭으로mst_id후보 확보. - 시점 t에 유효한 버전 선택:
effective_at <= t조건을 만족하는 최신version_id선택. - 조문번호/라벨 기반 Seed 찾기: "제10조" 등 명시적 라벨로 정확한
unit_id조회. - 계층 확장: 상위(조), 하위(항/호), 인접(±N개) 조문으로 맥락 확보.
- 참조 확장:
reference_edge를 따라 인용/준용/위임 관계에 있는 조문으로 확장 (Hop 제한). - 키워드/벡터 검색: 자연어 질의 시 FTS 및 pgvector 유사도로 후보군 확보.
C. 랭킹 결합
구조(Structure), 어휘(Lexical), 벡터(Vector) 스코어를 가중 합산하여 최종 증거를 선별한다.