긴 조항은 재귀 분할
청크 크기 최대값을 넘는 조항은 RecursiveCharacterTextSplitter로 나눴습니다. 분할된 chunk들은 같은 hierarchy metadata를 공유합니다.
공군 AiRWARDS RAG 파이프라인에서 공군규정, 국방부 행정규칙, 대한민국 법령을 검색하려면 조항 본문만으로는 부족했습니다. 장-절-조 헤더를 파싱해 각 chunk의 hierarchy metadata로 저장하고, 조항 길이에 따라 청크를 분할·병합해 법률 문서상의 위치 정보를 embedding 단계까지 보존했습니다.
조항 단락을 기준으로 일괄 분할하면 과대 chunk와 과소 chunk가 함께 생깁니다. 그래서 계층 구조를 유지한 상태에서 조항 길이에 따라 분할과 병합을 다르게 적용했습니다.
청크 크기 최대값을 넘는 조항은 RecursiveCharacterTextSplitter로 나눴습니다. 분할된 chunk들은 같은 hierarchy metadata를 공유합니다.
목표 chunk size 안에서 합칠 수 있는 조항들은 서로 병합했습니다. 최소 chunk size에 미달하는 과소 chunk는 바로 이전 chunk에 붙였습니다.
Leaf Node들을 bottom-up으로 모아 목표 크기에 맞는 Parent Node를 만들었습니다. 검색 정밀도와 생성 문맥량의 균형을 잡기 위한 구조입니다.
조항 본문과 상위 장·절 정보를 함께 보존해 문서상 위치를 잃지 않았습니다.
hierarchy metadata를 embedding에 반영해 조항명만으로 모호한 질의의 검색 단서를 보강했습니다.
너무 작은 chunk를 병합해 검색 결과 슬롯이 조각난 문단에 잠식되는 문제를 줄였습니다.
법률 문서가 일정한 형식을 따른다는 전제에 의존합니다. 서식이 불균일한 내부 규정, 부칙, 별표, 별지는 장-절-조 구조만으로 안정적으로 파싱하기 어렵습니다.
포괄적이거나 암묵적인 질의는 hierarchy metadata만으로 의미적 간극을 완전히 줄이기 어렵습니다. Sparse Retrieval 또는 Hybrid Retrieval과의 결합이 필요합니다.
정성적 개선은 확인했지만, 일반 청킹, 조항 단위 청킹, hierarchy 기반 청킹 간 Recall@K, MRR, nDCG 비교가 추가로 필요합니다.
이 개발노트에서는 Legal Document의 장-절-조 계층 구조를 파싱하고, 이를 chunk의 hierarchy metadata로 반영하는 Contextual Embedding 방법론을 정리했습니다.
이 방식은 개별 조항이 문서상 어느 위치에 속하는지 보존하여, 단순 fixed-size chunking이나 조항 단위 chunking에서 발생하는 문맥 소실 문제를 완화합니다. 조항 길이에 따라 chunk를 동적으로 분할하거나 병합해 과대 chunk와 과소 chunk도 줄였습니다.
결과적으로 Legal Document Parsing 및 Contextual Embedding은 공군 내부 규정, 국방부 행정규칙, 대한민국 법령처럼 계층 구조가 중요한 문서를 대상으로 하는 RAG 파이프라인에서 검색 품질과 답변 신뢰성을 높이는 전처리 전략입니다.