diff --git a/app/workers/chunk_worker.py b/app/workers/chunk_worker.py index d67ccd1..a9f1baf 100644 --- a/app/workers/chunk_worker.py +++ b/app/workers/chunk_worker.py @@ -79,11 +79,20 @@ def _classify_chunk_strategy(doc: Document) -> str: # ─── Chunking 전략 ─── def _chunk_legal(text: str) -> list[dict]: - """법령: 제N조 단위로 분할 (상위 조문 컨텍스트 보존)""" + """법령: 제N조 단위로 분할 (상위 조문 컨텍스트 보존). + + 영어/외국 법령(ai_domain Foreign_Law 등)은 "제N조" 패턴이 없어 split 결과가 + 1개 element만 나옴 → 서문 chunk 1개만 생성되고 본문 대부분이 손실되는 버그. + 조문 패턴 미검출 시 sliding window fallback으로 처리. + """ # "제 1 조", "제1조", "제 1 조(제목)" 등 매칭 pattern = re.compile(r"(제\s*\d+\s*조(?:의\s*\d+)?(?:\([^)]*\))?)") parts = pattern.split(text) + # 조문 패턴 미검출 (영어/외국 법령 등) → sliding window fallback + if len(parts) <= 1: + return _chunk_sliding(text, DEFAULT_WINDOW_CHARS, DEFAULT_OVERLAP_CHARS, "section") + chunks = [] # parts[0] = 조 이전 서문, parts[1], parts[2] = (마커, 본문) pairs if parts[0].strip() and len(parts[0]) >= MIN_CHUNK_CHARS: