법조문에도 git blame이 생긴다면? 미국 연방법전 변경 이력을 재현한 Lexifina

한눈에 보는 핵심 요약
개발자는 git blame과 git checkout으로 코드 한 줄을 누가 언제 썼는지, 과거 특정 시점의 파일이 어땠는지 바로 확인할 수 있습니다. 그런데 변호사가 미국 연방법 조문에서 같은 정보를 얻으려면 조문 끝에 붙은 주석을 한참 들여다봐야 하는 경우가 많습니다. Lexifina는 이 문제를 풀기 위해 미국 연방법전(U.S. Code)에 Git과 비슷한 방식을 적용했습니다.
- 미국 연방법전 9개 편의 개정 지시를 순서대로 적용해 법령 변경 이력을 만들었습니다.
- 2017년 이후 공개본 사이의 변경 365건 중 361건이 다음 공개본과 정확히 일치했습니다.
- 각 문구마다 그 문구를 만든 법률과 시행일을 연결했습니다.
- 언어 모델(LLM)이 자주 보이는 시간적 오류를 줄이려면 검증할 수 있는 이력이 필요하다는 점을 강조합니다.
왜 조문의 출처와 시행 시점을 함께 추적해야 할까?
법전은 법 그 자체가 아니다
의외로 잘 알려지지 않은 사실이 있습니다. 의회가 법률로 직접 제정한 편을 제외하면, 미국 연방법전은 법의 **일응의 증거(prima facie evidence)**일 뿐입니다. 법전과 연방 법률집인 Statutes at Large의 내용이 다르면 법률집이 우선합니다(근거: 1 USC § 204(a)).
- 법률개정실은 특정 공법까지 반영한 **공개본(release point)**을 발행하고 법전을 계속 재편합니다.
- 참고로 제41편을 법률로 직접 제정하기 위한 H.R. 5185가 2025년 9월 8일 발의되었습니다.
정보가 여기저기 흩어져 있다
어떤 문장을 만든 공법은 개정 주석에 서술형으로 적혀 있고, 그 문장의 시행 시점은 별도의 시행일 주석에 있는 경우가 많습니다. 게다가 법령 이력에는 조문 내용뿐 아니라 시행일과 소급 적용 범위도 필요합니다. 당시 공개된 법전만 봐서는 이후에 만들어진 법률이 과거 사건의 적용 결과를 어떻게 바꿨는지 알 수 없기 때문입니다.
원문에서는 그 예로 소기업 채무 한도를 듭니다. 한도 상향이 끊겼던 2022년의 공백기와 이후 6월에 제정된 법률처럼, 소급 적용이 얽히면 특정 날짜에 어떤 규정이 적용되는지 판단하기가 무척 까다로워집니다.
언어 모델이 법률 질문에서 자주 틀리는 이유
법률 조사 초기에 LLM을 쓰는 일이 늘고 있지만, 모델은 법률의 정확한 계보를 잘 활용하지 못합니다. 뮌헨 공과대학교(TUM)의 독일 법령 질의응답 연구는 두 가지 시간적 오류를 확인했습니다.
- 학습 기준일 이후 이미 대체된 규칙을 계속 적용함
- 사건에 옛 규정을 적용해야 하는데도 새 규정을 고름
한 모델은 학습 기준일 이후의 질문에서 혼자 답했을 때 정답률이 **24%**였지만, 관련 법령 원문을 검색해 함께 제공하자 **87%**까지 올라갔습니다.
그럼 과거 조문을 모델이 만들게 하면 될까?
같은 연구진의 법령 자동 통합 연구에 따르면 그렇게 간단하지 않습니다.
- 모델이 독일 개정법을 과거 조문에 적용한 결과는 공식 조문과 93~99% 비슷했습니다.
- 하지만 정확히 일치한 비율은 훨씬 낮았습니다. 단일 개정은 약 절반, 연속된 개정은 약 5분의 1만 정확히 맞았습니다.
- 전문가들은 거의 일치하는 결과에서도 법적으로 중요한 오류를 찾아냈습니다.
결론적으로 과거 조문을 모델이 생성하게 하는 것만으로는 부족하며, 이력 자체를 검증할 수 있어야 합니다.
Lexifina는 어떻게 이력을 만들었나
개정 지시를 다시 실행하는 방식
Lexifina는 2017년 이후 각 공개본 사이에 제정된 공법을 모은 뒤, 개정 지시를 날짜순으로 이전 조문에 적용하고, 그 결과를 다음 공개본과 비교했습니다. Git으로 치면 커밋을 하나씩 다시 적용한 다음, 결과가 공식 태그와 같은지 확인하는 셈입니다.
| 항목 | 결과 | |---|---| | 전체 변경 | 365건 (9개 편) | | 다음 공개본과 정확히 일치 | 361건 | | 나머지 | 4건 (어디까지 확인했는지 표시) |
시행일은 어떻게 정했나
- 261건: 기본 원칙에 따라 제정일에 시행
- 72건: 시행일 주석을 따름
- 29건: 개정문 자체에 적힌 날짜를 따름
- 1건: 내려지지 않을 수도 있는 행정기관의 결정에 달려 있어, 추측하지 않고 조문 반영에서 제외
사용자가 쓸 수 있는 기능
- 📅 날짜별 조문 조회: 선택한 날짜에 유효했던 조문을 보고, 현재와 문구가 다른 부분을 확인
- 🎨 문구별 출처 색상 표시: 각 문구를 그것을 만든 법률에 따라 색으로 구분 (말 그대로 법조문판
git blame) - 🔗 정의 용어 추적: 정의된 용어가 바뀌면 그 용어를 쓰는 다른 조항을 모두 확인
- 🔔 조항 구독: 마지막 방문 이후 무엇이 바뀌었는지 추적
아직 남은 한계
Lexifina는 한계도 솔직하게 밝히고 있습니다.
- 소급 적용 미반영: 후속 법률의 소급 효과가 그 법률이 다루는 과거 날짜 조회에 아직 반영되지 않습니다. 예를 들어 2022년 한도 상향 공백기에 접수된 사건을 조회하면 낮은 한도가 표시되고, 6월 법률이 적용 결과를 바꿨다는 경고도 나오지 않습니다.
- 패턴 기반 시행일 해석: 시행일 주석을 정해진 패턴으로 읽기 때문에, 특이한 문구는 제정일을 시행일로 처리합니다.
- 그래서 각 변경에는 해당 법률의 원문 링크가 붙어 있으며, 중요한 사안은 원문을 직접 읽어야 합니다.
- 서비스를 어떤 형태로 제공할지는 아직 검토 중입니다.
에디터의 한마디
이 프로젝트의 핵심은 AI가 법을 알아서 해석하는 것이 아니라, 검증할 수 있는 근거 데이터를 만드는 데 있습니다. 99%쯤 맞는 결과로는 법률 분야에서 충분하지 않기 때문입니다. 개발자에게 익숙한 버전 관리 개념이 법률이라는 전혀 다른 분야에서 이렇게 쓰일 수 있다는 점이 흥미롭습니다. 법률 AI나 RAG 시스템을 만드는 분이라면 시점(temporal)을 고려한 데이터 설계가 얼마나 중요한지 참고해 볼 만한 사례입니다.