대부분의 사용 사례에서는 RecursiveCharacterTextSplitter를 먼저 사용해 보세요. 이 분할기는 컨텍스트를 유지하면서 청크 크기를 관리하는 균형 잡힌 접근 방식을 제공합니다. 이 기본 전략은 별도의 설정 없이도 잘 작동하며, 특정 애플리케이션의 성능을 미세 조정해야 하는 경우에만 조정을 고려하면 됩니다.
텍스트 구조 기반
텍스트는 단락, 문장, 단어와 같은 계층적 단위로 자연스럽게 구성됩니다. 이러한 본질적인 구조를 활용하여 분할 전략을 수립할 수 있으며, 이를 통해 자연스러운 언어 흐름을 유지하고, 분할 내에서 의미적 일관성을 유지하며, 다양한 수준의 텍스트 세분화에 적응할 수 있습니다. LangChain의RecursiveCharacterTextSplitter가 이 개념을 구현합니다:
- RecursiveCharacterTextSplitter는 더 큰 단위(예: 단락)를 온전하게 유지하려고 시도합니다.
- 단위가 청크 크기를 초과하면 다음 수준(예: 문장)으로 이동합니다.
- 필요한 경우 이 과정은 단어 수준까지 계속됩니다.
길이 기반
문서를 길이에 따라 분할하는 것은 직관적인 전략입니다. 이 간단하면서도 효과적인 접근 방식은 각 청크가 지정된 크기 제한을 초과하지 않도록 보장합니다. 길이 기반 분할의 주요 이점:- 간단한 구현
- 일관된 청크 크기
- 다양한 모델 요구 사항에 쉽게 적응 가능
- 토큰 기반: 토큰 수를 기준으로 텍스트를 분할하며, 언어 모델을 사용할 때 유용합니다.
- 문자 기반: 문자 수를 기준으로 텍스트를 분할하며, 다양한 유형의 텍스트에서 더 일관된 결과를 얻을 수 있습니다.
문서 구조 기반
일부 문서는 HTML, Markdown, JSON 파일과 같은 고유한 구조를 가지고 있습니다. 이러한 경우 문서의 구조에 따라 분할하는 것이 유리한데, 이는 의미적으로 관련된 텍스트를 자연스럽게 그룹화하기 때문입니다. 구조 기반 분할의 주요 이점:- 문서의 논리적 구성 보존
- 각 청크 내에서 컨텍스트 유지
- 검색이나 요약과 같은 다운스트림 작업에 더 효과적일 수 있음
- Markdown: 헤더를 기준으로 분할(예: #, ##, ###)
- HTML: 태그를 사용하여 분할
- JSON: 객체 또는 배열 요소로 분할
- 코드: 함수, 클래스 또는 논리적 블록으로 분할
제공자별
Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.