Files
2nd/10_Wiki/Topics_Rag/청킹 전략.md
T
koriweb 95cd8bb891 feat(wiki): 코드 그라운딩 23문서 + MOC 학습지도 39개
- 코드 그라운딩: 기술 주제 문서의 '적용 사례'에 실제 레포 구현 위치
  (file:line)+커밋 자동 주입 (예: 문서 청킹 전략→connectai/src/retrieval/chunker.ts).
  멱등 마커(CODE-GROUNDING)로 재실행 시 갱신.
- MOC: 39개 클러스터 폴더에 _MOC.md 학습지도 생성(진입점+통찰 주석).
도구: Datacollect/scripts/{code_grounding,moc_generator}.mjs

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 18:56:11 +09:00

9.6 KiB

id, title, category, status, verification_status, canonical_id, aliases, duplicate_of, source_trust_level, confidence_score, created_at, updated_at, review_reason, merge_history, tags, raw_sources, applied_in, github_commit
id title category status verification_status canonical_id aliases duplicate_of source_trust_level confidence_score created_at updated_at review_reason merge_history tags raw_sources applied_in github_commit
청킹-전략 청킹 전략 10_Wiki/Topics draft conceptual
텍스트 분할
Text Splitting
B 0.85 2026-06-08 2026-06-08
research
RAG 아키텍처 및 파이프라인 기초
Chunking
NotebookLM Synthesis
/NVIDIA/GenerativeAIExamples
Jina AI Late Chunking Research
Anthropic Contextual Retrieval
Microsoft Research GraphRAG
MongoDB Python Documentation Study

청킹 전략

🎯 한 줄 통찰 (One-line insight)

청킹은 단순히 텍스트를 자르는 과정이 아니라, 검색의 정밀도(Precision)와 문맥의 일관성(Coherence) 사이의 최적 균형을 찾아 LLM에 전달할 정보의 밀도를 결정하는 RAG 파이프라인의 핵심 공정이다.[1-3]

🧠 핵심 개념 (Core concepts)

  • 토큰 제한 및 컨텍스트 창 관리: LLM과 임베딩 모델의 입력 제한을 준수하면서 필요한 정보를 효율적으로 주입하기 위한 수단이다.[4-6]
  • 의미론적 무결성(Semantic Integrity): 텍스트를 분할할 때 문장이나 문단의 논리적 흐름이 끊기지 않도록 '완전한 생각' 단위를 유지하는 것이다.[6-8]
  • 검색 정밀도와 재현율의 트레이드오프: 청크가 작으면 검색 정밀도는 높아지나 문맥이 부족해지고, 크면 문맥은 풍부하나 관련 없는 노이즈가 포함될 가능성이 커진다.[5, 9-11]
  • 메타데이터 및 구조 인지: 원본 문서의 헤더, 섹션, 계층 구조를 반영하여 분할함으로써 검색 후에도 데이터의 출처와 관계를 유지한다.[12-14]

🧩 추출된 패턴 (Extracted patterns)

  • 계층적 분할 패턴(Small2Big): 검색은 작은 청크(자식)로 수행하여 정밀도를 높이고, 생성 모델에는 더 큰 부모 단락을 전달하여 문맥을 보강하는 설계 패턴이다.[11, 15, 16]
  • 재귀적 구분자 우선순위: 텍스트를 나눌 때 단락(\n\n), 줄바꿈(\n), 공백( ) 순으로 우선순위를 두어 논리적 단위를 최대한 보존하려는 휴리스틱이다.[17-19]
  • 슬라이딩 윈도우 오버랩: 인접한 청크 간에 일정한 비율(보통 10~20%)의 중복 구간을 두어 경계면에서 정보가 단절되는 것을 방지한다.[18, 20, 21]
  • 데이터 맞춤형 전략(Adaptive Selection): 코드, 표, 마크다운, 대화 로그 등 원본 데이터의 형식에 따라 전용 분할기를 선택하는 전략이다.[22-24]

📖 세부 내용 (Details)

청킹은 RAG 시스템의 성능을 결정하는 가장 중요한 전처리 단계로 간주된다.[2] 소스 데이터에 따르면 다음과 같은 주요 전략들이 활용된다.

  • 고정 크기 분할(Fixed-size Chunking): 캐릭터나 토큰 수를 기준으로 기계적으로 분할하는 가장 단순한 방식이다.[20, 25] 구현이 빠르지만 의미적 경계를 무시하고 문장 중간을 자를 위험이 크다.[11, 26]
  • 재귀적 문자 분할(Recursive Character Splitting): 다양한 구분자 세트를 사용하여 논리적으로 의미 있는 가장 큰 단위를 유지하려 시도하는 방식이다.[18, 27] 범용 RAG 인프라의 표준 알고리즘으로 권장된다.[19]
  • 구조 인식형 분할(Structure-aware Splitting): 마크다운 헤더, HTML 태그, JSON 깊이 등을 인지하여 분할한다.[12, 28] 기술 문서나 API 가이드처럼 서식이 명확한 데이터에 적합하다.[28]
  • 의미론적 청킹(Semantic Chunking): 임베딩 유사도를 기반으로 인접 문장 간의 의미 이격이 발생하는 지점을 찾아 분할한다.[28, 29] 주제가 수시로 바뀌는 복잡한 문서에 유리하나 계산 비용이 높다.[11, 30, 31]
  • 문장 창 검색(Sentence-window Retrieval): 개별 문장 단위로 인덱싱하되, 검색 시에는 해당 문장의 앞뒤 맥락을 포함한 '윈도우'를 함께 추출하여 LLM에 전달한다.[28, 32]

최적화 가이드라인:

  • 일반적인 텍스트: 200512 토큰 크기, 1020% 오버랩이 권장된다.[21, 33]
  • 코드 및 기술 문서: 100200 토큰의 작은 크기와 1525%의 높은 오버랩이 유리하다.[21]
  • 서사적 콘텐츠: 문맥 유지를 위해 500~1000 토큰의 큰 청크가 적합할 수 있다.[21]

⚖️ 모순 및 업데이트 (Contradictions & updates)

  • 컨텍스트 창 확대와 청킹의 필요성: 최신 LLM(예: Llama 4 Scout)이 수백만 토큰의 컨텍스트 창을 지원함에 따라 청킹이 불필요해질 것이라는 견해가 있으나, 소스는 여전히 검색 효율성, 비용 관리, 그리고 '중간 소실(Lost in the Middle)' 현상 방지를 위해 청킹이 필수적이라고 강조한다.[34-36]
  • 청크 크기 편향: 너무 짧은 청크는 키워드 매칭 성능은 좋으나 실제 정보 가치가 낮을 수 있으며, 임베딩 모델의 특성에 따라 짧은 텍스트가 비정상적으로 높은 유사도 점수를 받는 '임베딩 편향'이 발생할 수 있다.[37, 38]

🛠️ 적용 사례 (Applied in summary)

  • NVIDIA: /NVIDIA/GenerativeAIExamples 리포지토리에서 512 토큰 제한을 가진 e5-large-v2 모델에 맞추기 위한 텍스트 분할 파이프라인을 구축했다.[39, 40]
  • Jina AI: 문서 전체를 인코딩한 후 분할하는 'Late Chunking' 기법을 연구하여 문맥 보존 성능을 개선했다.[15]
  • Anthropic: 'Contextual Retrieval' 기법을 통해 청크 앞에 50~100 토큰의 요약 컨텍스트를 추가하여 검색 실패율을 67% 감소시켰다.[15]
  • Microsoft Research: GraphRAG 방법론에서 Leiden 알고리즘을 사용해 문서를 계층적 커뮤니티(청크 단위)로 탐지하고 요약하는 방식을 적용했다.[41]
  • MongoDB: 파이썬 문서 처리에 있어 100토큰 크기와 15토큰 오버랩을 가진 재귀적 분할기가 최적의 성능을 보인다는 실증적 데이터를 제시했다.[42]

검증 상태 및 신뢰도

  • 상태: draft
  • 검증 단계: conceptual (실제 적용 사례가 소스 전반에서 다수 확인됨)
  • 출처 신뢰도: B (NVIDIA, IBM, Databricks 등 공식 기술 블로그 및 연구 보고서 기반)
  • 중복 검사 결과: 신규 생성 (RAG 아키텍처 연구 보고서 핵심 주제)

상위/유사 개념

[아키텍처/기반 기술]

  • RAG 아키텍처 및 파이프라인 기초
    • 연결 이유: 청킹은 파이프라인의 오프라인 수집 단계에서 핵심적인 전처리 공정이다.
    • 이 개념을 통해 더 깊게 이해할 수 있는 부분: 데이터 수집부터 생성까지의 전체 워크플로우 연계성.
  • 벡터 데이터베이스
    • 연결 이유: 분할된 청크는 벡터로 변환되어 데이터베이스에 인덱싱된다.
    • 이 개념을 통해 더 깊게 이해할 수 있는 부분: 효율적인 유사도 검색을 위한 인덱싱 구조 최적화.

[구현/활용 도구]

  • LangChain
    • 연결 이유: RecursiveCharacterTextSplitter 등 다양한 분할 인터페이스를 제공한다.
    • 이 개념을 통해 더 깊게 이해할 수 있는 부분: 코드 레벨에서의 구체적인 청킹 구현 방법.
  • LlamaIndex
    • 연결 이유: HierarchicalNodeParser 등 문서 구조 기반의 정교한 분할 기능을 제공한다.
    • 이 개념을 통해 더 깊게 이해할 수 있는 부분: 계층적 문서 트리 구조화 및 검색 최적화 전략.

심층 후속 질문 (Deeper Research Questions)

  • 문장 중간이 아닌 의미적 단절 지점을 정확히 포착하는 'Semantic Chunking'의 임계값 설정 휴리스틱은 무엇인가?
  • 'Late Chunking'이 기존의 사전 분할 방식 대비 검색 성능과 레이턴시 측면에서 갖는 구체적인 이득은 얼마인가?
  • 표(Table)나 이미지 캡션과 같은 비정형 요소가 포함된 문서에서 구조를 파괴하지 않는 가장 효과적인 분할 로직은 무엇인가?
  • LLM의 컨텍스트 창이 무한대에 가까워질 때, 청킹 전략은 '분할'에서 '요약 및 계층화'로 어떻게 진화할 것인가?
  • 특정 도메인(법률, 의료)에 특화된 청킹 구분자(Separator) 설계 시 고려해야 할 언어적 특성은 무엇인가?

실무 적용 맥락 (Practical Application Contexts)

  • Implementation: RecursiveCharacterTextSplitter를 기본으로 사용하되, 데이터 특성에 따라 오버랩 크기를 조정하여 배포한다.[19, 21]
  • System Design: 검색 정밀도가 낮을 경우 'Parent-Child' 계층적 분할 구조를 도입하여 인덱싱 구조를 재설계한다.[15, 16]
  • Operation / Maintenance: 원본 데이터의 업데이트 주기에 맞춰 벡터 인덱스가 동기화될 때, 청킹 로직의 일관성을 유지해야 검색 품질 저하를 방지할 수 있다.[43]
  • Learning Path: 단순 고정 크기 분할에서 시작하여 구조 인식 분할, 그리고 의미론적 청킹으로 기술적 난이도를 높여가며 실험한다.[42]

인접 주변 주제 (Adjacent Topics)

  • 임베딩 모델
    • 확장 방향: 모델의 최대 토큰 제한과 청킹 크기 사이의 상관관계 분석.
  • RAG 평가 지표
    • 확장 방향: 청킹 전략 변경이 'Context Precision'과 'Context Recall'에 미치는 정량적 영향 평가.

📝 변경 이력 (Change history)

  • 2026-06-08: Initial draft generated via Datacollector_MAC P-Reinforce engine based on 23 sources.