# Zi **Repository Path**: dunimd/zi ## Basic Information - **Project Name**: Zi - **Description**: 基于 Rust 构建的高性能数据处理引擎,专为现代机器学习工作流设计。Zi 提供统一的数据质量评估、清洗、转换、采样与增强框架,具有卓越的速度和可靠性。 - **Primary Language**: Rust - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: https://gitee.com/dunimd/zi - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-11-15 - **Last Updated**: 2026-01-05 ## Categories & Tags **Categories**: big-data **Tags**: dataset, AI, PiscesLx, Dunimd ## README
# Zi [English](README.md) | 简体中文 BiliBili Gitee GitHub Hugging Face ModelScope 基于 Rust 构建的高性能数据处理引擎,专为现代机器学习工作流设计。Zi 提供统一的数据质量评估、清洗、转换、采样与增强框架,具有卓越的速度和可靠性。
## 🎯 项目概述 Zi 是一个基于 Rust 的数据处理库,实现了数据转换和质量评估的管道架构。该项目专注于提供类型安全、高效且可扩展的数据处理操作框架。 ## 🏗️ 架构设计 ### 核心组件 - **管道引擎**:通过可配置算子进行数据的顺序处理 - **算子框架**:基于 trait 的类型安全算子系统 - **记录处理**:支持元数据的 JSON 数据记录 - **插件系统**:可选地通过共享库动态加载自定义算子 ### 命名约定 为保持公共 API 一致性,Zi 遵循严格的命名规则: - 公共结构体 / 枚举 / Trait 统一使用 `ZiC*` 前缀(如 `ZiCRecord`、`ZiCPipeline`)。 - 公共函数及构造器统一使用 `ZiF*` 前缀(如 `ZiFNew`、`ZiFLoadJsonl`)。 - 内部帮助函数统一使用 `_` 前缀。 本文档中的示例均已按照实际代码的命名约定更新,确保开箱即用。 ### 算子类别 基于实际代码库,Zi 支持以下算子类别: #### 1. 过滤算子 (`filter.*`) - `filter.equals` - 字段相等过滤 - `filter.not_equals` - 字段不等过滤 - `filter.any` - 任意字段匹配值 - `filter.in` - 值包含过滤 - `filter.not_in` - 值排除过滤 - `filter.exists` - 字段存在检查 - `filter.not_exists` - 字段不存在检查 - `filter.contains` - 字符串包含过滤 - `filter.contains_all` - 多字符串包含 - `filter.contains_any` - 任意字符串包含 - `filter.contains_none` - 字符串排除过滤 - `filter.length_range` - 文本长度过滤 - `filter.token_range` - 词元数量过滤 - `filter.array_contains` - 数组元素过滤 - `filter.starts_with` - 字符串前缀过滤 - `filter.ends_with` - 字符串后缀过滤 - `filter.regex` - 正则表达式过滤 - `filter.is_null` - 空值过滤 - `filter.greater_than` - 数值大于过滤 - `filter.less_than` - 数值小于过滤 - `filter.between` - 数值范围过滤 - `filter.range` - 数值范围过滤(替代) #### 2. 质量算子 (`quality.*`) - `quality.score` - 基于 ASCII 比例、非打印字符和重复的文本质量评分 - `quality.filter` - 质量阈值过滤 - `quality.toxicity` - 使用内置词典的毒性检测 #### 3. 语言算子 (`lang.*`) - `lang.detect` - 基于脚本分析的语言检测(en、zh、ar、ru) - `lang.confidence` - 语言置信度评分 #### 4. 元数据算子 (`metadata.*`) - `metadata.enrich` - 添加元数据字段 - `metadata.rename` - 重命名元数据字段 - `metadata.remove` - 移除元数据字段 - `metadata.copy` - 复制元数据字段 - `metadata.require` - 要求元数据字段 - `metadata.extract` - 提取值到元数据 - `metadata.keep` - 仅保留指定元数据字段 #### 5. 限制算子 (`limit`) - `limit` - 记录数量限制 #### 6. 去重算子 (`dedup.*`) - `dedup.simhash` - 基于 SimHash 的去重 - `dedup.minhash` - 基于 MinHash 的去重 - `dedup.semantic` - 语义去重 #### 7. PII 算子 (`pii.*`) - `pii.redact` - 支持自定义模式的 PII 编辑 #### 8. 转换算子 (`transform.*`) - `transform.normalize` - 文本规范化 #### 9. 采样算子 (`sample.*`) - `sample.random` - 随机采样 - `sample.top` - Top-k 采样 #### 10. 增强算子 (`augment.*`) - `augment.synonym` - 基于同义词的文本增强 - `augment.noise` - 噪声注入增强 ## 🚀 快速开始 ### Rust 使用 ```rust use serde_json::json; use Zi::pipeline::ZiCPipelineBuilder; use Zi::record::ZiCRecord; // 创建示例数据 let records = vec![ ZiCRecord::ZiFNew(Some("1".into()), json!({"text": "Hello world"})), ZiCRecord::ZiFNew(Some("2".into()), json!({"text": "你好世界"})), ]; // 定义算子步骤(serde_json::Value 切片) let steps = [ json!({ "operator": "lang.detect", "config": {"path": "payload.text", "key": "language"} }), json!({ "operator": "quality.score", "config": {"path": "payload.text", "key": "quality_score"} }), json!({ "operator": "quality.filter", "config": {"key": "quality_score", "min": 0.5} }), ]; // 构建处理管道 let pipeline = ZiCPipelineBuilder::with_defaults() .build_from_config(&steps) .expect("合法的管道配置"); // 处理数据 let processed = pipeline .run(records) .expect("管道执行成功"); ``` ### 配置格式 算子使用 JSON 配置,结构如下: ```json [ { "operator": "operator.name", "config": { // 算子特定配置 } } ] ``` ### 字段路径语法 字段路径使用点表示法导航 JSON 结构: - `payload.text` - 访问有效负载中的文本字段 - `metadata.field` - 访问元数据中的字段 - `payload.nested.field` - 访问嵌套字段 ## 📊 性能特性 Zi 使用 Rust 构建以获得最佳性能: - **零拷贝操作**(可能情况下) - **内存安全处理** 使用 Rust 所有权系统 - **高效 JSON 处理** 使用 serde_json - **流式支持** 用于大数据集 - **流式处理** 支持大规模数据集 ## 🏗️ 从源码构建 ### 前置要求 - Rust 1.70+ - Cargo ### 构建命令 ```bash # 克隆仓库 git clone https://github.com/mf2023/Zi.git cd Zi # 发布模式构建 cargo build --release # 运行测试 cargo test # 运行基准测试 cargo bench ``` ## 📁 项目结构 ``` src/ ├── lib.rs # 库入口点 ├── errors.rs # 错误处理类型 ├── io.rs # I/O 工具 ├── metrics.rs # 质量指标 ├── operator.rs # 核心算子 trait ├── pipeline.rs # 管道引擎 ├── record.rs # 数据记录类型 └── operators/ # 算子实现 ├── augment.rs # 数据增强算子 ├── dedup.rs # 去重算子 ├── filter.rs # 过滤算子 ├── lang.rs # 语言处理算子 ├── limit.rs # 限制算子 ├── metadata.rs # 元数据算子 ├── mod.rs # 算子模块 ├── pii.rs # PII 处理算子 ├── quality.rs # 质量评估算子 ├── sample.rs # 采样算子 └── transform.rs # 文本转换算子 ``` ## 🔧 插件系统 Zi 支持通过共享库动态加载自定义算子: ```rust let mut builder = ZiCPipelineBuilder::with_defaults(); builder.load_plugin("path/to/plugin.so")?; ``` 插件必须实现 `zi_register_operators` 函数并向构建器注册其算子。 ## 🎯 使用场景 ### 数据质量评估 - 基于多指标的文本质量评分 - 语言检测和置信度评分 - 内容审核的毒性检测 ### 数据过滤 - 基于字段值的复杂过滤 - 正则表达式匹配 - 基于范围的数值过滤 ### 数据转换 - 元数据丰富和操作 - 文本规范化 - PII 编辑 ### 数据去重 - 基于 SimHash 的近重复检测 - 基于 MinHash 的相似性检测 - 语义去重 ## 🔮 未来开发 ### 计划功能 - 超越基本脚本检测的额外语言支持 - 高级质量指标 - 基于机器学习的算子 - 分布式处理支持 - 管道配置的 Web UI ## 📄 许可证 本项目采用 Apache License 2.0 许可 — 详见 [LICENSE](LICENSE)。 --- ## 🌏 社区与引用 - 欢迎提交问题与拉取请求! - GitHub: https://github.com/mf2023/Zi.git - Gitee: https://gitee.com/dunimd/zi.git ## 🙏 致谢 使用优秀的 Rust 生态系统工具构建: - [Serde](https://serde.rs/) 用于 JSON 处理 - [Regex](https://docs.rs/regex/) 用于模式匹配 - [Arrow2](https://github.com/jorgecarleitao/arrow2) 用于列式数据处理 - [Libloading](https://docs.rs/libloading/) 用于插件支持

直觉导航数据深处 · 共情赋予智能形态