짐바브웨 법률 사무소를 위한 법률 OS 구축기 — AI 지원 법률 조사(Legal Research)의 실제 모습
요약
짐바브웨의 특수한 법률 환경에 맞춘 AI 기반 법률 운영체제(MutemoOS) 구축 사례를 다룹니다. 단순 RAG의 한계를 극복하기 위해 실시간 법령 스크래핑, 벡터 저장소, 구어체-법률 용어 매핑 등 엔지니어링적 해결책을 제시합니다.
핵심 포인트
- 특정 관할권(짐바브웨)에 특화된 리걸 테크의 필요성 강조
- 단순 RAG의 한계인 환각된 인용 및 용어 불일치 문제 분석
- PostgreSQL, ChromaDB, FastAPI를 활용한 기술 스택 구성
- 실시간 법령 업데이트를 위한 데이터 파이프라인 구축
제 아내는 짐바브웨 하라레(Harare)에 있는 법률 사무소의 변호사이자 파트너입니다. 그녀는 20년 넘게 변호사로 활동하며, 수많은 사건을 처리하는 동시에 강연 활동을 병행하고 있으며, 일주일에 사흘은 두 개의 라디오 방송국에서 법률 교육 프로그램을 운영하고 있습니다. 그녀는 118개의 진행 중인 사건들을 다이어리와 메모장에 기록하며 관리해 왔습니다.
이것은 비판이 아닙니다. 그녀는 10년 넘게 변호사로 활동해 왔고 그 시스템은 효과적이었습니다. 하지만 제가 AI 도구들을 활용해 개발을 시작하면서 계속 이런 생각이 들었습니다. 그녀가 아프면 어떻게 될까? 주니어 어소시에이트(Junior Associate)가 그녀가 담당하는 사건의 마감 기한을 알아야 할 때는 어떻게 될까? 누군가 아침 심리를 앞두고 밤 10시에 법률 질문을 조사해야 한다면 어떻게 될까?
그래서 저는 MutemoOS를 구축했습니다. 제가 배운 점들을 공유합니다.
범용 리걸 테크(Legal Tech)의 문제점
대부분의 법률 조사(Legal Research) 도구들은 런던이나 뉴욕의 대형 로펌(BigLaw)을 위해 만들어졌습니다. 이 도구들은 비용이 많이 들고, 대역폭(Bandwidth)을 많이 소모하며, 영국 관습법(English Common Law)이나 미국 연방법 관할권(US Federal Jurisdiction)에 맞춰져 있습니다. 이들은 dies induciae(기한 연장 기간)가 무엇인지 알지 못합니다. 짐바브웨 노동법원(Labour Court of Zimbabwe)에 대해서도 들어본 적이 없습니다.
특정 관할권(Jurisdiction)을 위해 구축할 때에만 흥미로운 엔지니어링 문제들이 나타납니다:
- 판례(Case law)가 ZimLII, Veritas, ZLHR, 그리고 Law Reports of Zimbabwe 등에 흩어져 있습니다.
- 법령(Statutes)이 예고 없이 개정됩니다 — 2023년 노동 개정법(Labour Amendment Act 2023)이 모든 것을 바꾸어 놓았습니다.
- 변호사들은 법령에는 등장하지 않지만 특정 법적 조항과 연결되는 구어체 용어(
PostgreSQL — 사건(matters), 문서(documents), 청크(chunks), 일정(calendar events)
ChromaDB — 의미론적 검색(semantic search)을 위한 벡터 저장소 (법률 사무소 컬렉션)
Laws.Africa KB API — 실시간 짐바브웨 법령 + 판결문
...
Legal Intelligence Feed는 ZimLII, Veritas, ZLHR, NewsDay를 매일 스크래핑하여 멀티 인스턴스 푸셔(multi-instance pusher)를 통해 MutemoOS로 콘텐츠를 전송하는 별도의 FastAPI 서비스입니다. 이는 여러 법률 사무소 고객을 위해 구축되었습니다.
근거 기반 합성(grounded synthesis) 문제
검색의 첫 번째 버전은 단순한 RAG(Retrieval-Augmented Generation) 방식이었습니다: 쿼리 임베딩(embed query) → 청크 검색(retrieve chunks) → 답변 합성(synthesise answer). 적절한 콘텐츠가 인덱싱되어 있을 때는 잘 작동했습니다. 하지만 두 가지 중요한 측면에서 실패했습니다.
1. 환각된 인용(Hallucinated citations). 검색된 청크에 해당 조항이 실제로 포함되어 있지 않음에도 불구하고, 모델이
짐바브웨 법률 용어에는 불일치(mismatch) 문제가 있습니다. 변호사가 비공식적인 두 번째 관계를 일컫는 구어체 표현인 "small houses"에 대해 질문합니다. 하지만 법률에서는 이를 Marriages Act [Chapter 5:15] 제41조에 따른 "civil partnerships (민사 파트너십)"라고 부릅니다. 임베딩 모델 (all-MiniLM-L6-v2)은 이러한 매핑을 알지 못합니다.
문제는 관습법(customary law)에서 더욱 심화됩니다. 짐바브웨는 일반법(Roman-Dutch law)과 관습법(customary law)이 공존하는 이원적 법 체계(dual legal system)를 운영하며, 법률 실무의 상당 부분은 이 두 체계를 동시에 다룹니다. 의뢰인이 들어와서 "lobola(로볼라)를 지불했지만 결혼 등록은 하지 않았다"라고 말합니다. 이는 단순한 문화적 진술이 아닙니다. 이는 Customary Marriages Act [Chapter 5:07]에 따른 특정 법적 체계와 연결되며, Administration of Estates Act에 따른 별도의 상속 규칙, 부양 청구(maintenance claims), 유산 관리(estate administration) 절차를 수반합니다. 시스템은 "lobola", "roora", "unregistered customary union (미등록 관습적 결합)"이 모두 동일한 법적 프레임워크에 진입하는 항목이며, 적용되는 법률이 Marriages Act에 따라 등록된 민사 결혼(civil marriage)과는 실질적으로 다르다는 점을 이해해야 합니다.
해결책은 2단계 폴백(fallback) 구조입니다:
Layer 1 — 유사도 임계값 필터링 (Similarity threshold filtering). ChromaDB가 유사도 임계값(0.35) 미만의 결과를 반환하면 이는 노이즈일 가능성이 높습니다. 이를 필터링하여 제거합니다. ChromaDB가 임계값 이상의 결과를 반환하지 않으면, FTS(Full Text Search, 전체 텍스트 검색) 폴백이 작동합니다:
# FTS fallback — 단어 중복 + 정확한 구절 보너스
query_words = set(query_lower.split()) - STOPWORDS
for chunk in chunks:
...
Layer 2 — 짐바브웨 특화 쿼리 확장 (Zimbabwe-specific query expansion). 의미론적(semantic) 검색과 FTS가 모두 실패할 경우, Claude Haiku가 짐바브웨 법률 유의어를 사용하여 쿼리를 확장합니다:
QUERY_EXPANSION_PROMPT = """당신은 짐바브웨 법률 조사 어시스턴트입니다.
주요 짐바브웨 특화 매핑:
- "civil partner" / "unmarried couple" → "section 41 Marriages Act Chapter 5:15 unregistered union"
...
결과: "small houses"를 검색하면 ✓ 녹색 배지와 함께 Marriages Act의 section 41이 반환되며, 짐바브웨 법률에 따른 시민 파트너십(civil partnership) 보호에 관한 완전한 답변을 제공합니다.
dies induciae 계산기
이 기능은 실무자들에게 가장 중요한 기능입니다. 짐바브웨의 모든 절차적 단계에는 주말, 공휴일, 그리고 — 오직 변론 요지서(Heads of Argument)의 경우에만 — 고등법원 휴정기(High Court recess periods)를 제외한 영업일 기준의 마감일이 존재합니다.
고등법원 휴정기 규칙은 구체적입니다: 휴정기는 오직 변론 요지서(Heads of Argument)에 대해서만 dies(기한)를 정지시킵니다. 그 외의 모든 마감일(NITDs, 답변서(plea), 증거 개시(discovery))은 휴정기 중에도 중단 없이 진행됩니다. 이를 하드코딩된 규칙 세트로 구축하면 다음과 같습니다:
class CourtProcedureEngine:
FIXED_HOLIDAYS = {
(1,1),(2,21),(4,18),(5,1),(5,25),
...
휴정기 기간은 하드코딩되는 대신 사용자가 제공합니다(사무국(Registrar)이 매년 법원 달력을 공표함). 법무법인이 법원 연도 시작 시 휴정기 날짜를 한 번 입력하면 모든 사건에 자동으로 적용됩니다.
변호사가 "고등법원 신청(High Court Application)"을 선택하고 송달일(service date)을 입력하면, 시스템은 모든 마감일을 계산하고, 캘린더 이벤트를 자동으로 생성하며, 중요한 마감일을 빨간색으로 표시합니다:
- 노동법원 변론 요지서(Labour Court Heads of Argument): 변론 제한 위험(BAR RISK) — 제출 실패 시 구두 변론이 금지됨 (Rule 19)
- 치안판사 법원 답변서(Magistrates Court plea): 궐석 재판 위험(DEFAULT JUDGMENT RISK) — 방어 출석(appearance to defend) 후 7일 이내
Laws.Africa 통합
가장 영향력 있었던 단일 변화는 Laws.Africa 지식 베이스 API를 통합한 것이었습니다. 짐바브웨 법령을 스크래핑하여 PDF를 수동으로 업로드하는 대신, 이제는 그들의 벡터 인덱스(vector index)에 직접 쿼리합니다:
async def search_laws_africa(query: str, top_k: int = 3) -> list:
payload = {
"text": query,
...
이제 모든 검색은 세 가지 소스를 동시에 쿼리합니다: 로컬 ChromaDB (법무법인 판례 + 업로드된 문서), Laws.Africa legislation-zw (모든 짐바브웨 법령), 그리고 Laws.Africa judgments-zw (모든 짐바브웨 판결문). 근거 확인(grounding check)은 이 세 가지 모두에 대해 실행됩니다.
나를 놀라게 한 것
구어체(Colloquial language)가 작동합니다. 쿼리 확장(Query expansion) 방식 덕분에 변호사는 동료에게 문제를 설명하듯 그대로 입력할 수 있습니다. "제 의뢰인은 작은 집입니다"라고 입력해도 적절한 법적 프레임워크를 찾아냅니다. 이것이 가장 큰 UX(사용자 경험) 측면의 승리였습니다. 법률 AI 사용의 장벽은 AI 자체가 아니라, 법전처럼 말해야 한다는 기대치라는 사실이 밝혀졌기 때문입니다.
근거 확인(Grounding)이 정확도(Accuracy)보다 더 가치 있습니다. 자신이 무엇을 모르는지 표시하지 않은 채 90%의 정확도를 보이는 시스템은, "파산법(Insolvency Act) 정보가 누락되었습니다"라는 ⚠ 배지를 명확히 달고 75%의 정확도를 보이는 시스템보다 더 위험합니다. 변호사들은 불확실성을 다룰 수 있습니다. 하지만 보이지 않는 불확실성은 다룰 수 없습니다.
임베딩 모델(Embedding model)이 한계점입니다. all-MiniLM-L6-v2는 범용 모델입니다. 이 모델은 짐바브웨 법에서 "적법한 시민 혼인(qualified civil marriage)"과 "이슬람 혼인(Islamic marriage)"이 같은 의미라는 것을 알지 못합니다. 쿼리 확장이라는 우회책이 도움이 되긴 하지만, 장기적인 정답은 법률 도메인 전용 임베딩 모델(Legal-domain embedding model)을 사용하는 것입니다. 이것이 다음 마이그레이션(Migration) 과제입니다.
다음 단계
- 멀티 테넌시(Multi-tenancy)를 위한 PostgreSQL 마이그레이션 (현재는 법인별 Railway 인스턴스 사용)
- 더 나은 임베딩 모델 (OpenAI
text-embedding-3-small또는 legal-BERT) - LSZ 요금 체계 통합 — 짐바브웨 법률 협회(Law Society of Zimbabwe) 요금표를 기반으로 수수료 자동 제안
- IECMS 브릿지 — 짐바브웨의 새로운 전자 법원 접수 시스템
제품은 현재 라이브 상태입니다. 제 아내가 매일 사용하고 있습니다. 다음 달에는 두 번째 법인이 온보딩(Onboarding)할 예정입니다.
아프리카나 다른 소외된 법률 시장을 위해 리걸테크(Legal tech)를 구축하고 계신다면, 진심으로 경험을 공유하고 싶습니다. 문제들은 흥미롭고 경쟁은 치열하지 않습니다.
Lenard Francis는 Tofamba Technology의 창립자로, MutemoOS(법률 실무 관리)와 AlertEngine(FastAPI를 위한 인간 승인 기반 사고 복구 시스템)을 구축하고 있습니다. 짐바브웨 하라레 기반. @leoofharare
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기