#006 서류 자동 생성 아키텍처
| 항목 | 내용 |
|---|---|
| 회차 | 6/10 |
| 개시일 | 2026-04-20 |
| Tier | A (기술 아키텍처, Pack 1 Phase 0 착수 선행) |
| 진행 상태 | ✅ 완료 · 수렴 · ADR 0005 발행 (2026-04-20) |
| 참여자 수 | 6인 (Chair · P1 · P12 · P15·P16·P17 신규 · P7 원격) |
| 예상 산출물 | RAG 파이프라인 스펙 · 비식별화 구현 상세 · 품질 평가 프레임워크 · Pack 별 템플릿 전략 · ADR 0005 |
| 선행 ADR | 0001 · 0002 · 0003 · 0004 |
Executive Summary (경영진 1분 독해)
- Pack 1 Phase 0 착수 전 기술 아키텍처 확정이 목표. #004·#005 에서 확정된 AX 3A·Firebase AI Logic·Tier 1~3·비식별화 4단·Vector Search 격리 원칙을 실행 가능한 파이프라인으로 구체화.
- 4축 논의: RAG 구조 · 비식별화 + 재식별 스캐너 · 품질 평가·변호사 diff 피드백 루프 · Pack 별 서류 템플릿 전략.
- 신규 3인 (P15 RAG 품질·P16 한국어 법률 LLM·P17 ML 엔지니어) 정식 참여. P7 컴플라이언스 원격 자문.
회의 범위 변경 (2026-04-20 Chair 지시):
- 집단소송 모듈 Phase 4 이관 (가장 마지막). R1 에서 다뤘던 "집단 손배 배치·쿠팡 파일럿" 관련 논의는 Phase 4 착수 시점에 재논의. 본 회의 R2·R3 는 Pack 1~5 개별 사건 서류 자동 생성 아키텍처 집중.
§1. 참여자 (Participants)
기존 풀에서 재소환 (3인)
P1. 송무 변호사 (개인 사무소)
- 이번 회의 역할: 서류 초안의 변호사 수용 가능 조건 확정. "초안을 열자마자 변호사가 덮지 않게 하는" 수준이 무엇인지.
- 관심사: (1) 청구취지·청구원인 초안 품질 (2) 판례 인용 실재성 (3) 변호사 수정 diff 수집 UX.
P12. AI 제품 아키텍트
- 이번 회의 역할: 전체 파이프라인 설계 주도.
AiProvider어댑터·weight 체계·Firebase AI Logic 정합성. - 관심사: ADR 0004 전환 타임라인과 파이프라인 설계 정합.
신규 소환 (3인)
P15. RAG 품질 전문가 (신규 정식)
- 직업·소속: AI 스타트업 ML 엔지니어 7년차, LLM 평가·Ragas·TruLens·citation precision 전문. #005 참관 후 정식.
- 경력: RAG 파이프라인 평가 프레임워크 구축 경험 3~4건. 법률·의료 등 high-stakes 도메인 평가 특화.
- 전문 분야: MRR·nDCG·hallucination detection·citation precision/recall·LLM-as-judge·retrieval eval·Ragas/TruLens.
- 이번 회의 역할: 품질 평가 프레임워크 설계·hallucination 방어 3단·citation traceability·회귀 테스트 자동화.
- 관심사: (1) 법률 도메인 특화 평가 벤치 (2) 2년차 피드백 루프의 통계적 유의성 (3) 쿠팡 사태 같은 집단 손배 모듈 품질 기준.
- 편향: 품질 기준 엄격, 배포 지연 감수.
P16. 한국어 법률 LLM·임베딩 전문가 (신규)
- 직업·소속: NLP 연구자 + ML 엔지니어 하이브리드 8~10년차. 한국어 법률 도메인 특화.
- 경력: Ko-SRoBERTa·KoELECTRA·Ko-BigBird 법률 파인튜닝 레퍼런스. 한국 판례 임베딩·HWP 파서·한국어 법률 NER 모델 구축.
- 전문 분야: 한국어 법률 임베딩 모델 평가·파인튜닝·한국어 NER (법률 개체)·HWP·DOCX 파싱·대법원 판례 구조화.
- 이번 회의 역할: 한국어 법률 특화 임베딩·NER 모델 선정·법률 용어 사전·Ko-LegalQA 자체 벤치 구축.
- 관심사: (1) Gemini embedding vs Ko-SRoBERTa 앙상블 (2) 한국어 법률 NER 오탐·미탐율 (3) HWP 5.0 바이너리 파서 완성도.
- 편향: 한국어 특화 모델 선호, 파인튜닝 과투자 경향.
P17. ML 엔지니어 (신규, 실무)
- 직업·소속: ML Platform/MLOps 엔지니어 7~9년차. Vertex AI·Cloud Run·Kubernetes. P12 아키텍트 설계의 실행자.
- 경력: RAG 파이프라인 배포·스케일링·모니터링·A/B 테스트 인프라·LLM 운영 비용 최적화. 대규모 B2B SaaS ML 파이프라인 구축 레퍼런스 3건.
- 전문 분야: 파이프라인 배포·증분 인덱싱·Cloud Run GPU·비용 최적화·모니터링 (Cloud Logging·Error Reporting·Prometheus)·A/B 테스트 infra.
- 이번 회의 역할: P12 설계를 Firebase AI Logic + Vertex AI 스택에서 실제 돌아가게 만들기. 배포 파이프라인·모니터링·비용 통제·성능 튜닝.
- 관심사: (1) 무료 전환 후 AI 호출 3~5배 비용 통제 (2) 대량 집단 손배 원고 배치 처리 (3) 소버린 AI 전환 시 2-phase dual-write 마이그레이션.
- 편향: 실행·운영 중심. 조기 배포보다 안정성 선호.
원격 자문 (1인)
P7. 보안/컴플라이언스 DPO
- 원격 자문 역할: 비식별화 4단의 법적 경계·Audit 로그 구조·DPIA 시점 (ADR 0004 Phase 1 말 18M) 지원.
Chair
의사결정·ADR 0005 서명.
이번 회의 불참여
- P2·P3·P4·P5·P6·P8·P9·P10·P11·P14: 각자 전문 회의에서 등판. #006 은 순수 기술 아키텍처.
§2. 회의 아젠다 (Agenda)
상위 안건
Pack 1 Phase 0 착수 선행 조건으로 서류 자동 생성 파이프라인 아키텍처를 실행 가능한 수준으로 확정한다. ADR 00010004 의 원칙 (AX 3A·Firebase AI Logic·Tier 13·비식별화 4단·Vector Search 격리·Audit·무료) 을 코드·비용·eng-day 로 구체화.
전제 (확정 — 변경 불가)
- AI 스택: Firebase AI Logic (Gemini) → 국산 소버린 AI 전환 대기. OpenAI·Anthropic 등 대체 provider 금지 (ADR 0004 §4).
- 벡터 DB: Vertex AI Vector Search 단일 인덱스 +
restricts: [{namespace: "tenantId", ...}]메타필터. Pro tier 별도 인덱스 분리 금지 (ADR 0004 §9, 무료 전제). - 비식별화 4단: 정규식 → NER → 재식별 스캐너 → 수동 검토 큐. 강도
moderate기본. - 격리:
tenants/{tid}/...경로 격리 +assertTenantFilterPhase 0 강제 검증 + CMEK Phase 2+ 일괄. - Audit: 감사 로그·동의 이력·인용 역추적 UI (3A 공통 전제).
- weight 체계: 0 (결정론)·1 (단순 AI 호출)·3 (전략 보고서). RAG 참조 weight 2 신설 검토 (P12 R1 제안).
- embeddingVersion: Day 0 필드 필수.
논의할 4축
Q1. RAG 파이프라인 아키텍처
- 문서 수집 → 전처리 → 청킹 → 임베딩 → 인덱싱 → 쿼리 → 검색 → reranking → 컨텍스트 조립 → 생성 → 후처리
- Phase 0 최소 구현 vs Phase 1·2 확장
AiProvider인터페이스 (소버린 전환 준비)- RAG 참조 weight 신설 여부
- 응답 latency 목표 (p50·p99)
Q2. 비식별화 + 재식별 스캐너 구현
- 한국어 법률 NER 모델 선정 (
Ko-BERT파인튜닝 vs Gemini zero-shot vs HuggingFace 모델) - 강도 레벨별 마스킹 범위 (aggressive·moderate·minimal)
- 재식별 스캐너 알고리즘 (k-익명성 테스트·LLM-as-judge)
- 수동 검토 큐 UX 및 책임 분담 (사무소 vs 너홀로)
- HWP·DOCX 파싱 한계 및 폴백
Q3. 품질 평가 + 변호사 수정 diff 피드백 루프
- RAG 품질 평가 (MRR·nDCG·hallucination detection·citation precision/recall)
- Ko-LegalQA 자체 벤치 구축 (100~500 문제)
- 변호사 수정 diff 저장 스키마 (
documents/{id}/revisions/) - 2년차 DPO 파인튜닝 계획 (or few-shot 예시 재투입)
- A/B 테스트 infra (Feature flag·shadow traffic)
- 회귀 테스트 자동화
Q4. Pack 별 서류 자동 생성 템플릿 전략
- Pack 1 (대여금): 내용증명·지급명령·소장·답변서·준비서면
- Pack 2 (이혼): 재산분할 계산·양육비·소장·답변서 (위자료·친권·면접교섭 ✗)
- Pack 3 (부동산): 명도·차임·이전등기 + 집단 손배 모듈 (원고 수백~수천 명 동시)
- Pack 4 (상속): 유류분·재산분할 심판
- Pack 5 (계약): 부당이득·계약 손배
- 각 Pack 의 RAG 컨텍스트·NER 개체 유형·변호사 diff 학습 목표
진행 계획
- Tier A, 3회차 예상
- R1: 6인 병렬 독립 발산 (P7 원격 자문 포함)
- R2: 5~6인 크로스 토크
- R3: 수렴·ADR 0005 발행 · Phase 0 착수 Go/No-Go 관문 확정
예상 산출물
- RAG 파이프라인 블록 다이어그램 + 각 블록 eng-day·비용
- 비식별화 4단 구현 상세 (코드 스켈레톤·NER 모델·재식별 스캐너)
- 품질 평가 프레임워크 + Ko-LegalQA 벤치 구축 계획
- Pack 1~5 템플릿 전략 매트릭스
- ADR 0005 — 서류 자동 생성 아키텍처
§3. 회의 내용 (Proceedings)
§3.1 Round 1 — 독립 발산 (완료, 2026-04-20)
한 줄 요약 (6인)
| 역할 | 핵심 입장 |
|---|---|
| P1 변호사 | "초안 수용 10 조건": 판례 인용 100% 실재 · 조문 current · 청구취지 숫자 정확 · 사무소 문체 · 판사 tendency 반영 · 반대 가능성 언급. 비식별화 UI 이중 레이어 (화면 원본, 서버 마스킹본). diff 수익 분배 (크레딧 환급). Pack 별 killer: 대여금 차용증 OCR·이자 테이블 / 이혼 부동산등기부 PDF 드래그 / 쿠팡 1,000명 위임장 OCR + 원고 포털. 3개월 후: 준비서면 2h→40m, 월 1건 더 수임. |
| P12 AI 아키텍트 | 12 블록 × Phase 0/1/2 매트릭스. AiProvider 인터페이스 코드 + weight 2 신설 (RAG 참조, $0.018/호출). assistLimit 재조정 free 6 · starter 60 · pro 220. Vector Search 단일+restricts, 768 dim, docType namespace 논리 분리. 집단 손배: RAG 1회 공유 + 원고 weight 1 × N, 1,000명 $8/case. Phase 0 28 eng-day · Phase 1 95 · Phase 2 180 · Phase 3 120 (총 423). 놓친 리스크: embeddingVersion silent corruption · Gemini 빈 JSON 환불 누락. |
| P15 RAG 품질 | Ragas 채택 + citation validator 자체. Ko-LegalQA Phase 0 100문제 (판례 40·조문 30·청구원인 20·계산 10). Hallucination 방어 3단: 사건번호 재조회 (자동 삭제) · 조문 법령정보센터 API (하이라이트) · 변호사 서명 전 체크리스트. Citation Precision 0.95+ non-negotiable. diff citationChanges.removed > 0 → hallucination 회귀 경보. 집단 손배 1,000명 → 50명 샘플 자동 검증 + 변호사 서명. Phase 0 Week 1 품질 인프라 착수 필수. |
| P16 한국어 법률 LLM (신규) | Phase 0 = Gemini 단일, Phase 1 = KURE-v1 앙상블 (RRF). NER Phase 0 정규식 + Gemini zero-shot structured output. 법률 용어 사전 Pack 별 100단어. HWP 5.0 텍스트만 + HWPX/DOCX/PDF Phase 0, pyhwp Phase 1. 청킹 조 경계 512 token + 15% 오버랩. 재식별 k≥5 (지명+금액+날짜 / 사건번호+법원 조합). 놓친 리스크: 한자 정규화·법원 명칭 변경·토크나이저 불일치 숨은 폭탄 (청킹 char 기반 Phase 0 강제). |
| P17 ML 엔지니어 (신규) | Cloud Run NER/embedding min=0, Functions 짧은 trigger. 증분 인덱싱 60초 지연 · 10만 문서 1.5h $120 · 100만 $1,200. 비용 5단 절감 월 $20K → $10~12K. 집단 손배 1,000명 $5.90 · 10,000명 $59. assertTenantFilter CI + 런타임 + Sentry 3중. Phase 0 28 · 1 60 · 2 75 · 3 90 (합 253 eng-day). 놓친 리스크: 콜드 스타트 누적 (warm pool min=1)·Cloud Tasks 쿼터·Firestore write contention (분산 카운터). |
| P7 컴플라이언스 (원격) | 4단 회로차단기 (fail-closed). 수동 검토 사무소 변호사만, 사무원 금지 (제26조 주체 아님). k≥10 권장 (법률 보수). DPIA 외부 전문기관 6~8주 · Phase 1 중반 12M 착수. 수임약정서 + DPA 2중 (도입 거부 사무소 기능 disable). 쿠팡 집단소송 tenant 물리 격리 + AI 원칙 금지 권고. Phase 0 fail-closed 5 조건: 사이버 보험·DPA·SOP·회로차단기·WORM Audit. AI 기본법 2026.1 시행 — 고영향 AI 지정 가능성 외부 법률자문 필수. |
발언 전문 (축약)
원본 전문은 매우 길어 핵심 결정·스펙·수치 중심으로 축약. 필요 시 원본 복원 가능.
P1. 변호사 — 초안 수용 10 조건
- 판례 인용 100% 실재 (Mata 이후 AI 사건번호 복붙 전 대법원 검색 필수 개인 룰)
- 법령 current 버전 (개정 이력 반영)
- 청구취지 숫자 한 자리도 틀리지 않음
- 당사자 표시 완전성 (주민번호 뒷자리·주소·송달장소)
- 별지 계산서 엑셀 xlsx 원본 호환 (PDF ✗)
- 사무소 문체 학습 ("피고는 ~하였는 바" 패턴)
- 판사 tendency 반영 (Tier 3)
- 반대 가능성 언급 ("피고는 ~ 주장할 것으로 예상")
- 인용 출처 각주 토글 (제출본 꺼짐, 검토본 켜짐)
- word count 범위 준수
비식별화 현장 수용: "원본으로 작성해주세요"가 첫 반응. UI 이중 레이어 — 화면 원본, 서버·학습 마스킹본 자동 분리. 수동 검토는 변호사 직접 (사무원 금지), 큐 1건당 15초 이내. 재식별 사고 DPA + 너홀로 법률자문 무료 제공 없으면 Tier 2 이상 올릴 변호사 없음.
diff 수집 조건: opt-out 버튼 사건 단위 (이혼·성범죄·집단 손배 개별 원고 OFF) · 학습 범위 투명 · 크레딧 환급 수익 분배. 자동 diff 수집이 수동 피드백 버튼보다 나음.
Pack 별 killer:
- Pack 1: 차용증 OCR → 이자·변제 테이블 자동 → 30분 절약
- Pack 2: 부동산 등기부·예금 거래내역 PDF 드래그 → 재산 목록 자동 분류. 분할 비율은 변호사 판단
- Pack 3 (쿠팡): 위임장 스캔 OCR → 원고 테이블 자동 + 미제출 daily 리포트 + 개별 원고 포털 (1,000명 전화 불가)
- Pack 4: 유류분 RAG 우수. 기여분은 AI 금지, 체크리스트만
- Pack 5: 부당이득 유형 분류 3 질문 → 분기 템플릿
변호사법 방어: 외부 송출 전 변호사 승인 게이트 hard-coded, 사무장 권한 차단, 의뢰인 AI 고지 자동, 인용 pin-cite + 검증 hash 로그.
안 쓸 시나리오: (1) 초안 판례 인용 3회 연속 오류 → 영구 이탈. Citation Precision 99.9% 미만 시 feature flag off (2) AI 가 내 수정본으로 경쟁 변호사 초안 강화 증거 → 감정적 이탈.
3개월 후 기대: 준비서면 1건 2h → 40m · 야근 주 3 → 주 1 · 월 1건 더 수임.
P12. AI 아키텍트 — 전체 아키텍처
12 블록 Phase 0/1/2 매트릭스:
- 수집: HWP(
hwp.js)·DOCX(mammoth)·스캔(Document AI) → 자동 축적 trigger → 집단 손배 배치 - 전처리: 비식별화 4단 + SHA256 dedup → Tier 1 → Tier 2 옵트인
- 청킹: 512 token·overlap 64 조항 경계 → semantic splitter → 집단 손배 원고별
- 임베딩: Gemini text-embedding-004 (768 dim) 단일.
embeddingVersion Day 0. Ko-SRoBERTa 앙상블 28M 재검토 (이중 인덱스 비용 2x) - 인덱싱: restricts: tenantId 필수 · shard 1→4, replica 1→2, CMEK Phase 2+
- 쿼리확장: 없음 → 동의어 사전 1,500개 → LLM HyDE
- 검색: top-K=20·
assertTenantFilter강제 → 필터 확장 - Rerank: Phase 0 없음 → Gemini Flash 자체 cross-encoder(Cohere 제외 — 외부 API 우회 우려) → KoBERT distill self-host
- 컨텍스트 조립: 사무실 기억 + 사건 요약 → + 조문·판례 → + 집단 손배 템플릿
- 생성: Gemini Flash structured JSON → Pro 분기 (전략) → tool-use (조문 조회·계산)
- 후처리: 실재성 검증 (사건번호 DB 조회 + 조문 국가법령정보 API) · 워터마크 · 환각 샘플링
- Audit:
tenants/{tid}/auditLog/→ BigQuery export → 개인정보위 제출 포맷
AiProvider 인터페이스 코드:
export interface AiProvider {
readonly providerId: "gemini" | "hyperclova" | "solar";
readonly embeddingVersion: string;
generate(contents, opts?): Promise<GenerateResult>;
embed(texts): Promise<EmbedResult>;
rerank(query, candidates): Promise<RerankResult>;
}
Phase 0 리팩터 6 eng-day (lib/ai/client.ts → lib/ai/providers/gemini.ts + 배럴 래퍼).
weight 체계 확장:
| weight | 기능 | 실비 |
|---|---|---|
| 0 | 대시보드 브리핑 (공유) | $0.003 |
| 1 | 문서·증거 요약 | $0.008 |
| 2 (신설) | RAG 참조 (top-20 → rerank top-5 → 생성) | $0.018 |
| 3 | 전략 보고서 | $0.035 |
assistLimit 재조정 (전 기능 무료 하 쓰로틀): free 6 · starter 60 · pro 220. Phase 2 후반 pro 40% 가정 시 월 $22,000 (+8% vs ADR 0004). ADF 지표 상승으로 상쇄.
latency 목표: weight 1 p50 1.5s/p99 5s · weight 2 3s/8s · weight 3 10s/30s. p99 30% 초과 시 Cloud Monitoring alert → degraded mode.
Vector Search: 단일 인덱스 + 사무실 기억(docType=memory) + 공용 판례(docType=publicCase, tenantId=PUBLIC) namespace 논리 분리. 쿼리 시 tenantId IN [myTid, PUBLIC]. 768 dim, shard 1→2→4, replica 1→2.
Phase 별 eng-day: Phase 0 28 · Phase 1 95 · Phase 2 180 · Phase 3 120 = 총 423. 2명 풀스택 × 10개월 = Phase 3 완주.
놓친 리스크 2:
embeddingVersionsilent corruption —assertEmbeddingVersion(query, current)유닛 테스트 Phase 0- Gemini 빈 JSON 환불 누락 —
classifyRefund에/Unexpected (end of JSON|token)/i추가 (0.5 eng-day)
P15. RAG 품질 — 평가·피드백
Ragas 채택 + citation validator 자체 (tools/eval/citation_validator.py — 국가법령정보 API + 대법원 검색 HEAD).
Ko-LegalQA v0.1 (Phase 0, 100문제):
- 단답 조문 40 · 판례 매칭 30 · 청구원인 20 · 계산 10
- 평가자: 시니어 변호사 2명 + 주니어 1, 인당 20만원 × Pack × Phase = 600만원 예산
Hallucination 방어 3단 상세:
| 단계 | 검증 | 구현 | Latency | UX |
|---|---|---|---|---|
| 1. 사건번호 재조회 | 정규식 → 대법원 HEAD | +200~400ms 병렬 | 자동 삭제 + 경고 배지 | |
| 2. 조문 실재 확인 | 국가법령정보 API + 24h 캐시 | +50~100ms | 하이라이트 경고 (개정 false positive 대비) | |
| 3. 변호사 서명 전 체크리스트 | DocSignGate 컴포넌트 | UX 15초 | 미체크 제출 불가 |
False positive 대응: 조문 개정 → HEAD 실패 시 3초 재시도 1회 · 폐지 조문 status repealed 배지 · 관리자 화이트리스트 config/citationOverrides/.
diff 스키마 확장:
{
originalText, finalText,
diff: {
levenshtein, editRatio, sectionEdits: Record<string, number>,
fullReplace: boolean, citationChanges: { added, removed, modified }
},
modelVersion, promptVersion, experimentId?
}
품질 회귀 탐지:
- baseline: 직전 30일 editRatio 중앙값
- 알람: rolling 7일 editRatio +15%p 상승 → Slack
citationChanges.removed > 0비율 5% 초과 → hallucination 회귀 경보- fullReplace rate 10% 초과 → 프롬프트 롤백
A/B infra: config/appMetadata.features.ai.experiments.{name}.rollout deterministic bucketing. 최소 샘플 200건/variant.
Phase 별 품질 목표:
| 지표 | P0 | P1 | P2 | 소버린 Go |
|---|---|---|---|---|
| Faithfulness | 0.85 | 0.92 | 0.95 | 0.90+ |
| Citation Precision | 0.95 (hard) | 0.97 | 0.98 | 0.95+ |
| Ko-LegalQA F1 | 0.70 | 0.80 | 0.88 | 0.80+ |
| 변호사 editRatio 중앙값 | <0.35 | <0.20 | <0.12 | <0.20 |
소버린 Go 3개 동시: Ko-LegalQA F1 0.80+ AND Faithfulness 0.90+ AND Citation Precision 0.95+. 단일 지표 cherry-pick 금지.
집단 손배 품질 기준:
- 사건번호·조문 오류 0건
- 손해액 오류 <0.1% 원고 (1,000명 중 1명 이하)
- 청구원인 부정확 <2%
- 인적사항 mismatch 0건
- 1,000명 → 랜덤 50명
sample-verify재계산 불일치 시 전체 배치 차단
놓친 품질 리스크 2:
- 한국어 형태소로 인한 retrieval drift — Phase 0 Week 2 Mecab 전처리 + BM25 하이브리드 ablation
- "침묵의 회귀" — production 쿼리 주간 20건 샘플 벤치 지속 추가 (drift-aware benchmarking)
P16. 한국어 법률 LLM (신규)
임베딩 모델 매트릭스:
| 모델 | dim | 한국어 | 비용 | Latency | 결정 |
|---|---|---|---|---|---|
| gemini-embedding-001 | 3072 MRL | 다국어 | $0.00013/1K | 120ms | Phase 0 선택 |
| KURE-v1 (bge-m3 한국어 파인튜닝) | 1024 | 법률 특화 | 자체 | 80ms | Phase 1 앙상블 |
| upstage/solar-embedding-1-large | 4096 | MTEB-ko 1위 | $0.10/1M | 150ms | 28M 재검토 |
| jhgan/ko-sroberta-multitask | 768 | KorSTS 84.77 | 자체 | 40ms | 앙상블 대안 |
Phase 0 = Gemini 단일, Phase 1 = KURE-v1 앙상블 (RRF), 법률 전문 용어에서 Gemini 단독 대비 recall@10 +8~12%p 예상.
NER 하이브리드 2-pass:
- Pass 1 정규식: 주민번호·계좌·사건번호·법령 조문 — 100% recall 타겟
- Pass 2 Gemini zero-shot structured output: 인명·지명·금액·법원·판례번호 — few-shot 20예시
- Pass 3 재식별 스캐너 (Q7)
오탐·미탐: 미탐 <1% (주민번호·계좌 0%), 오탐 <15% (마스킹 과잉).
파인튜닝 데이터: AI-Hub 행정문서 NER 코퍼스 + 모두의 말뭉치 NE + 자체 라벨링 (판례 500건 × 변호사 1명 × 20h, Phase 1).
법률 용어 사전 Phase 0: Pack 별 100단어 · 쿼리 전처리 3~5개 변형 + 병렬 retrieval + RRF. 출처: 법령용어사전 (국가법령정보 Open API) · 법률용어 위키 공식 dump.
HWP 파서 매트릭스:
| 포맷 | 라이브러리 | 완성도 | 결정 |
|---|---|---|---|
| HWP 5.0 | hwp.js | 60% (텍스트만) | Phase 0 텍스트만, 표 누락 경고 UI |
| HWP 5.0 | pyhwp (Python) | 70% | Phase 1 Cloud Function 분리 |
| HWPX | 자체 XML 파서 | 100% | Phase 0 |
| DOCX | mammoth.js | 95% | Phase 0 |
pdf-parse | 90% | Phase 0 + Document AI OCR |
청킹 한국어 특화:
- 구조 우선
제N조 > 항 > 호 > 목hard boundary (조 경계에서만 split) - 한국어 1 token ≈ 1.5 char (법률 용어 2 char/token)
- Phase 0 512 token ≈ 800 char · 오버랩 15% (한국어 응집성)
- 판례 3-part 분리: 판결이유 · 결론 · 참조조문
재식별 스캐너 k≥5 조합 플래그:
- 지명 + 금액 + 날짜
- 사건번호 + 법원 (패턴 매칭 자동 마스킹)
- 직업 + 연령대 + 구 단위 지역
- 판례번호 직접 인용 (원본 판결문 실명 리스크)
소버린 전환 숨은 폭탄: 토크나이저 불일치 (Gemini SentencePiece → Solar BPE). 동일 500 token 청크가 380/580 변동 → 문맥 손실. 청킹 char/sentence 기반 Phase 0 강제.
놓친 리스크 3:
- 한자·한글 혼용 OCR (옛 판례
國家賠償法 第2條vs국가배상법 제2조) — Phase 0 정규화 레이어 - 법원 명칭 변경 (서울지법 → 서울중앙·동부) — 법원행정처 공개 데이터 alias map
- 소버린 토크나이저 불일치 (상기)
P17. ML 엔지니어 (신규)
배포 아키텍처:
| 단계 | 런타임 | 트리거 | 리소스 | latency |
|---|---|---|---|---|
| 수집(OCR) | Cloud Functions v2 | Storage onFinalize | 512MB·60s | 200ms/2s |
| NER | Cloud Run (min=0, max=20) | HTTP | 2vCPU·4GB | 400ms/1.5s |
| 임베딩 | Cloud Run (min=0, max=50) | HTTP batch 10건/req | 1vCPU·2GB | 600ms/2s |
| 인덱싱 | Cloud Functions v2 | Pub/Sub | 256MB·30s | 150ms/500ms |
| RAG 쿼리 | Server Action | HTTP | App Hosting | 80ms/300ms |
| 생성 | Server Action + Firebase AI Logic | HTTP | 클라 | 2s/8s |
| Audit | Cloud Function | Firestore onWrite | 256MB·10s | 50ms/200ms |
증분 인덱싱:
- 실시간 upsert: 60s 지연 목표 (Firestore onWrite → Pub/Sub
embedding-queue→ Cloud Run batch max 10건/5s) - 대량 배치 (10만): 1.5h $120 · 100만 (소버린 전환): 8h $1,200 야간 window
비용 5단 통제:
| 전략 | Phase | 절감 | eng-day |
|---|---|---|---|
| 1. 캐싱 계층화 | 0~1 | 25~35% | 8 |
| 2. Rate limit 3단 (user·tenant·feature) | 0 | 5% 남용 차단 | 5 |
| 3. Batch API (야간 drain) | 1 | 20% 비긴급 | 10 |
| 4. 모델 티어링 (Flash-Lite·Flash·Pro) | 1 | 40~50% | 12 |
| 5. 로컬 추론 (Phase 3 WebLLM + Gemma 2B T4) | 3 | 30~40% 추가 | 40 |
누적 효과: 월 $20K → $10~12K 압축.
집단 손배 배치 (쿠팡):
[변호사 CSV 1K~10K] → validate + 100-row chunks
→ Cloud Tasks (50/s · max_concurrent 100 · deadline 600s)
→ Cloud Run plaintiff-doc-gen (min=5 warm · max=100)
→ Firestore cases/{id}/plaintiffs/{pid}/generatedDocs
→ onCreate 진행률 카운터 + 변호사 알림
- 1,000 원고 = $5.90 · 10,000 원고 = $59 · Batch API 50% 할인 시 $30/만명
- 체크포인트
batchJobs/{jobId}/items/{pid}.status부분 재실행
모니터링 SLO:
| 지표 | 목표 | Alert |
|---|---|---|
| RAG p99 | < 3s | > 5s 5분 |
| 생성 p99 | < 10s | > 15s 5분 |
| error 5xx | < 0.5% | > 2% 3분 |
| refund rate | < 3% | > 7% 10분 |
| 일 AI 비용 | 예산 | 120% 즉시·150% paging |
A/B infra: Feature flag + shadow traffic (fire-and-forget) + P15 diff editRatio 연동 자동 롤백 (> 40% 24h 지속).
assertTenantFilter 3중:
- 유닛 테스트 (모든 Firestore query 검증)
- CI 차단 (
apps/web/scripts/check-tenant-filter.tsAST 검사, build fail) - 런타임
guardedQuery+ Sentry 즉시 알림
Phase 별 eng-day: Phase 0 28 · Phase 1 60 · Phase 2 75 · Phase 3 90 = 총 253. Phase 1부터 2명.
신규 발견 리스크 3:
- 콜드 스타트 누적 — min=0 체인 시 첫 RAG 요청 8~12초. 핵심 경로 min=1 warm pool (월 $40)
- Cloud Tasks 쿼터 (default 500/s) — 10K 원고 배치 시 큐 샤딩 (
batch-a,batch-b) - Firestore write contention — 공유 카운터
counters/ai-assists초당 1회 한계 → 분산 카운터 10 shard Phase 1 필수
P7. 컴플라이언스 DPO (원격 서면)
4단 비식별화 회로차단기 (fail-closed):
- 정규식 (주민·계좌·사건번호·조문) — 실패율 > 0 이면 수동 큐 강제
- NER (가명처리, 신뢰도 < 0.85 수동 큐)
- 재식별 스캐너 (k ≥ 10 권장, 법률 도메인 보수)
- 수동 검토 — 사무소 변호사만 (사무원 금지, 제26조 주체 아님). 너홀로 DPO 월 5% 스폿체크 + 수임약정서 조항 명시 필수.
강도 레벨 법적 지위:
- aggressive = 익명처리 (제2조 제1호 단서, 외부 송출·파인튜닝·연구 가능)
- moderate = 가명처리 (제28조의2, 사무소 내 + 동의 내부 연구)
- minimal = 개인정보 (Tier 1 참조만, 외부 송출 절대 금지)
Phase 별 기본: Phase 0 moderate 강제 (minimal UI 제공 금지). Phase 2 Tier 2 RAG: aggressive 기본 + moderate 옵션.
DPIA 앞당김 지지 (쿠팡 사태 과징금 1,400억 추정 반영):
- 외부 전문기관 필수 (자기검증 비판 불가피)
- 6
8주 소요 · 비용 2,0004,000만원 - KISA 중소기업 DPIA 지원사업 (최대 80% 지원)
- 개인정보위 사전 협의 = 감경 사유 (쿠팡 사태 이후 AI+법률 도메인 특별 주시)
- Phase 1 중반 12M 착수, 18M 완료
수임약정서 + DPA 2중:
- 약관만으로 위탁 요건 불충족 (제26조 문서화 강제)
- 전자서명 강제 (HelloSign)
- 도입 거부 사무소 = 파이프라인 기능 disable (fail-closed)
Audit 보존 기간 (보수 권고):
- read: 5년 통일 (민사 소멸시효 + 쿠팡형 집단소송 대비)
- write: 5년 (변호사법 제15조)
- AI 호출: 최소 2년 (변협 징계시효 2년 + AI 환각 사후검증)
쿠팡 집단소송 tenant 특수 조치 (강경):
- 별도 물리 격리 (Firestore 별도 프로젝트 or DB)
- AI 파이프라인 자동 비활성 (원고 PII LLM 유출 리스크)
- 고위험 플래그
features.infraHardening.classActionMode - Audit WORM append-only (BigQuery export or GCS immutable)
- Phase 2 이후 별도 ADR 로 격리 — 일반 모듈에 묻어가면 안 됨
재식별 사고 SOP 72h:
- T+0~1h: 킬 스위치 발동·법무이사·CEO 통보
- T+1~6h: 영향 범위 확정
- T+6~24h: 외부 포렌식 contact·증거 보전
- T+24~72h: 개인정보위 신고 (privacy.go.kr) + 정보주체 개별 통지
- T+72h 이후: 홈페이지 공지 7일 + 피해구제 창구
사이버 배상책임보험: Phase 0 착수 전 가입 필수, 한도 10억 이상. 2026.Q2 내 가입 (쿠팡 후 보험료 급등).
AI 기본법 2024.12 제정, 2026.1 시행:
- "사법·준사법 분야에서 개인의 권익에 중대한 영향" = 고영향 AI 가능성 높음
- 지정 시 투명성·위험관리·영향평가 가중
- Phase 0 시점 외부 법률자문 필수
놓친 법적 리스크 5:
- 개보법 2026 개정 자동화 결정 대응권 (제37조의2) 강화
- AI 기본법 고영향 AI 지정
- 변호사법 제34조 비변호사 제휴 금지 — "실질적 법률사무" 해석 시 위반. 대한변협 2025.3 "AI 법률서비스 가이드라인" 추적 필수
- GDPR 간접 적용 (EU 거주 의뢰인 1명만 있어도). 72시간 엄격 해석. tenant 설정 "EU 포함" 플래그
- 전자서명법 제3조 본인확인 — 집단소송 원고 공인전자서명 필수. 포털 4자리 코드 재검토
Phase 0 fail-closed 5 조건:
- 사이버 배상책임보험 가입
- 표준 DPA + 수임약정서 조항 법률자문 완료
- 재식별 사고 대응 SOP + 전 직원 교육
- 비식별화 4단 중 1·3단계 회로차단기 구현
- Audit 로그 WORM export 경로 (최소 GCS immutable bucket)
최종 권고: 집단소송 모듈은 Phase 2 이후 별도 ADR 로 격리. 쿠팡 리스크는 일반 모듈에 묻어가면 안 됨.
§3.2 Round 2 — 생략 (2026-04-20)
Chair 선결정 2건(C5 Phase 0 fail-closed 우선순위 분리 · C4 diff 수집·활용 분리) + 합의 25개 두터움 → R2 크로스 토크 생략, R3 로 직접 진행.
§3.3 Round 3 — 수렴·결정 (완료, 2026-04-20)
Chair 선결정 2건
- C5 Phase 0 fail-closed 우선순위 분리: 보험·DPA Phase 0 전 2개 필수 · 회로차단기·WORM·SOP 3개 병행
- C4 diff 수집·활용 분리: 수집 Phase 0 즉시 + 파인튜닝 활용 Tier 3 시점
기술 절충 3건 자동 확정
- C2 k 값: k=5 기본 + 고위험 문서 k=10 조건부 (P16 표준 + P7 보수 균형)
- C3 HWP 파싱: Phase 0 텍스트만 + 경고 UI ("HWPX·DOCX 권장") + Phase 1 pyhwp Cloud Function
- C6 수동 검토 주체: 사무소 변호사만 (사무원 금지, 변호사법 제26조)
ADR 발행
ADR 0005 Accepted — 2026-04-20. 12 블록 RAG·AiProvider + weight 2·비식별화 4단·품질 평가·Hallucination 3단·Vector Search 격리·한국어 특화·Phase 0 fail-closed·diff 분리·비용 5단·SLO·총 676 eng-day.
§4. 결과 (Outcomes)
§4.1 충돌 지점 (R2 대상)
🔥 정면 충돌
C1. 집단 손배 모듈 Phase 2 편입 여부 ⚠️
- P1 변호사: 쿠팡 1,000명 위임장 OCR + 원고 포털 = killer feature. Phase 2 중반 24M 착수 (ADR 0004 확정)
- P12 아키텍트: 1,000명 $8/case 배치 설계 상세, 기술적으로 구현 가능
- P17 ML: 1,000명 $5.90 실현성, Cloud Tasks 샤딩
- P7 컴플라이언스 강경: "쿠팡 집단소송 tenant 물리 격리 + AI 파이프라인 자동 비활성 + Phase 2 이후 별도 ADR 로 격리"
- → ADR 0004 "Phase 2 중반 24M" vs P7 "Phase 2 이후 별도 ADR" 충돌
C2. 재식별 스캐너 k 값
- P7: k ≥ 10 (법률 도메인 보수)
- P16: k ≥ 5 (표준 · 지명+금액+날짜 조합)
- P15: 조합 위험 LLM-as-judge
- → 10 vs 5 의 비용·품질 트레이드오프
C3. HWP 5.0 파싱 완성도
- P16: Phase 0 텍스트만, 표 누락 경고 UI
- P1: 변호사 HWP 의존 90% → 표 누락 수용 가능한가?
- → HWP 현실 수용 vs Phase 1 (pyhwp) 앞당김
C4. diff 파인튜닝 활용 시점
- P1: opt-out·크레딧 환급·사건 단위 동의
- P7 강경: Tier 3 1년 유예 전 활용 절대 금지 · 변호사 개별 + DPA 2중 동의
- P12: Phase 2 후반 학습 활용
- P15: A/B 회귀 탐지 핵심 (수집은 즉시)
- → 수집 vs 활용 분리 필요
C5. Phase 0 fail-closed 5 조건 현실성
- P7 강경: 사이버 보험·DPA·SOP·회로차단기·WORM Audit → Phase 0 착수 전 완료 필수
- P12·P17: Phase 0 eng-day 56 (28+28) — 4주 안에 이 모두 들어갈 수 있나
- → 비현실적 vs 필수
C6. 비식별화 수동 검토 주체
- P7: 사무소 변호사만, 사무원 금지 (제26조 주체)
- P1: 본인이 직접 한다 (큐 1건당 15초)
- → 합의 실질 (변호사만)
🟡 세부 조정
C7. Ko 임베딩 모델 — Ko-SRoBERTa 앙상블 시점
- P12: 28M 재검토 (이중 인덱스 비용 2x)
- P16: Phase 1 (문서 50만+ or 변호사 recall 불만 10건/월)
- → 6개월 차이
C8. 소버린 AI 모델 1순위
- P12: HyperCLOVA X 1순위
- P16: Upstage Solar 한국어 MTEB-ko 1위 (Phase 1 임베딩 KURE-v1 한국어 법률 특화)
- → HyperCLOVA X 유지, Solar 는 임베딩 옵션
C9. 로컬 추론 도입 시점
- P17: Phase 3 (Gemini $8K/월 이상 손익분기)
- → 합의 (Phase 3)
C10. Ko-LegalQA 평가자 예산
- P15: 600만원 예산 (변호사 2명 × Pack × Phase)
- → 확정 가능
🆕 신규 리스크 (5개 새 축)
C11. embeddingVersion silent corruption (P12)
- 쿼리 시 필터 누락 시 구버전 벡터 섞여 precision 급락.
assertEmbeddingVersion(query, current)유닛 테스트 Phase 0
C12. 콜드 스타트 누적 (P17)
- min=0 체인 시 첫 RAG 8~12초. 핵심 경로 min=1 warm pool (월 $40)
C13. Firestore write contention (P17)
- 공유 카운터 초당 1회 한계 → 분산 카운터 10 shard Phase 1
C14. 토크나이저 불일치 (소버린 전환 숨은 폭탄) (P16)
- Gemini SentencePiece → Solar BPE 청크 경계 shift. 청킹 char/sentence 기반 Phase 0 강제
C15. AI 기본법 2026.1 고영향 AI 지정 가능성 (P7)
- "사법·준사법 분야 권익 중대 영향" 조항 → 투명성·영향평가 가중. 외부 법률자문 Phase 0 필수
§4.2 합의된 지점
- ✅
AiProvider인터페이스 Phase 0 도입 (lib/ai/providers/gemini.ts) - ✅ weight 2 (RAG 참조) 신설 (P12 제안 전원 수용)
- ✅ assistLimit 재조정 (free 6 · starter 60 · pro 220)
- ✅ Vector Search 단일 인덱스 + restricts, 768 dim
- ✅ 사무실 기억·공용 판례
docTypenamespace 논리 분리 - ✅ Ragas + 자체 citation validator 채택
- ✅ Ko-LegalQA v0.1 (100문제) Phase 0 착수
- ✅ Citation Precision 0.95+ hard gate
- ✅ Hallucination 방어 3단 (사건번호·조문·체크리스트)
- ✅ 소버린 Go 조건 3개 동시 (Ko-LegalQA F1 0.80+ AND Faithfulness 0.90+ AND Citation 0.95+, 단일 지표 cherry-pick 금지)
- ✅ embeddingVersion Day 0 + assertEmbeddingVersion 유닛 테스트
- ✅ assertTenantFilter 3중 (유닛·CI·런타임+Sentry)
- ✅ 청킹 char/sentence 기반 Phase 0 (토크나이저 불일치 대비)
- ✅ NER 하이브리드 2-pass (정규식 + Gemini zero-shot structured)
- ✅ 법률 용어 사전 Pack 별 100단어 (국가법령정보 Open API)
- ✅ HWP 파서: Phase 0
hwp.js텍스트만 + 표 누락 경고 UI · Phase 1pyhwpCloud Function - ✅ 집단 손배 1,000명 → 50명 샘플 자동 검증 + 변호사 서명
- ✅
assertTenantFilterCI 차단 (PR build fail) - ✅ 수동 검토 주체: 사무소 변호사만 (사무원 금지, 제26조)
- ✅ Audit 보존: read/write 5년 통일, AI 호출 2년+
- ✅ 사이버 배상책임보험 Phase 0 착수 전 가입 (10억+)
- ✅ 수임약정서 + DPA 2중 (전자서명 강제, 도입 거부 = 기능 disable)
- ✅ 분산 카운터 10 shard Phase 1
- ✅ 핵심 경로 Cloud Run min=1 warm pool
- ✅ 모니터링 SLO + Cloud Logging 구조화 + BigQuery export
§4.3 최종 결정 (R3 수렴, 2026-04-20)
12개 항목 확정 (ADR 0005 §1~§12):
- RAG 12 블록 아키텍처 (Phase 0~2 점진)
- AiProvider + weight 2 (RAG 참조) 신설 + assistLimit 6/60/220
- 비식별화 4단 (회로차단기, k=5 기본·고위험 k=10, moderate 기본)
- Ragas + Ko-LegalQA 100문제 · 품질 목표 Phase 별
- Hallucination 방어 3단
- diff 수집 Phase 0 즉시 · 활용 Tier 3 시점
- Vector Search 단일 인덱스 + restricts + namespace + assertTenantFilter 3중
- 한국어 특화 (Gemini 단일·char 청킹·HWP 텍스트만·한자 정규화·법원 alias)
- 집단소송 Phase 4 이관 (ADR 0004 정합)
- Phase 0 fail-closed 우선순위 분리
- 비용 통제 5단 + 배포 (Cloud Run min=0·핵심 경로 min=1 warm)
- Phase 별 eng-day 총 676 (2명 17개월 Phase 3 완주)
§4.4 ADR 0005 발행
ADR 0005 Accepted 2026-04-20 — 서류 자동 생성 아키텍처 통합.
§4.5 Minority Report (ADR 0005 에 공식 보존)
- P7: k≥10 법률 보수 권고 (Phase 2 DPIA 시 재평가)
- P7: diff 활용 Tier 3 완전 금지 (실질 수용, 수집만 Phase 0)
- P1: Citation Precision 99.9% 미만 시 feature flag off (0.95 hard 채택, 99.9% aspirational)
- P17: 콜드 스타트 8~12초 UX 치명 (warm pool min=1 수용)
- P16: 토크나이저 불일치 소버린 전환 폭탄 (char 청킹 Phase 0 강제 수용)
§4.6 후속 안건
Phase 0 착수 전 필수 (ADR 0005 §12 후속 과제 전 체크리스트 참조):
- 사이버 보험 10억+ · 수임약정서·DPA · AI 기본법 외부 자문 · 법령정보 API · Ko-LegalQA 변호사 섭외
다음 회의 예정:
- #007 법고을·판례 DB 접근 실사 (RAG 공개 판례 소스)
- #008 법원 API·화상 재판 파트너십 (Phase 3 준비)
- #009 AX 교육·변화 관리 (Phase 1 후반)
진행 기록
| 회차 | 상태 | 일자 | 산출 |
|---|---|---|---|
| R1 (6인 병렬 발산) | ✅ 완료 | 2026-04-20 | P15·P16·P17 신규 · P7 원격. 6개 정면 충돌 + 10개 세부 조정 + 5개 신규 리스크 + 25개 합의 |
| R2 (크로스 토크) | ⏸ 생략 | 2026-04-20 | 합의 25개 두터움 + Chair 선결정 2건으로 R3 직진 |
| R3 (수렴·ADR) | ✅ 완료 | 2026-04-20 | 12개 항목 확정. ADR 0005 Accepted. 집단소송 Phase 4 이관 (ADR 0004 §1 정합) |
참고 문서
- #005 로드맵·투자·AI 전환 (완료)
- #004 정체성 재정의 (완료)
- #001 채권 계산 (완료)
- ADR 0001~0004