semantic-text-splitter 실전 사용 — 파이썬 API
semantic-text-splitter 실전 사용
파이썬에서 LLM 파이프라인에 끼워 쓸 때는 semantic_text_splitter 패키지를 설치하고 TextSplitter를 만들면 돼요. 문자 수뿐 아니라 Tiktoken이나 Hugging Face 토크나이저 기준으로 토큰 수를 세서 청크를 나눌 수도 있어요.
출처: https://semantic-text-splitter.readthedocs.io/en/latest/
문자 수 기준
from semantic_text_splitter import TextSplitter
# Maximum number of characters in a chunk
max_characters = 1000
# Optionally can also have the splitter not trim whitespace for you
splitter = TextSplitter(max_characters)
# splitter = TextSplitter(max_characters, trim=False)
chunks = splitter.chunks("your document text")
Tiktoken 토크나이저 기준
OpenAI 모델용으로 잘라야 한다면 모델 이름으로 토크나이저를 만들 수 있어요.
from semantic_text_splitter import TextSplitter
# Maximum number of tokens in a chunk
max_tokens = 1000
splitter = TextSplitter.from_tiktoken_model("gpt-3.5-turbo", max_tokens)
chunks = splitter.chunks("your document text")
커스텀 콜백 기준
길이 계산을 직접 정의하고 싶으면 콜백을 넘겨요.
from semantic_text_splitter import TextSplitter
splitter = TextSplitter.from_callback(lambda text: len(text), 1000)
chunks = splitter.chunks("your document text")
코드 스플리터
tree-sitter 문법으로 코드를 파싱하는 CodeSplitter도 제공돼요. from_callback으로 언어 문법과 길이 콜백을 넘기면 돼요.
from semantic_text_splitter import CodeSplitter
import tree_sitter_python
splitter = CodeSplitter.from_callback(
tree_sitter_python.language(),
lambda text: len(text),
(200, 1000)
)
chunks = splitter.chunks("# Header
your document text")
API 포인트
TextSplitter/MarkdownSplitter/CodeSplitter 공통으로 chunks(text), chunk_indices(text), chunk_all(texts), chunk_all_indices(texts)를 제공해요. 각 스플리터 응답은 용량 이내의 문자열(또는 오프셋 튜플) 목록이에요.