법령을 쉽게. AI로 똑똑하게. 공공 Legal AI의 시작.
구글링으로 30분, GPT로 환각, LexDiff로 30초 — 법령·판례 근거까지.
▶ 클릭하면 유튜브에서 재생됩니다.
일상 언어로 법률을 질문하면 AI가 법령 원문과 판례를 근거로 답합니다. 단순 검색이 아닙니다.
- 🧠 AI 법률 검색 — "퇴직금 못 받았는데 어떻게 해야 하나요?" → 테미스 엔진(Claude)이 법제처 API에서 법령·판례를 직접 조회하고, 근거와 함께 실시간 스트리밍 답변. 단순 조문·판례 질의는 LLM 없이 즉시(fast-path), 후속 질문도 맥락을 기억합니다.
- ⚡ 신구조문 비교 — 개정 전후 변경점을 색깔로 하이라이팅. AI가 "뭐가 바뀌었는지" 한 줄로 요약해줍니다. 개정 연혁에서 원하는 시점을 골라 그 시점의 신·구 대조와 AI 해설을 볼 수 있습니다.
- 📋 3단 위임법령 비교 — 법률 → 시행령 → 시행규칙을 한 화면에서 나란히 대조. 위임 조항끼리 자동 연결.
- 🔍 법령 영향 추적기 — 법이 바뀌면 어디까지 영향이 가는지 자동 분석. 상위법 → 시행령 → 시행규칙 → 관련 조례까지 연쇄 영향을 추적하고, AI가 심각도(위험/검토/참고)를 분류해줍니다.
- 🏛️ 조례 벤치마킹 — "출산장려금 조례"를 전국 지자체에서 한번에 검색. 우리 구 vs 옆 구 조례를 AI가 비교 분석해서 "뭐가 다른지" 표로 정리해줍니다.
- 🔗 위임 미비 탐지기 — "대통령령으로 정한다"고 써놨는데 정작 시행령이 없는 조항을 자동으로 찾아냅니다. 입법 공백을 한눈에 파악.
- ⏪ 타임머신 — 날짜를 선택하면 그 시점의 법령 원문을 보여줍니다. 현행법과 나란히 놓고 뭐가 바뀌었는지 비교. 중간 개정 이력도 클릭 한 번으로 이동.
- 📖 판례·해석례 통합 — 대법원 판례, 법제처 해석례, 조세심판원 재결례, 관세청 해석을 한 곳에서 검색. 법령 전문을 스크롤하면 화면의 조문을 따라 관련 판례가 실시간 갱신되는 라이브 판례 패널.
- 🔤 약칭·구어 검색 — "인공지능법 30조"처럼 비공식 약칭으로 검색해도 공식 약칭·정식 법령명("인공지능기본법")을 자동 해소해 해당 조문으로 바로 이동.
- 🏠 자치법규 검색 — 전국 17개 시도 + 226개 시군구 조례/규칙 통합 검색.
- 📎 위임법령 추적 — 조문별 행정규칙(고시/훈령)을 자동 연결. 법령 간 관계를 그래프로 시각화.
- 🕘 조회 이력 — 열람한 법령·조례·판례를 홈과
Cmd/Ctrl+K에서 한 번에 다시 열기. 로그인 시 기기 간 동기화. - 📑 별표·별지 뷰어 — 조문이 참조하는
[별표 N]·별지 제N호서식을 클릭 한 번으로 원문(PDF/HWP) 확인.
LexDiff는 현재 공개 베타입니다. Google 계정 로그인 후 누구나 무료로 사용할 수 있습니다.
| 기능 | 무료 한도 |
|---|---|
AI 법률 검색 (fc_rag) |
5회/일 |
AI 요약 (summarize) |
10회/일 |
법령 영향 추적 (impact) |
5회/일 |
조례 벤치마킹 (benchmark) |
5회/일 |
한도 초과 시 자정(KST) 리셋까지 대기하거나 BYOK로 무제한 사용 가능합니다.
본인 Google AI Studio API 키를 등록하면 쿼터 제한 없이 사용할 수 있습니다. 호출 비용은 본인 Google 계정에서 직접 청구됩니다.
- 등록 방법: 설정 → API 키 → Gemini API Key 입력
- 키 형식:
AIzaSy...(39자) 또는 신형AQ....(Google AI Studio 발급) - 저장 위치: 브라우저 로컬 스토리지 — 서버 DB에 저장하지 않습니다. 요청 헤더(
x-user-api-key)로만 전달 - 발급: aistudio.google.com/apikey (무료)
베타 품질 개선을 위해 익명화된 쿼리 로그를 수집합니다.
- 수집 항목: 질문 텍스트, AI 답변, 호출된 도구 목록, 응답 시간, confidence 점수, 에러 발생 여부
- 수집하지 않는 항목: Google 계정 정보, 이메일, 실명, BYOK API 키, 브라우저 핑거프린팅
- 저장 위치:
logs/fc-rag-traces.jsonl(서버 로컬 + 관리자 대시보드) - 용도: RAG 파이프라인 튜닝, 환각 탐지, 도구 호출 실패 원인 분석
- 보존: 베타 기간 중 무기한, 정식 출시 후 정책 재공지
민감한 개인정보가 포함된 질문은 피해주시고, 수집을 원치 않으시면 BYOK 모드로 사용하세요 (BYOK 사용 시에도 품질 로그는 수집되나, 식별자 연결은 이루어지지 않습니다).
- 공무원·지자체 담당자 — 상위법령-조례 위임 관계 추적, 조례 개정 시 상위법 변경사항 확인
- 관세사·무역 전문가 — 관세법 3단 비교, 관세청 해석례, HS코드 분류 기준
- 세무사·변호사 — 세법 개정 영향 분석, 조세심판원 재결례, 법령해석례
⚖️ 법적 고지 — LexDiff는 법령 정보 제공을 위한 참고용 도구이며, 법률 자문을 대체하지 않습니다. 중요한 법적 판단 전에는 반드시 변호사·법무사 상담을 권장합니다.
git clone https://github.com/chrisryugj/lexdiff.git
cd lexdiff
pnpm install
cp .env.local.example .env.local # API 키 설정
pnpm dev # http://localhost:3000필수: Node.js 20+, pnpm 10+
GEMINI_API_KEY= # Google AI Studio (Gemini 3 Flash) — 필수
GEMINI_ROUTER_API_KEY= # S1 Router 전용 분리 키 (Gemini 3.1 Flash-Lite)
RELAY_URL= # 테미스 릴레이 주소 (선택 — 미설정 시 Gemini 단일 엔진)
RELAY_TOKEN= # 테미스 릴레이 Bearer 토큰
LAW_OC= # 법제처 Open API 키 (무료)
SUPABASE_URL= # Supabase 프로젝트 URL
SUPABASE_ANON_KEY= # Supabase 익명 키 (쿼터 관리용)
UPSTASH_REDIS_REST_URL= # 캐시/rate-limit
UPSTASH_REDIS_REST_TOKEN=LexDiff를 만들며 벡터 청크 RAG와 그래프 RAG를 모두 검토했지만, 결국 Verbatim RAG(전문주입형)를 택했습니다. AI가 Function Calling으로 법제처 API를 실시간 호출해, 조문 원문을 글자 그대로 주입하는 방식입니다. 개인적으로는 법률 도메인에선 이 접근이 가장 정직하다고 믿고 있습니다.
- 쪼개면 의미가 흔들립니다 — "전항의 경우", "다만 ..." 같은 단서·참조 구조가 청크 경계에서 끊기면 의미가 반대로 뒤집히는 경우를 자주 봤습니다.
- 환각이 걱정됐습니다 — 유사 청크가 섞이면 산업안전보건법 38조를 관세법 38조로 착각할 수 있고, 법률에선 이런 혼동을 감당하기 어렵습니다.
- 개정 추적이 까다롭습니다 — 벡터 유사도만으로 "지금 이 순간의 현행 조문"을 보장하기는 쉽지 않았습니다.
- 재인덱싱 부담 — 매일 개정되는 법령·조례·판례를 계속 재임베딩하는 운영 비용이 현실적으로 맞지 않았습니다.
법령은 이미 법제처가 관리하는 잘 짜인 그래프에 가깝습니다 — 법률↔시행령↔시행규칙 위임, 조문↔판례 인용, 개정 이력까지요. 이 위에 저희가 별도 그래프를 얹으면 결국 법제처 원본보다 뒤처지기 마련이고, 오차가 누적될수록 원문성(原文性)이 흐려진다고 느꼈습니다. 그래서 자체 그래프를 만드는 대신, 법제처 API 자체를 그래프 인터페이스로 쓰는 쪽을 택했습니다.
- 원자성 — 조/항/호 단위 원문이 잘리지 않은 채 그대로 주입됩니다
- 항상 최신 — 법제처가 단일 진실 소스라 재인덱싱이 필요 없습니다
- 현행성 가드 — 매 질의에 오늘 날짜를 주입하고, 도구 결과의 시행일자·
[현행]/[연혁]라벨·구(舊) 법령명을 대조해 개정·분법 전 법령으로 답하지 않습니다 - 추적 가능한 근거 — citation verify가 답변을 실제 원문과 대조합니다
- Agentic 다단계 추론 — "판례 → 인용 법령 → 현행 조문" 체인을 LLM이 49개 도구로 직접 따라갑니다
적어도 법률 도메인에서는, RAG가 "검색엔진 + LLM"이기보다 "법제처 API를 손에 든 법률 리서처" 에 가까워야 한다고 생각합니다.
사용자 질문
↓
Google OAuth + Supabase 일일 쿼터 체크 (BYOK면 skip)
↓
① Answer Cache (Upstash, 동일 질의 0.3s) → ② Fast Path (조문·판례·별표 패턴은 LLM 없이 직접 조회)
↓ miss
Pre-evidence (search_ai_law 1회 선조회 → 시스템프롬프트 주입)
↓
테미스 릴레이 (구독 Claude Sonnet + korean-law MCP) — Primary
↓ 실패/타임아웃/BYOK 시 폴백
Gemini 3 Flash — Function Calling RAG 루프 (멀티턴, 49개 등록 도구)
↓ 도구 호출 (TypeScript 직접 import, MCP 래핑 없음)
법제처 Open API + 17개 결정문 도메인 + Supabase 법령 그래프
↓
실시간 SSE 스트리밍 (tool_call/tool_result/answer_token) → UI
↓
citation verify (15s) + confidence 판정 (4신호) + answer cache
| 레이어 | 스택 |
|---|---|
| 프론트엔드 | React 19, Tailwind v4, shadcn/ui, Framer Motion |
| 백엔드 | Next.js 16 (proxy.ts), Zod validation, SSE 스트리밍 |
| AI (primary) | 테미스 릴레이 — 구독 Claude Sonnet + korean-law MCP (맥미니, Tailscale Funnel) |
| AI (fallback/BYOK) | Gemini 3 Flash (Function Calling) — 49개 등록 도구 |
| AI (router) | Gemini 3.1 Flash-Lite (S1 쿼리 분류) |
| 데이터 | 법제처 Open API, Supabase PostgreSQL, Upstash Redis, IndexedDB |
| 테스트 | Vitest, 단위·통합·E2E |
참고: 내부적으로 Hermes Agent API(GPT-5.4) 경로도 구현되어 있으나 의도적으로 비활성(
DISABLE_HERMES)입니다. 릴레이 미설정(RELAY_URL없음) 환경에서는 Gemini 단일 엔진으로 동작합니다.
app/api/ API 라우트 (법령, 판례, AI RAG, 비교...)
components/ 법령 뷰어, 검색, 모달, 판례 패널
lib/ 핵심 로직 (링크 생성, 법령 파서, FC-RAG 엔진)
fc-rag/ Function Calling RAG — tool-registry, engine, engine-shared
quota.ts 일일 쿼터 체크 (Supabase RPC)
api-auth.ts Google OAuth + 쿼터 게이트 + BYOK 분기
hooks/ React 훅 (법령 뷰어, 검색, 판례)
demo/ Remotion 인트로 영상 소스
important-docs/ 아키텍처·RAG·시스템 현황 상세 문서
Next.js 16 · React 19 · TypeScript 5 · Tailwind CSS v4 · shadcn/ui · Radix UI · Claude Sonnet (테미스 릴레이) · Gemini 3 Flash · Gemini 3.1 Flash-Lite · Supabase · Upstash Redis · IndexedDB · Vitest · Framer Motion · Remotion
Business Source License 1.1 (BSL-1.1)
이 프로젝트는 BSL-1.1 라이선스가 적용됩니다.
- ✅ 비프로덕션(개발, 테스트, 평가 등) 용도로만 사용 가능합니다.
- ❌ 프로덕션 환경에서의 사용(상업적 이용 포함)은 금지됩니다.
- 🕒 전환 일자(Change Date, 2030-04-14) 이후에는
Apache License 2.0으로 자동 전환됩니다.
라이선스 관련 특수한 문의가 필요하시다면 GitHub Issues를 이용해주세요.
Made by 류주임 @ 광진구청 AI동호회 AI.Do
