用途:在 xberg 中将抽取出的文本切分为块,并按块生成向量,用于 RAG 检索管线。
切分能力:由 ExtractionConfig.chunking(Option<ChunkingConfig>)驱动。独立入口为 chunking::chunk_text(text, &ChunkingConfig, page_boundaries) 与 chunking::rag::chunk_for_rag(text, &ChunkingConfig),后者把 ChunkerType::Text 升级为 Markdown 并填充 heading_path。ChunkerType 只有 Text(默认)、Markdown、Yaml、Semantic 四种。Semantic 在有 EmbeddingConfig 时按嵌入主题偏移切分,否则退化为结构边界启发式,此时 topic_threshold 无效。结果类型 ChunkingResult 含 chunks 与 chunk_count。
配置:字段的 serde 线名为 max_chars(别名 max_characters)、max_overlap(别名 overlap)、trim、chunker_type、preset,默认分别为 1000、200、true、Text、无。配置文件须写线名,拼写错误会被静默忽略。preset 同时设定块大小与嵌入模型,但受 embeddings feature 门控,没有该 feature 时 preset 不生效。
嵌入:模型选择用 EmbeddingModelType 枚举:Preset{name}(推荐)、Custom、Llm、Plugin。EmbeddingConfig 默认 normalize=true、batch_size=32、max_embed_duration_secs=60、max_sequence_length=None(回退 512)。注意两个默认不一致:EmbeddingModelType::default() 为 gte-modernbert-base 预设,而 EmbeddingConfig::default() 为 balanced,需确认所用构造函数。
特性门控:embeddings = ["onnx-runtime", "dep:ndarray", "chunking", "tokio-runtime", "embedding-presets"]。ort-bundled 默认在构建时下载 ONNX Runtime,无需系统安装;ort-dynamic 才需 ORT_DYLIB_PATH。static-embeddings 是纯 Rust 的 model2vec 路径,也是 no-ort-target(WASM/Android)上唯一可用的稠密嵌入;embedding-presets 仅携带预设元数据,WASM 安全。
规则:先切分后嵌入,向量按块而非按文档附加;使用配置文件线名;无 ORT 的构建应跳过嵌入而非报错;为余弦相似度保留 normalize=true。
限制:资料未给出各预设的完整列表来源之外信息、性能数据、收费或平台支持细节,均暂未提供。