Kreuzberg v4.0.0-RC.8 已可用

发布: (2025年12月15日 GMT+8 21:06)
7 min read
原文: Dev.to

Source: Dev.to

公告

Kreuzberg v4.0.0‑rc.8 已在所有渠道上线。正式的 v4.0.0 发行计划在明年年初(几周内)发布。

Kreuzberg 是什么?

Kreuzberg 是一套文档智能工具包,能够从 56+ 种文件格式中提取文本、元数据、表格、图像和结构化数据。

  • v1‑v3:纯 Python 实现。
  • v4:使用 Rust(2024 版)全新重写,并提供多语言原生绑定,实现零成本抽象、内存安全和原生性能。

语言绑定

语言 / 运行时绑定类型
Rust原生库
PythonPyO3 原生绑定
TypeScript (Node.js)NAPI‑RS 原生绑定
TypeScript (Deno / 浏览器 / Edge)WebAssembly
RubyMagnus FFI
Java 25+Panama 外部函数与内存 API
C#P/Invoke
Gocgo 绑定

即将推出的绑定

  • PHP
  • Elixir(通过 Rustler,支持 Erlang 与 Gleam 互操作)

安装方式

  • CLI – 通过 cargo 或 Homebrew 安装。
  • HTTP REST API 服务器(Axum)。
  • 模型上下文协议(MCP)服务器,用于 Claude Desktop / Continue.dev。
  • Docker 镜像(公开可用)。

架构改进

  • 使用 Rust 所有权模型实现零拷贝操作。
  • 基于 Tokio 运行时的真正异步并发(无 GIL)。
  • 流式解析器,实现多 GB 文件的常量内存处理。
  • SIMD 加速的文本处理,用于 token 缩减和字符串操作。
  • 所有语言绑定的内存安全 FFI 边界。
  • 基于 Trait 的插件系统,便于扩展。

v3 → v4 对比

功能v3(Python)v4(Rust)
核心语言纯 PythonRust(2024 版)
支持的格式30‑40 (via Pandoc)56+(原生解析器)
语言绑定仅 Python7 种语言(Rust、Python、TS、Ruby、Java、Go、C#)
依赖需要 Pandoc(系统二进制)零系统依赖
嵌入向量不支持FastEmbed + ONNX(3 种预设 + 自定义)
语义分块外部库内置(文本 + Markdown 感知)
Token 缩减基于 TF‑IDF3 种可配置模式
语言检测可选(fast‑langdetect)内置(68 种语言)
关键词提取可选(KeyBERT)内置(YAKE + RAKE)
OCR 后端Tesseract/EasyOCR/PaddleOCR同上 + 更紧密集成
插件系统有限的提取器注册表完整的基于 Trait 系统(4 种插件类型)
页码追踪基于字符的索引基于字节的索引,支持 O(1) 查询
服务器REST API(Litestar)HTTP(Axum)+ MCP + MCP‑SSE
安装体积~100 MB 基础16‑31 MB 完整
内存模型Python 堆RAII + 流式处理
并发asyncio(受 GIL 限制)Tokio 工作窃取

从 Pandoc 到原生解析器

v3 的局限(Pandoc):

  • 系统级依赖和安装开销。
  • 每个文档都要启动子进程。
  • 不支持流式处理。
  • 元数据提取受限。
  • ~500 MB 的安装占用。

v4 的优势(原生 Rust 解析器):

  • 零外部依赖。
  • 直接解析,全面控制提取过程。
  • 元数据更丰富(如 DOCX 属性、章节结构、样式)。
  • 支持大文件流式处理(已在多 GB XML 上测试)。
  • 示例:PPTX 提取器现在可以以常量内存使用流式处理千兆级演示文稿。

扩展的格式支持

新支持的旧版格式:

  • .doc(Word 97‑2003)
  • .ppt(PowerPoint 97‑2003)
  • .xls(Excel 97‑2003)
  • .eml(电子邮件)
  • .msg(Outlook)

学术/技术格式:

  • LaTeX(.tex
  • BibTeX(.bib
  • Typst(.typ
  • JATS XML(学术文章)
  • DocBook XML
  • FictionBook(.fb2
  • OPML(.opml

改进的 Office 支持:

  • Excel 二进制/宏文件(.xlsb.xlsm
  • 更丰富的 DOCX/PPTX/XLSX 元数据提取
  • 完整的表格提取(包括演示文稿)
  • 图像提取并去重

RAG 与 LLM 工作流的新特性

嵌入向量(FastEmbed)

  • ONNX Runtime 加速。
  • 预设:fast(384 d)、balanced(512 d)、quality(768 d/1024 d)。
  • 支持自定义 ONNX 模型。
  • 本地生成(无需外部 API 调用,无速率限制)。
  • 自动模型下载与缓存。

示例(Python)

from kreuzberg import ExtractionConfig, EmbeddingConfig, EmbeddingModelType

config = ExtractionConfig(
    embeddings=EmbeddingConfig(
        model=EmbeddingModelType.preset("balanced"),
        normalize=True
    )
)

result = kreuzberg.extract_bytes(pdf_bytes, config=config)
# result.embeddings contains a vector for each chunk

语义文本分块(内置)

  • 基于结构的分块,遵循文档语义。
  • 两种策略:
    1. 通用 – 空格/标点感知。
    2. Markdown – 保留标题、列表、代码块、表格。
  • 可配置块大小与重叠。
  • Unicode 安全(支持中日韩、表情符号)。
  • 自动将块映射到页面,提供字节精确的偏移。

字节精确页码追踪(破坏性变更)

  • v3: 基于字符的索引(对 UTF‑8 多字节字符不准确)。
  • v4: 基于字节的索引(byte_start / byte_end),对所有字符串操作均正确。
  • O(1) 查询:“字节偏移 X 位于哪一页?”
  • 支持按页提取内容并插入页标记(如 --- Page 5 ---)。

增强的 Token 缩减

三种可配置模式,用于降低 LLM 上下文大小:

模式约减比例
Light~15 %
Moderate~30 %
Aggressive~50 %

实现基于 TF‑IDF 句子打分、位置感知权重、语言特定停用词过滤以及 SIMD 加速。

语言检测(内置)

  • 支持 68 种语言并返回置信度。
  • 能处理混合语言文档。
  • 提供 ISO 639‑1 与 ISO 639‑3 编码。
  • 可配置置信度阈值。

关键词提取(内置)

  • YAKE – 无监督、语言无关。
  • RAKE – 快速统计方法。
  • 可配置 n‑gram(1‑3 词)。
  • 使用语言特定停用词进行相关性打分。

插件系统

四种可扩展插件类型:

  1. DocumentExtractor – 自定义文件格式处理器。
  2. OcrBackend – 集成自定义 OCR 引擎(包括 Python 模型)。
  3. PostProcessor – 数据转换与增强。
  4. Validator – 提取前的验证。

插件在 Rust 中定义,跨所有语言绑定可用;Python/TypeScript 可提供线程安全的回调进入 Rust 核心。

生产级服务器

  • HTTP REST API – 基于 Axum 的服务器,附带 OpenAPI 文档。
  • MCP 服务器 – 直接集成 Claude Desktop、Continue.dev 等 MCP 客户端。
  • MCP‑SSE 传输(RC.8) – 为无 WebSocket 环境提供服务器发送事件。

所有服务器模式共享同一功能集:提取、批处理和缓存。


欲了解更多细节,请参阅官方 Kreuzberg 文档和发行说明。

Back to Blog

相关文章

阅读更多 »