세금 판단의 오류는 납세자에게 실제 피해가 됩니다.
그렇기 때문에 이 시스템은 두 가지 원칙을 동시에 지킵니다.
법령 수집 → 임베딩 → 검색 → 추론 → 출력까지 전 과정이 에이전트 파이프라인으로 자동화됩니다.
법령이 개정되면 자동 감지 → 재인덱스 → 시스템 전체 반영.
사람이 개입하는 지점은 예외 처리와 최종 승인에 한정됩니다.
모든 판단의 근거(fact_json, 검색 조문, 인용 chunk_id, debate 기록)가 항상 노출됩니다.
세무사·전문가가 어느 단계에서든 판단 과정을 확인하고 즉시 개입할 수 있습니다.
블랙박스 판단은 허용하지 않습니다.
[사건 사실관계 입력]
↓
[L1.5] 확인서 체크 — 세대구성·취득일·특수관계 등 미확인 시 차단
↓
[L2] 팩트체크 — 판단에 필요한 결정적 정보 누락 검출
↓
[L3] 쿼리 보강 — 세법 특화 검색 키워드 생성
↓
[L4] 법령·유권해석 멀티소스 검색 + LLM 추론
│ ┌──────────────────────────────────────────────────────┐
│ │ Pinecone 5개 네임스페이스 │
│ │ · tax-law (법령 조문 — 소득세법 등) │
│ │ · tax-ruling-moef (기재부 법령해석 ) │
│ │ · tax-ruling-nts (국세청 질의회신) │
│ │ · tax-ruling-nts-interp (국세청 법령해석) │
│ │ · tax-ruling-decisions (심판원 결정례) │
│ └──────────────────────────────────────────────────────┘
│ BGE Reranker (세법 도메인 파인튜닝) 적용
↓
[L5] 출력 검증 — phantom citation 검출, confidence 계산
↓
[판단 결과] verdict + 근거 조문 + debate 기록 + 감사 추적
판단 유형: 비과세 / 고가주택 / 일반과세 / 단기세율 / 중과 / 감면 / 사실관계부족
| 단계 | 내용 | 상태 |
|---|---|---|
| Phase 1 | 법령 수집 파이프라인 (law.go.kr DRF) | ✅ |
| Phase 2 | Pinecone 임베딩 + Solar 4096차원 | ✅ |
| Phase 3 | L2~L5 판단 파이프라인 | ✅ |
| Phase 4 | 유권해석 5개 네임스페이스 통합 | ✅ |
| Phase 5 | BGE Reranker 세법 파인튜닝 (acc 0.9545) | ✅ |
| Phase 6 | 확인서(L1.5) + 책임소재 관리 | ✅ |
| 진행 중 | 유권해석 본문 수집 (37,400건 + 2,305건) | 🔄 |
| 예정 | BGE 재파인튜닝 (본문 데이터 기반) | ⏳ |
| 예정 | 조정대상지역 자동조회 API | ⏳ |
115개 커밋, 8일 연속 활성 개발 (2026-05-21 ~ 2026-05-28)
| 영역 | 기술 |
|---|---|
| LLM | Claude Sonnet 4.6 / Opus 4.7 |
| 임베딩 | Upstage Solar solar-embedding-1-large-passage (dim=4096) |
| 벡터 DB | Pinecone Serverless (5 namespace) |
| Reranker | BGE bge-reranker-v2-m3 (세법 파인튜닝, CrossEncoder) |
| 파이프라인 | Python / FastAPI / Streamlit |
| MCP | FastMCP (Claude Desktop 연동, 7개 도구) |
| 법령 소스 | law.go.kr DRF API / taxlaw.nts.go.kr |
| 원칙 | 구현 |
|---|---|
| 근거 없는 답변 금지 | 검색된 chunk_id가 있는 조문만 인용 |
| 수치 리터럴 코드 삽입 금지 | 세율·기간·금액 → TaxConstantsRegistry 전용 |
| BGE Reranker 생략 금지 | 최종 조문 선택 전 반드시 reranking |
| 판단 전 확인서 차단 | L1.5 미확인 항목 있으면 답변 출력 불가 |
| 전 과정 감사 추적 | verdict + chunk_id + debate 기록 항상 보존 |
git clone https://github.com/Raw-Agent/korean-tax-rag.git
cd korean-tax-rag
pip install -r requirements.txt
cp .env.example .env # API 키 입력
# BGE reranker 파인튜닝 모델은 저장소에 포함되지 않습니다.
# 별도 다운로드 후 아래 경로에 배치하세요.
# data/models/bge-reranker-tax-rag/
python -m src.mcp.server --sse # MCP 검색 서버 → http://localhost:8001
uvicorn src.api.main:app # API → http://localhost:8000
streamlit run src/ui/app.py # UI → http://localhost:8501역할 경계: UI는 API만 호출하고, API는 MCP의 retrieve_tax_context 도구로 검색한 chunk만 사용해 L2~L5 판단을 수행합니다.
세법 도메인 파인튜닝된 BGE reranker 모델은 대용량 파일이므로 Git에 커밋하지 않습니다. 운영·개발 환경에서는 별도 공유 스토리지에서 모델을 다운로드해 다음 경로에 둡니다.
data/models/bge-reranker-tax-rag/
.env에는 아래 값을 사용합니다.
BGE_RERANKER_MODEL=data/models/bge-reranker-tax-rag모델 교체 후에는 API/MCP 프로세스를 재시작해야 새 CrossEncoder가 로드됩니다.
src/
├── application/
│ ├── chat_service.py # API 오케스트레이션 — L2~L5 + MCP 검색 호출
│ └── serializers.py # API/MCP 공통 직렬화
├── api/
│ └── main.py # FastAPI — 외부 연동 REST
├── mcp/
│ └── server.py # FastMCP — RAG 검색 실행 계층
├── domain/
│ ├── pipeline.py # L1.5 ~ L5 메인 파이프라인
│ ├── confirmation.py # 확인서 체크 (L1.5)
│ ├── tax_calculator.py # 세액 계산
│ └── constants.py # TaxConstantsRegistry
├── retrieval/
│ ├── retriever_impl.py # Pinecone 멀티 네임스페이스 + BGE reranking
│ ├── mcp_retriever.py # API에서 MCP 검색 tool 호출
│ └── tax_law_search.py # 자연어 법령 검색 helper
├── ingestion/ # 법령·유권해석 수집기
├── eval/ # RVRL debate, golden set 관리
├── agents/prompts.py # 프롬프트 버전 관리
└── ui/
├── app.py # Streamlit 메인
└── pages/admin.py # 어드민 — 수집 현황·파이프라인 상태
data/
├── golden/ # 골든셋 (142건 종합 케이스)
├── tax_tables/ # 세율표 JSON (TaxConstantsRegistry 소스)
└── models/ # BGE 파인튜닝 모델 (별도 다운로드, Git 제외)
scripts/
├── dev/browser/ # Playwright 디버그·스크린샷 도구
├── eval/ # 골든셋·검색 품질 eval 실행
├── ingestion/ # 수집/임베딩 오케스트레이션
├── ops/ # 법령·규제 변경 감지, registry 자동화
└── training/ # reranker pair 추출·파인튜닝
- 코드 기여 전 CLAUDE.md 필독 (설계 계약 명시)
- 업무 요청서 및 태스크 번들: DEVELOPERS.md
- 세부 아키텍처·법령 도메인 규칙: AGENTS.md
커밋 메시지: 한국어, feat/fix/docs/refactor/test/chore: 요약
해커톤 프로토타입입니다. 실제 세금 신고·납부에 사용하기 전에 반드시 공인 세무사 검토가 필요합니다.
- 평가셋: AI 합성 시나리오 기준 (실제 납세자 사례 아님)
- 분양권 단기세율(70%) 판정 불안정
- 법인 양도·조정대상지역 자동조회·취득세 미지원
- 일부 조문 누락 가능성 (BGE 재파인튜닝 필요)
- Pinecone 장애 시 fallback 없음
본 시스템은 정보 제공 목적으로 개발되었으며 법률 자문이 아닙니다.
양도소득세 신고·납부에 관한 최종 판단은 반드시 공인 세무사와 상담하시기 바랍니다.