Skip to main content
텍스트 분할기는 대용량 문서를 개별적으로 검색 가능하고 모델의 컨텍스트 윈도우 제한에 맞는 작은 청크로 나눕니다. 문서를 분할하는 데에는 여러 전략이 있으며, 각각 고유한 장점을 가지고 있습니다.
대부분의 사용 사례에서는 RecursiveCharacterTextSplitter를 먼저 사용해 보세요. 이 분할기는 컨텍스트를 유지하면서 청크 크기를 관리하는 균형 잡힌 접근 방식을 제공합니다. 이 기본 전략은 별도의 설정 없이도 잘 작동하며, 특정 애플리케이션의 성능을 미세 조정해야 하는 경우에만 조정을 고려하면 됩니다.

텍스트 구조 기반

텍스트는 단락, 문장, 단어와 같은 계층적 단위로 자연스럽게 구성됩니다. 이러한 본질적인 구조를 활용하여 분할 전략을 수립할 수 있으며, 이를 통해 자연스러운 언어 흐름을 유지하고, 분할 내에서 의미적 일관성을 유지하며, 다양한 수준의 텍스트 세분화에 적응할 수 있습니다. LangChain의 RecursiveCharacterTextSplitter가 이 개념을 구현합니다:
  • RecursiveCharacterTextSplitter는 더 큰 단위(예: 단락)를 온전하게 유지하려고 시도합니다.
  • 단위가 청크 크기를 초과하면 다음 수준(예: 문장)으로 이동합니다.
  • 필요한 경우 이 과정은 단어 수준까지 계속됩니다.
사용 예시:
from langchain_text_splitters import RecursiveCharacterTextSplitter

text_splitter = RecursiveCharacterTextSplitter(chunk_size=100, chunk_overlap=0)
texts = text_splitter.split_text(document)
사용 가능한 텍스트 분할기:

길이 기반

문서를 길이에 따라 분할하는 것은 직관적인 전략입니다. 이 간단하면서도 효과적인 접근 방식은 각 청크가 지정된 크기 제한을 초과하지 않도록 보장합니다. 길이 기반 분할의 주요 이점:
  • 간단한 구현
  • 일관된 청크 크기
  • 다양한 모델 요구 사항에 쉽게 적응 가능
길이 기반 분할의 유형:
  • 토큰 기반: 토큰 수를 기준으로 텍스트를 분할하며, 언어 모델을 사용할 때 유용합니다.
  • 문자 기반: 문자 수를 기준으로 텍스트를 분할하며, 다양한 유형의 텍스트에서 더 일관된 결과를 얻을 수 있습니다.
토큰 기반 분할을 사용하는 LangChain의 CharacterTextSplitter 구현 예시:
from langchain_text_splitters import CharacterTextSplitter

text_splitter = CharacterTextSplitter.from_tiktoken_encoder(
    encoding_name="cl100k_base", chunk_size=100, chunk_overlap=0
)
texts = text_splitter.split_text(document)
사용 가능한 텍스트 분할기:

문서 구조 기반

일부 문서는 HTML, Markdown, JSON 파일과 같은 고유한 구조를 가지고 있습니다. 이러한 경우 문서의 구조에 따라 분할하는 것이 유리한데, 이는 의미적으로 관련된 텍스트를 자연스럽게 그룹화하기 때문입니다. 구조 기반 분할의 주요 이점:
  • 문서의 논리적 구성 보존
  • 각 청크 내에서 컨텍스트 유지
  • 검색이나 요약과 같은 다운스트림 작업에 더 효과적일 수 있음
구조 기반 분할의 예시:
  • Markdown: 헤더를 기준으로 분할(예: #, ##, ###)
  • HTML: 태그를 사용하여 분할
  • JSON: 객체 또는 배열 요소로 분할
  • 코드: 함수, 클래스 또는 논리적 블록으로 분할
사용 가능한 텍스트 분할기:

제공자별


Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.
I