[G1-Sync] Manual knowledge update
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
---
|
||||
id: 청킹-전략
|
||||
title: "청킹 전략"
|
||||
category: "10_Wiki/Topics"
|
||||
status: "draft"
|
||||
verification_status: "conceptual"
|
||||
canonical_id: ""
|
||||
aliases: ["텍스트 분할", "Text Splitting"]
|
||||
duplicate_of: ""
|
||||
source_trust_level: "B"
|
||||
confidence_score: 0.85
|
||||
created_at: 2026-06-08
|
||||
updated_at: 2026-06-08
|
||||
review_reason: ""
|
||||
merge_history: []
|
||||
tags: ["research", "RAG 아키텍처 및 파이프라인 기초", "Chunking"]
|
||||
raw_sources: ["NotebookLM Synthesis"]
|
||||
applied_in: ["/NVIDIA/GenerativeAIExamples", "Jina AI Late Chunking Research", "Anthropic Contextual Retrieval", "Microsoft Research GraphRAG", "MongoDB Python Documentation Study"]
|
||||
github_commit: ""
|
||||
---
|
||||
|
||||
# [[청킹 전략]]
|
||||
|
||||
## 🎯 한 줄 통찰 (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]
|
||||
|
||||
**최적화 가이드라인:**
|
||||
- **일반적인 텍스트:** 200~512 토큰 크기, 10~20% 오버랩이 권장된다.[21, 33]
|
||||
- **코드 및 기술 문서:** 100~200 토큰의 작은 크기와 15~25%의 높은 오버랩이 유리하다.[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 아키텍처 연구 보고서 핵심 주제)
|
||||
|
||||
## 🔗 관련 문서 링크 (Related document links)
|
||||
|
||||
### 상위/유사 개념
|
||||
#### [아키텍처/기반 기술]
|
||||
- [[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.
|
||||
Reference in New Issue
Block a user