feyninc/chonkiejs

🦛 CHONK your texts with Chonkie ✨ Type-friendly, light-weight, fast and super-simple chunking library

What it solves

Chonkiejs 是一个为 TypeScript 开发人员设计的轻量级、高效的文本分块库。它解决了将大型文本拆分为较小、易于管理的片段(chunks)以用于检索增强生成(RAG)应用的问题,为现有的笨重库提供了更灵活、更快速的替代方案。

How it works

该库提供几种专门的分块策略来处理不同类型的内容:

  • Recursive Chunking: 使用规则层级(段落、句子、标点符号、单词、字符)来拆分文本,以维持内容的上下文。
  • Token-based Chunking: 将文本拆分为固定大小的 token 分块,并可选择是否重叠。
  • Sentence Chunking: 将句子分组为 token 大小的分块,同时尊重句子边界。
  • Semantic Chunking: 使用滑动句子窗口之间的嵌入(embedding)相似度来检测自然边界,并在“低相似度谷值”处进行拆分。
  • Code Chunking: 对于源代码,使用通过 tree-sitter 实现的 AST-aware 分块。
  • Table Chunking: 将 markdown 或 HTML 表格拆分为子表格,同时重复原始标题。
  • Fast Chunking: 一个由 WASM 驱动的高吞吐量基于字节的分块器,旨在实现最大速度。

Who it’s for

TypeScript 开发人员,正在构建 RAG 应用或任何需要快速、即时文本预处理和分块的应用。

Highlights

  • Diverse Chunking Methods: 支持递归、token、句子、语义和专门的代码/表格分块。

  • Type-Safe: 原生 Python chonkie 库的 TypeScript 版本。

  • Lighweight: 设计旨在实用且高效,核心包中零依赖。

  • HuggingFace Integration: 通过 @chonkiejs/token 提供对 HuggingFace tokenizers 的可选支持。

  • Cloud Integration: 通过 @chonkiejs/cloud 提供云端分块器。