benbrandt/text-splitter
Split text into semantic chunks, up to a desired chunk size. Supports calculating length by characters and tokens, and is callable from Rust and Python.
해결하는 문제
대규모 언어 모델(LLM)은 제한된 컨텍스트 창을 가집니다. 이 프로젝트는 임의의 자르기 없이 가능한 한 의미적 의미를 유지하면서 긴 문서를 작은 관리 가능한 청크로 나누는 도구를 제공합니다.
작동 방식
이 라이브러리는 계층적인 접근 방식을 사용하여 분할합니다. 단어, 문장, 문자와 같은 '의미적 레벨'을 정의하고, 지정된 청크 크기에 맞는 가장 높은 레벨에서 텍스트를 분할하려고 합니다.
세 가지 전용 스플리터를 지원합니다:
- TextSplitter: 단어와 문장에는 유니코드 경계를 사용하고, 줄 바꿈 시퀀스도 포함합니다.
- MarkdownSplitter: CommonMark 사양을 사용하여 제목, 블록 요소, 인라인 요소를 인식합니다.
- CodeSplitter: tree-sitter 파서를 사용하여 구문 트리의 깊이 기반으로 분할합니다.
청크 크기는 문자 수 또는 Hugging Face 또는 Tiktoken의 토크나이저를 사용하여 토큰 수로 측정할 수 있습니다.
대상 사용자
RAG 시스템과 같은 LLM 애플리케이션을 개발하는 개발자로서, 임베딩 또는 추론을 위해 텍스트 데이터를 청크로 전처리해야 하는 사람, 특히 Rust 또는 Python을 사용하는 사람.
주요 특징
- 다양한 형식 지원: 플레인 텍스트, Markdown, 소스 코드용 전용 스플리터.
- 유연한 크기 지정: 문자 수, 토큰 수(Hugging Face 및 Tiktoken 경유), 또는 범위 지정 지원.
- 의미적 인식: 단어 중간이 아닌 문장이나 구문 트리 노드와 같은 자연스러운 경계에서 분할을 우선시.
- 고성능: 효율성을 위해 Rust로 작성.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트