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.
解決的問題
大型語言模型(LLMs)具有有限的上下文視窗。本專案提供工具,將長文件拆分成較小、可管理的區塊,使其適合這些限制,同時透過避免任意切割來盡可能保留語意意義。
工作原理
該函式庫使用分層方法進行拆分。它定義了一組「語意層級」(例如,段落、句子、單字、字元),並嘗試在仍能容納於指定區塊大小內的最高層級上拆分文字。
支援三種專用拆分器:
- TextSplitter:使用 Unicode 界限進行單字和句子拆分,以及換行序列。
- MarkdownSplitter:使用 CommonMark 規範識別標題、區塊元素和內嵌元素。
- CodeSplitter:使用 tree-sitter 解析器根據語法樹的深度進行拆分。
區塊大小可透過字元數或使用 Hugging Face 或 Tiktoken 的分詞器來測量。
適用對象
需要將文字資料預處理為區塊以用於嵌入或推論的 LLM 應用開發者(例如 RAG 系統),特別是使用 Rust 或 Python 的開發者。
主要特色
- 多格式支援:為純文字、Markdown 和原始碼提供專用拆分器。
- 彈性尺寸:支援字元數、令牌數(透過 Hugging Face 和 Tiktoken)、或容量範圍。
- 語意感知:優先在自然邊界(如句子或語法樹節點)處拆分,而非單字中間。
- 高效率:使用 Rust 寫成,效能佳。
相關
- 專案
- 專案
- 專案
- 專案
- 專案