# DataForge **Repository Path**: arcanu/data-forge ## Basic Information - **Project Name**: DataForge - **Description**: DataForge 是一个基础数据工程组件。它不是一个通用的 ETL 工具,而是一个面向领域大模型微调的“数据精炼厂”。 它专门解决垂直领域微调中的“数据荒”与“数据脏”问题。通过“解析-清洗-合成”三阶段流水线,将杂乱无章的企业级 PDF、Word 及 HTML 文档,转化为高浓度、低噪声的指令微调数据集。 - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-07-02 - **Last Updated**: 2026-07-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ⚙️ DataForge · 领域数据熔炉 [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE) [![Python](https://img.shields.io/badge/Python-3.10%2B-green.svg)](pyproject.toml) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](CONTRIBUTING.md) --- ## 📖 什么是 DataForge? **DataForge** 将领域文档(Markdown / PDF / DOCX…)精炼为**带血缘、可量化质量**的指令微调数据集,并导出 **LLaMA-Factory** 训练包(SFT / DPO / KTO / ORPO)。 ``` .md / .pdf → 解析分块 → 清洗去重 → 合成指令 → JSONL + Scoring Card + 血缘图 ``` ### WebUI 界面 ![DataForge WebUI](./docs/images/webui-demo.png) 本地运行 `dataforge` → http://127.0.0.1:7860/ (上图为上传示例 PDF 后的界面) --- ## ✅ 功能一览 | 能力 | 说明 | |:---|:---| | **WebUI 默认启动** | 直接运行 `dataforge` 打开 Gradio | | MD / PDF 解析 | Docling 内置;MinerU 须 `-p mineru` | | 分块血缘 | chunk / page / excerpt | | **LLM 领域正确性打分** | `synthesize.domain_judge`;写入 Scoring Card | | ORPO / DPO / KTO | 偏好对优先用 judge 的 `rejected_output` | | LLM 配置 | `OPENAI_API_KEY` / `OPENAI_BASE_URL` / model(WebUI 与配方 `llm:`) | 解析器细节:[`docs/PARSERS.md`](docs/PARSERS.md)。 --- ## 📦 安装 ```bash pip install -e ".[dev]" # 含 Docling + Gradio pip install -e ".[dev,mineru]" # 需要 MinerU 时 dataforge doctor ``` --- ## ⚡ 怎么用 ### WebUI(默认) ```bash dataforge # 浏览器打开 Gradio:配置 API Key / Base URL / Model,上传文档,勾选 ORPO 与领域打分 ``` 也可:`dataforge ui --port 7860` ### CLI ```bash export OPENAI_API_KEY=sk-... # 可选兼容网关 export OPENAI_BASE_URL=https://api.openai.com/v1 dataforge run examples/fixtures/spindle_cooling.md \ -r recipes/manufacturing.yaml \ -o output/mfg.jsonl \ --lineage-graphml # PDF(默认 Docling) dataforge run report.pdf -r recipes/finance.yaml -o output/finance.jsonl --lineage-html # MinerU(显式) dataforge run report.pdf -p mineru -r recipes/finance.yaml -o output/m.jsonl ``` 配方中可配置: ```yaml llm: api_key: null # 空则读环境变量 OPENAI_API_KEY base_url: null # 空则读 OPENAI_BASE_URL model: gpt-4o-mini synthesize: domain_judge: enabled: true min_score: 6.0 generate_rejected: true # 供 ORPO/DPO 使用 export: format: llamafactory llamafactory_stages: [sft, orpo] ``` ### 产物 | 文件 | 内容 | |:---|:---| | `*.jsonl` | 指令(含 lineage / domain_score) | | `*.scoring.md` | 质量卡(含领域正确性均分) | | `*_orpo.jsonl` + `train_orpo.yaml` | ORPO 偏好数据与训练配置 | | `*.with_lineage.jsonl` | LF 格式时的血缘旁路 | --- ## 🗂️ 仓库结构 ``` data-forge/ ├── src/dataforge/ # 可安装包 │ ├── parsers/ · cleaners/ · synthesizers/ · exporters/ │ ├── recipes/ # 领域配方(随 wheel) │ ├── webui.py · cli.py · pipeline.py · inspector.py │ └── … ├── recipes → src/dataforge/recipes ├── examples/ · docs/ · tests/ └── pyproject.toml ``` --- ## 🧾 配方 金融 / 医疗 / 法律 / 制造:[`recipes/`](recipes/)。评审:[`docs/RECIPE_REVIEW.md`](docs/RECIPE_REVIEW.md)。 ```bash dataforge recipes dataforge recipes --hub --index examples/hub/index.json dataforge doctor ``` --- ## 🧪 开发 ```bash pip install -e ".[dev]" pytest ruff check src tests ``` --- ## 📄 License Apache License 2.0 — see [LICENSE](LICENSE).