SuperAPI AI 工具集

chunking

数据与分析

查看项目

更新于 10-16 07:18

技能介绍

用途:把文档文本切成适合 LLM 上下文窗口或向量库入库的片段。Xberg 支持两种方式——在抽取过程中内联分块(块出现在文档的 chunks 字段),或用 chunk 命令对已有文本独立分块。默认按字符计长,提供 tokenizer 模型时按 token 计长。

主要能力:内联抽取用 --chunk 开启,默认 1000 字符、200 字符重叠;可显式指定 --chunk-size 与 --chunk-overlap。独立命令 xberg chunk 从 --text 或 stdin 读取,输出默认 JSON,包含 chunks、chunk_count、解析后的配置与 input_size_bytes;--format text 输出带 --- chunk N --- 分隔的可读文本。切分策略由 --chunker-type 选择:text(默认,字符窗口加重叠)、markdown(按标题与块结构切分)、yaml(面向结构化配置/数据文档)、semantic(按主题边界切分,由 --topic-threshold 0.0–1.0 控制,默认 0.75)。按 token 计长需传 --chunking-tokenizer(如 Xenova/gpt-4o),此时 --chunk-size 以 token 解释;该功能需要 chunking-tokenizers 特性,默认 CLI 构建已包含。也可用配置文件 [chunking] 段设置 max_characters、overlap、chunker_type,命令行 --chunk-size 映射 max_characters,--chunk-overlap 映射 overlap。Python 通过 ExtractionConfig 的 ChunkingConfig(max_characters, overlap) 配置,Node 用 maxChars/maxOverlap。

使用示例(保持原样): xberg extract report.pdf --chunk --format json | jq '.chunks | length' xberg extract report.pdf --chunk --chunk-size 1500 --chunk-overlap 300 --format json xberg chunk --text "long document text ..." --chunk-size 800 --chunk-overlap 100 xberg extract notes.md | xberg chunk --chunk-size 500 --format json xberg chunk --text "$(cat README.md)" --chunker-type markdown xberg chunk --text "$(cat transcript.txt)" --chunker-type semantic --topic-threshold 0.6 xberg extract report.pdf --chunking-tokenizer Xenova/gpt-4o --format json

适用场景:RAG/向量库建议 500–1000 字符(或 256–512 token)、10–20% 重叠,文档用 markdown 切分保持章节完整;LLM 摘要用较大块(1500–4000 字符)加小重叠,按 token 计长以不超模型窗口;主题分段用 semantic 并调节 topic-threshold。

限制与注意:重叠必须小于块大小,extract 命令会拒绝 --chunk-overlap >= --chunk-size;仅修改重叠且超过大小时会钳制为 chunk_size/4。未构建 chunking-tokenizers 时 --chunking-tokenizer 报错。独立 chunk 命令遇到空文本会退出。JSON 输出中 chunker_type 因 Rust Debug 格式化首字母大写(Text、Markdown、Yaml、Semantic),而输入标志为小写,解析比较前需转小写。