텍스트 스플리터 통합
텍스트 스플리터 통합
LangChain으로 텍스트 스플리터와 통합하는 방법을 알아봅니다.
npm install @langchain/textsplitters @langchain/core
# Requires Node.js 22+
pnpm add @langchain/textsplitters @langchain/core
# Requires Node.js 22+
yarn add @langchain/textsplitters @langchain/core
# Requires Node.js 22+
bun add @langchain/textsplitters @langchain/core
# Requires Node.js 22+
텍스트 스플리터는 큰 문서를 개별적으로 검색 가능하고 모델 컨텍스트 창 제한에 맞는 더 작은 청크로 나눕니다.
문서 분할에는 각각 장점이 있는 여러 전략이 있습니다.
대부분의 사용 사례에서는
RecursiveCharacterTextSplitter로 시작하세요. 컨텍스트 유지와 청크 크기 관리의 균형을 잘 잡습니다. 이 기본 전략은 바로 잘 작동하며, 특정 애플리케이션에 맞게 성능을 세밀하게 조정해야 하는 경우에만 조정을 고려하세요.
출처: 문서
본문
텍스트 구조 기반(Text structure-based)
텍스트는 단락, 문장, 단어 같은 계층적 단위로 자연스럽게 구성됩니다. 이 고유 구조를 활용해 자연어 흐름을 유지하고, 분할 내 의미적 일관성을 유지하며, 다양한 텍스트 세분성 수준에 적응하는 분할을 만들 수 있습니다. LangChain의 RecursiveCharacterTextSplitter는 이 개념을 구현합니다:
RecursiveCharacterTextSplitter는 더 큰 단위(예: 단락)를 온전하게 유지하려고 시도함.- 단위가 청크 크기를 초과하면 다음 수준(예: 문장)으로 이동함.
- 필요하면 단어 수준까지 이 과정을 계속함.
사용 예시:
import { RecursiveCharacterTextSplitter } from "@langchain/textsplitters";
const splitter = new RecursiveCharacterTextSplitter({ chunkSize: 100, chunkOverlap: 0 })
const texts = splitter.splitText(document)
사용 가능한 텍스트 스플리터:
길이 기반(Length-based)
문서를 길이에 따라 분할하는 것은 직관적인 전략입니다. 이 단순하면서도 효과적인 접근은 각 청크가 지정된 크기 제한을 초과하지 않도록 보장합니다. 길이 기반 분할의 주요 이점:
- 구현이 간단함
- 일관된 청크 크기
- 다양한 모델 요구 사항에 쉽게 적응
길이 기반 분할 유형:
- 토큰 기반: 토큰 수에 따라 텍스트를 분할하며, 언어 모델로 작업할 때 유용.
- 문자 기반: 문자 수에 따라 텍스트를 분할하며, 다양한 유형의 텍스트에 걸쳐 더 일관적일 수 있음.
LangChain의 CharacterTextSplitter를 토큰 기반 분할과 함께 사용하는 예시 구현:
import { TokenTextSplitter } from "@langchain/textsplitters";
const splitter = new TokenTextSplitter({ encodingName: "cl100k_base", chunkSize: 100, chunkOverlap: 0 })
const texts = splitter.splitText(document)
사용 가능한 텍스트 스플리터:
문서 구조 기반(Document structure-based)
일부 문서는 HTML, Markdown, JSON 파일처럼 고유한 구조를 갖습니다. 이러한 경우 텍스트를 의미적으로 관련된 부분으로 자연스럽게 그룹화하는 경우가 많으므로 문서를 구조에 따라 분할하는 것이 유익합니다. 구조 기반 분할의 주요 이점:
- 문서의 논리적 구성 보존
- 각 청크 내 컨텍스트 유지
- 검색이나 요약 같은 다운스트림 작업에 더 효과적일 수 있음
사용 가능한 텍스트 스플리터:
더 알아보기 (Learn more)
- 이 문서를 MCP로 연결하면 Claude, VSCode 등에서 실시간 답변을 받을 수 있어요.
- GitHub에서 이 페이지 편집하기 또는 이슈 제출하기.