본문 바로가기
Q&A해결2026년 3월 15일1분 읽기

AI RAG 시스템 구축 시 청킹 전략 질문

데
데이터사이언스현
조회 705댓글 5
사내 문서 검색용 RAG 시스템을 구축 중인데, 문서 청킹(chunking) 전략에서 막혔습니다. 현재 상황: - 사내 기술 문서 약 2,000개 (마크다운, PDF) - 문서 길이: 500자 ~ 10,000자 - OpenAI embedding + Pinecone 사용 예정 - LangChain 기반 단순히 고정 크기(512 토큰)로 자르면 문맥이 깨지는 경우가 많고, 의미 단위로 자르면 크기가 들쭉날쭉해서 검색 품질이 안정적이지 않습니다. 실무에서 효과적인 청킹 전략이 궁금합니다.

댓글 5

김김영삼7개월 전
RAG 청킹은 문서 특성에 따라 전략이 달라져야 합니다. 경험상 가장 효과적인 방법은 **계층적 청킹(Hierarchical Chunking)**입니다:

1. **1차: 구조 기반 분할** - 마크다운 헤딩(##, ###) 기준으로 의미 단위 분리
2. **2차: 크기 조절** - 너무 큰 청크는 문단 단위로 재분할, 너무 작은 건 병합
3. **오버래핑** - 청크 간 20% 정도 오버랩으로 문맥 유지

```python
from langchain.text_splitter import MarkdownHeaderTextSplitter, RecursiveCharacterTextSplitter

# 1단계: 마크다운 구조 기반 분할
md_splitter = MarkdownHeaderTextSplitter(
headers_to_split_on=[("##", "Section"), ("###", "Subsection")]
)

# 2단계: 크기 조절
child_splitter = RecursiveCharacterTextSplitter(
chunk_size=500, chunk_overlap=100,
separators=["\n\n", "\n", ". ", " "]
)
```

추가로 **Parent Document Retriever** 패턴을 쓰면, 작은 청크로 검색하되 큰 부모 청크를 LLM에 전달할 수 있어서 검색 정확도와 문맥 보존을 동시에 잡을 수 있습니다.

PDF는 먼저 마크다운으로 변환(pymupdf4llm 추천) 후 같은 파이프라인을 적용하세요.
보보안전문가태호7개월 전
저도 RAG 프로젝트 했었는데, semantic chunking도 한번 시도해보세요. 연속된 문장 간 임베딩 유사도가 떨어지는 지점에서 분할하는 방식인데, LangChain에 SemanticChunker가 있습니다. 다만 속도가 느려서 오프라인 인덱싱에 적합해요.
데데이터사이언스현7개월 전
Parent Document Retriever 패턴이 정확히 제가 필요했던 거네요! 작은 청크로 검색하고 큰 청크를 전달하는 건 생각 못 했어요.
김김영삼7개월 전
한 가지 더 팁을 드리면, 청크에 메타데이터(문서 제목, 섹션명, 작성일)를 꼭 포함시키세요. 검색 시 메타데이터 필터링으로 정확도를 크게 높일 수 있습니다. Pinecone에서 namespace와 metadata filter를 잘 활용하시면 됩니다.
데데이터사이언스현7개월 전
계층적 청킹 + Parent Document Retriever + 메타데이터 필터링 조합으로 구현했더니 검색 정확도가 확 올랐습니다. 답변 정말 감사합니다!
Ctrl+Enter로 등록