RAG 파이프라인
개요
법률 데이터를 조문 단위로 청킹하고, Hybrid Retrieval(BM25 + 벡터)로 검색한 후, 상호참조를 자동 확장하여 관련 조문을 함께 제공합니다.
데이터 소스
| 소스 | 청크 수 | 청킹 단위 |
|---|---|---|
| 공직선거법 (법률/시행령/시행규칙) | ~375 | 조문 |
| 정치자금법 (법률/시행령/시행규칙) | ~68 | 조문 |
| 정당법 (법률/시행령/시행규칙) | ~66 | 조문 |
| 공직선거관리규칙 | ~530 | 조문 |
| 사례예시집 | 838 | 개별 사례 |
| 합계 | ~1,877 |
청킹 전략
법률 텍스트 — 조문 단위
일반 문서와 달리 법률은 고유한 계층 구조를 가지므로 고정 크기 청킹 대신 조문(Article) 단위로 분할합니다.
제58조 (정의) → 1 chunk
├─ ① 항
├─ ② 항
└─ 관련 호
메타데이터:
법률명: 공직선거법
조번호: 58
장: 제6장
참조조문: [93, 254]
type: law
사례예시집 — 사례 단위
사례 1개 = 1 chunk
├─ 상황 설명
├─ 허용/금지 판단
└─ 해설
메타데이터:
관련조문: [58, 93]
카테고리: 선거운동
판단: allowed / prohibited
type: case_example
Hybrid Retrieval
BM25 (키워드 검색)
법률 용어("기부행위", "사전선거운동" 등)의 정확한 매칭에 강합니다. 토큰 기반 TF-IDF 변형으로 동작합니다.
벡터 검색 (시맨틱)
paraphrase-multilingual-MiniLM-L12-v2 모델로 임베딩한 후 ChromaDB에서 코사인 유사도 검색합니다. 의미적으로 유사한 조문을 찾습니다.
RRF (Reciprocal Rank Fusion)
두 검색 결과를 RRF 알고리즘으로 병합합니다:
k=60 상수를 사용하여 두 검색 방법의 순위를 균형있게 결합합니다.
상호참조 확장
법률 조문은 다른 조문을 자주 참조합니다 (예: "제93조에 따른..."). 검색 결과에서 참조된 조문을 자동으로 추가 검색하여 컨텍스트를 보강합니다.