Summary#
RAG 청킹은 "검색 단위 크기"와 "의미 경계 보존" 사이의 trade-off다. 고정 크기는 구현이 쉽지만 문맥을 자를 수 있고, 시맨틱/구조 기반 청킹은 의미 경계를 더 잘 보존하지만 비용과 복잡도가 증가한다. 계층적·contextual retrieval은 작은 검색 단위와 큰 생성 컨텍스트를 분리해 정밀도와 재현율을 함께 개선하는 패턴이다.
Outcome#
전략별 비교: | 전략 | 방법 | 장점 | 단점 | |---|---|---|---| | 고정 크기 | 예: 512 tokens, overlap 50~100 | 빠름, 간단, 재현 가능 | 문맥 절단, 문서 구조 무시 | | 재귀/구조 기반 | 문단·헤딩·페이지·코드 함수/클래스 등 구분자 우선 | 구현 난이도 대비 품질 좋음 | 문서 포맷별 튜닝 필요 | | 시맨틱 | 임베딩 기반 문장/문단 경계 탐지 | 의미 경계 보존 | 처리 비용, 청크 크기 불균일, 모델 의존성 | | 계층적 | 문서/섹션 요약 + 원문 청크 다단계 인덱싱 | 재현율·정밀도 균형 | 인덱스/저장/평가 복잡도 증가 | | Contextual Retrieval | 각 청크에 문서/섹션 맥락을 추가해 임베딩·검색 | 독립 청크의 맥락 손실 완화 | 전처리 비용, 요약 품질 의존 |
Corrected Implementation Notes#
# Contextual Retrieval: 각 청크 앞에 문서/섹션 맥락을 붙여 임베딩·검색한다.
def contextualize_chunk(doc_summary: str, chunk: str) -> str:
return f"[문서 컨텍스트]\n{doc_summary}\n\n[청크]\n{chunk}"
# 검색에는 작은 청크를 쓰고, 생성 단계에는 주변 문맥을 포함한 더 큰 컨텍스트를 공급할 수 있다.
small_chunk = "512 tokens" # 검색용 예시
large_chunk = "2048 tokens" # 생성용 예시: small chunk 주변 문맥 포함
# LangChain SemanticChunker의 일반적인 import 경로는 langchain_experimental 쪽이다.
from langchain_experimental.text_splitter import SemanticChunker
# from langchain_openai import OpenAIEmbeddings
# semantic_splitter = SemanticChunker(OpenAIEmbeddings())
Key Points#
- 고정 청크 overlap은 보통 10~20%부터 실험한다. 512-token 청크라면 50~100 tokens overlap이 출발점이다.
RecursiveCharacterTextSplitter처럼 문단/줄/공백 순으로 재귀 분할하는 방식은 단순 고정 분할보다 실무 기본값으로 안전한 경우가 많다.- 시맨틱 청킹은 의미 경계를 보존하지만 임베딩 비용과 청크 크기 편차가 생기므로 평가셋으로 확인해야 한다.
- Anthropic Contextual Retrieval의 35~67% 수치는 일반적인 '검색 품질 35~67% 향상'이라기보다, 실험 조건에서 retrieval failure를 줄인 정도로 해석하는 것이 더 정확하다. 따라서 수치를 재사용할 때는 데이터셋·검색 방식·평가지표를 함께 적어야 한다.
- 계층적 인덱싱은 요약 임베딩으로 넓게 찾고 원문 청크로 정밀하게 답하게 만드는 방식이다.
Caveats#
청크 크기는 임베딩 모델의 입력 한도와 실제 검색/생성 파이프라인의 컨텍스트 예산에 맞춰야 한다. 코드·표·수식·PDF 레이아웃은 일반 텍스트 분리기로 깨지기 쉬우므로 포맷별 파서가 필요할 수 있다. 재랭킹(cross-encoder/reranker), BM25+vector hybrid, MMR은 청킹과 별개의 개선 축이므로 청킹 변경과 분리해 A/B 평가한다.
Maintenance Note 2026-05-04#
- revised:
langchain.text_splitter.SemanticChunker표현을langchain_experimental.text_splitter.SemanticChunker기준으로 수정. - revised: Anthropic Contextual Retrieval의 35~67% 표현을 '검색 품질 향상'이 아니라 'retrieval failure 감소' 취지로 정정.
- related vault notes:
personal_vault/knowledge/dev/rag-systems.md,personal_vault/shared/reviews/r_20260425T134407Z_5b7f3c.md.
Sagwan Revalidation 2026-05-04T15:53:54Z#
- verdict:
ok - note: 전반적 권장안과 수치 해석, LangChain 경로가 현재도 무난합니다.
Sagwan Revalidation 2026-05-05T15:58:03Z#
- verdict:
ok - note: 전략·수치·구현 메모 모두 최근 RAG practice와 대체로 부합함
Sagwan Revalidation 2026-05-06T16:27:25Z#
- verdict:
ok - note: 청킹 전략·LangChain 경로·Contextual Retrieval 설명 모두 현재도 재사용 가능함
Sagwan Revalidation 2026-05-07T16:47:47Z#
- verdict:
ok - note: 청킹 전략·수치·LangChain 경로 모두 현재 실무 기준과 대체로 부합함
Sagwan Revalidation 2026-05-08T17:20:35Z#
- verdict:
ok - note: 청킹 전략·수치·LangChain 경로 모두 현행 실무 기준으로 재사용 가능함
Sagwan Revalidation 2026-05-09T17:45:38Z#
- verdict:
ok - note: 전략·수치·LangChain 경로 모두 최근 관행과 큰 충돌 없음
Sagwan Revalidation 2026-05-10T18:18:02Z#
- verdict:
ok - note: 청킹 전략·수치 해석·LangChain 경로 모두 현행 practice와 대체로 부합함
Sagwan Revalidation 2026-05-11T18:28:41Z#
- verdict:
ok - note: 청킹 전략·수치·LangChain 경로 모두 현재도 실무 기준과 대체로 부합함
Sagwan Revalidation 2026-05-12T19:03:54Z#
- verdict:
ok - note: 청킹 전략·수치 주의·LangChain 경로 모두 현재 practice와 충돌 없음
Sagwan Revalidation 2026-05-13T19:28:03Z#
- verdict:
ok - note: 핵심 전략·수치 주의·LangChain 경로 모두 현재도 재사용 가능함
Sagwan Revalidation 2026-05-14T19:58:47Z#
- verdict:
ok - note: 최근 변화로 뒤집힐 주장 없고 수치·권장안도 실무 기준으로 유효함
Sagwan Revalidation 2026-05-15T20:31:07Z#
- verdict:
ok - note: 청킹 전략·수치·LangChain 경로 모두 현재도 재사용 가능함
Sagwan Revalidation 2026-05-16T20:42:53Z#
- verdict:
ok - note: 청킹 전략·수치·LangChain 경로 모두 현재 practice와 크게 어긋나지 않음
Sagwan Revalidation 2026-05-17T21:09:09Z#
- verdict:
ok - note: 청킹 전략·수치 주의·LangChain 경로 모두 현재도 재사용 가능함
Sagwan Revalidation 2026-05-18T21:33:07Z#
- verdict:
ok - note: 청킹 전략·수치 해석·구현 주의가 현재 practice와 크게 어긋나지 않음
Sagwan Revalidation 2026-05-19T21:54:26Z#
- verdict:
ok - note: 핵심 전략·수치 해석·LangChain 경로 모두 현재도 재사용 가능함
Sagwan Revalidation 2026-05-20T22:31:21Z#
- verdict:
ok - note: 청킹 전략·수치 주의·LangChain 경로 모두 현재도 재사용 가능함
Sagwan Revalidation 2026-05-21T22:55:05Z#
- verdict:
ok - note: 청킹 전략·수치 해석·LangChain 경로 모두 현재도 재사용 가능함
Sagwan Revalidation 2026-05-22T23:04:51Z#
- verdict:
ok - note: 청킹 전략·overlap 권장·LangChain 경로 모두 현재도 재사용 가능하다.
Sagwan Revalidation 2026-05-23T23:06:08Z#
- verdict:
ok - note: 청킹 전략·수치 해석·LangChain 경로 모두 현재도 재사용 가능함
Sagwan Revalidation 2026-05-24T23:17:42Z#
- verdict:
ok - note: 청킹 전략·LangChain 경로·권장 범위가 현재도 실무적으로 유효함
Sagwan Revalidation 2026-05-25T23:43:48Z#
- verdict:
ok - note: 청킹 전략·수치·LangChain 경로 모두 현재 practice와 큰 충돌 없음
Sagwan Revalidation 2026-05-27T00:14:23Z#
- verdict:
ok - note: 청킹 전략·LangChain 경로·Contextual Retrieval 설명 모두 현행과 부합함
Sagwan Revalidation 2026-05-28T00:21:27Z#
- verdict:
ok - note: 전반적 권장안과 LangChain 경로·수치 주의가 여전히 재사용 가능함
Sagwan Revalidation 2026-05-29T00:57:17Z#
- verdict:
ok - note: 핵심 권장안과 수치 해석, LangChain 경로 모두 현재도 재사용 가능함
Sagwan Revalidation 2026-05-30T01:17:05Z#
- verdict:
ok - note: 청킹 전략·LangChain 경로·권장 수치 모두 현재 실무와 대체로 부합함
Sagwan Revalidation 2026-05-31T01:32:38Z#
- verdict:
ok - note: 청킹 전략·수치 해석·LangChain 경로 모두 현재도 재사용 가능함
Sagwan Revalidation 2026-06-01T06:00:15Z#
- verdict:
ok - note: 청킹 전략·LangChain 경로·Contextual Retrieval 설명 모두 현재도 유효함
Sagwan Revalidation 2026-06-02T06:55:21Z#
- verdict:
ok - note: 청킹 전략·수치 해석·LangChain 경로 모두 현재도 재사용 가능함
Sagwan Revalidation 2026-06-03T07:36:52Z#
- verdict:
ok - note: 청킹 전략과 LangChain import·Contextual Retrieval 주의점이 여전히 유효함
Sagwan Revalidation 2026-06-04T08:07:25Z#
- verdict:
ok - note: 청킹 전략과 LangChain import, 권장 수치 모두 현재도 재사용 가능함
Sagwan Revalidation 2026-06-05T08:28:39Z#
- verdict:
ok - note: 핵심 전략·수치·LangChain 경로 모두 현재 관행과 크게 어긋나지 않음