기능 개요
주택 임대차 계약서의 특약 조항을 입력받아, 법령·판례 검색에 최적화된 구조화된 query expansion 결과(JSON)를 생성하는 모듈 구현
목적 / 배경
사용자가 입력하는 계약서 특약은 일반적인 생활어/계약 실무 표현으로 작성되어 있어, 법령·판례 DB의 표현 방식과 차이가 크다. 이로 인해 특약 원문 그대로는 관련 법령 및 판례를 정확하게 검색하기 어렵다.
따라서 특약의 **법적 쟁점(issue), 적용 규칙(rule), 분쟁 시나리오(fact pattern)**를 기반으로 검색 질의를 재구성하는 query expansion 단계가 필요하다. 이 모듈은 이후 Hybrid Retrieval(BM25 + Dense)의 입력 품질을 개선하여, RAG 기반 계약서 검토의 정확도를 높이는 역할을 한다.
기능 상세
- 입력
단일 특약 조항 텍스트 (str)
예:
임차인은 계약기간 중 전입신고를 하지 않는다.
- 처리 흐름
[특약 입력]
↓
[Query Expansion (LLM)]
- 법적 쟁점 식별 (legal_issue)
- 적용 규칙 도출 (applicable_rules)
- 법령 검색용 키워드 생성 (BM25)
- 판례 검색용 사실관계 생성 (Dense)
↓
[Pydantic 스키마 검증]
↓
[Retrieval Adapter]
- BM25용 / Dense용 질의 분리
- 출력 (핵심)
Pydantic 기반 구조화된 JSON 객체 반환
주요 필드:
- clause_text: 원본 특약
- normalized_clause: 정규화된 설명
- clause_category: 특약 유형
- risk_focus: 주요 위험 포인트
- statute_query
- legal_issue
- statute_keywords (BM25)
- statute_dense_query (Dense)
- case_query
- dispute_scenario
- case_keywords (BM25)
- precedent_dense_query (Dense)
- retrieval_filters
- Retrieval 연결 방식
Query Expansion 결과는 다음과 같이 사용됨:
- 법령 BM25 → statute_keywords
- 법령 Dense → statute_dense_query
- 판례 BM25 → case_keywords
- 판례 Dense → precedent_dense_query
- 예외 및 고려사항
- LLM이 JSON 형식을 깨는 경우 → Pydantic validation 실패 → 재시도 필요
- 키워드가 지나치게 일반적일 경우 → 검색 품질 저하 가능
- 법적 결론(“무효”, “위법”)을 직접 출력하지 않도록 제한 필요
- 특약이 복합 문장일 경우 쟁점 분리 필요 (향후 개선 가능)
관련 모듈 / 디렉토리
pipeline/retrieval/query_expansion_schema.py (Pydantic 스키마)
pipeline/retrieval/query_expansion_prompt.py (프롬프트 정의)
pipeline/retrieval/query_expansion.py (메인 로직)
pipeline/retrieval/retrieval_adapter.py (검색 연결)
shared/llm/ (LLM 호출 래퍼)
tests/pipeline/test_query_expansion.py (테스트)
수용 기준 (Acceptance Criteria)
참고 자료
Stanford Legal Retrieval (Reasoning-based Query Expansion)
LegalBench-RAG (Legal RAG 평가 프레임워크)
내부 설계 문서 (Query Expansion 구조 설계)
프로젝트 구조 문서 (pipeline / retrieval 설계)
기능 개요
주택 임대차 계약서의 특약 조항을 입력받아, 법령·판례 검색에 최적화된 구조화된 query expansion 결과(JSON)를 생성하는 모듈 구현
목적 / 배경
사용자가 입력하는 계약서 특약은 일반적인 생활어/계약 실무 표현으로 작성되어 있어, 법령·판례 DB의 표현 방식과 차이가 크다. 이로 인해 특약 원문 그대로는 관련 법령 및 판례를 정확하게 검색하기 어렵다.
따라서 특약의 **법적 쟁점(issue), 적용 규칙(rule), 분쟁 시나리오(fact pattern)**를 기반으로 검색 질의를 재구성하는 query expansion 단계가 필요하다. 이 모듈은 이후 Hybrid Retrieval(BM25 + Dense)의 입력 품질을 개선하여, RAG 기반 계약서 검토의 정확도를 높이는 역할을 한다.
기능 상세
단일 특약 조항 텍스트 (str)
예:
Pydantic 기반 구조화된 JSON 객체 반환
주요 필드:
Query Expansion 결과는 다음과 같이 사용됨:
관련 모듈 / 디렉토리
pipeline/retrieval/query_expansion_schema.py (Pydantic 스키마)
pipeline/retrieval/query_expansion_prompt.py (프롬프트 정의)
pipeline/retrieval/query_expansion.py (메인 로직)
pipeline/retrieval/retrieval_adapter.py (검색 연결)
shared/llm/ (LLM 호출 래퍼)
tests/pipeline/test_query_expansion.py (테스트)
수용 기준 (Acceptance Criteria)
참고 자료
Stanford Legal Retrieval (Reasoning-based Query Expansion)
LegalBench-RAG (Legal RAG 평가 프레임워크)
내부 설계 문서 (Query Expansion 구조 설계)
프로젝트 구조 문서 (pipeline / retrieval 설계)