Skip to content

대한민국 법령 디지털트윈 구축 명세서 (Digital Twin Specification)

0. 문서 목적

본 문서는 대한민국 법령 체계(법령–조–항–호 및 상·하위 관계, 개정 이력, 시행일 등)를 “디지털트윈”으로 구축하여, 향후 PandektRAG(Geometry-first) 기반 탐색·검색·설명 생성에 일관되게 활용할 수 있도록 데이터 모델·파이프라인·인프라 운영전략을 정리한다.

1. 핵심 목표와 성공 기준

1.1 핵심 목표

  1. 정확성: 최신 법령 상태(현행), 과거 버전(이력), 시행일 기반 효력 구분을 정합성 있게 보존한다.
  2. 추적 가능성: “어떤 근거로 이렇게 저장됐는지”를 재현 가능한 형태로 기록(수집본, 변환본, 해시, 업데이트 로그)한다.
  3. 탐색 가능성: Bartleby Agent가 PandektRAG 도구를 통해 DB 위를 구조적으로 탐색(조문 그래프/계층/상호참조)할 수 있게 설계한다.
  4. 확장성: 텍스트 검색 + 구조 검색 + 벡터 검색(pgvector 등)까지 통합 가능하게 한다.
  5. 운영 단순성: 비용·운영 부담을 최소화하면서도 매일/주기적 업데이트가 안정적으로 돌아가게 한다.

1.2 성공 기준

  • “오늘 기준 현행”과 “특정 과거일자 기준 효력”을 요청 시 정확히 재현 가능하다.
  • 개정 시나리오에서 **어떤 조문이 어떻게 바뀌었는지(diff)**를 레코드로 남긴다.
  • PandektRAG가 조·항·호 관계 및 참조관계를 따라 근거를 회수할 수 있다.
  • 업데이트 파이프라인이 1일 1회 자동 실행(GitHub Actions 중심)되고 실패 시 원인 추적 가능하다.

2. 범위 정의

2.1 1차 범위(MVP 디지털트윈)

  • 법령 본문(법률/시행령/시행규칙 등 “법령” 계층) 텍스트
  • 계층 구조: 법령 → 편/장/절(있으면) → 조 → 항 → 호
  • 메타: 공포일, 시행일, 개정일, 현행/폐지 상태
  • 참조: 다른 법령·조문 인용(가능한 범위에서 링크/엣지로 저장)
  • Master Statute ID(MST): “법령 마스터 식별자” 네이밍 컨벤션 적용

3. 전체 아키텍처 개요

3.1 논리 흐름

  1. 수집(Crawl/Fetch)
  2. 정규화/파싱(Preprocess): 조·항·호 분해, 메타 추출, 참조 인식
  3. 적재(Load): PostgreSQL에 “정형 구조 + 원문 + 버전” 저장
  4. 색인(Index): (a) 키워드/전문 검색, (b) 구조 탐색용 그래프/관계, (c) 벡터 색인(pgvector 등)
  5. 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_id
    • promulgated_at(공포), effective_at(시행), text_norm(정규화) 등
  • article_unit (조문 단위: 조/항/호)
    • unit_id, mst_id, version_id
    • unit_type, parent_unit_id, label, content
  • reference_edge (참조 관계)
    • from_unit_idto_unit_id
    • ref_type(인용/위임/준용 등), confidence

5. 업데이트 파이프라인 설계

5.1 일일 배치(권장)

  • 매일 1회: 원천 데이터 체크 -> 변경분 다운로드 -> 파싱/정규화 -> DB 적재 -> 참조 추출/정합성 검사

5.2 GitHub Actions 활용

  • CPU 위주의 크롤링/파싱/정규화/검증은 Actions로 수행한다.

6. PandektRAG 탐색 로직 (Query Pattern)

Bartleby Agent가 PandektRAG 도구를 사용하여 수행하는 탐색 패턴이다.

A. 설계 원칙

  1. 구조 우선(Structure-first): 법령 계층·참조·시점(효력)을 먼저 좁히고, 벡터는 랭킹/리콜 보강 용도로 사용한다.
  2. 시점 일관성(Temporal consistency): 질의 시점 t에 유효한 버전을 우선한다.
  3. 증거 단위 원칙: 최종 증거는 기본적으로 **“조문 단위(article_unit)”**로 반환한다.

B. 주요 쿼리 패턴

  1. 법령명 기반 Seed 찾기: title_ko 정확/유사 매칭으로 mst_id 후보 확보.
  2. 시점 t에 유효한 버전 선택: effective_at <= t 조건을 만족하는 최신 version_id 선택.
  3. 조문번호/라벨 기반 Seed 찾기: "제10조" 등 명시적 라벨로 정확한 unit_id 조회.
  4. 계층 확장: 상위(조), 하위(항/호), 인접(±N개) 조문으로 맥락 확보.
  5. 참조 확장: reference_edge를 따라 인용/준용/위임 관계에 있는 조문으로 확장 (Hop 제한).
  6. 키워드/벡터 검색: 자연어 질의 시 FTS 및 pgvector 유사도로 후보군 확보.

C. 랭킹 결합

구조(Structure), 어휘(Lexical), 벡터(Vector) 스코어를 가중 합산하여 최종 증거를 선별한다.