
GraphGen
用知识图谱自动造微调数据,省人工标注
GraphGen 是一个面向大语言模型监督微调的数据合成框架,核心思路是用知识图谱驱动合成数据生成。它从给定知识源(如文档、知识库)中抽取实体与关系,构建知识图谱,再沿着图谱中的路径和子图采样,自动生成问答对、指令跟随样本等训练数据。相比随机采样或纯提示词生成,GraphGen 让合成数据在事实覆盖和逻辑关联上更完整,减少重复和幻觉,适合需要领域知识注入的微调场景。项目提供从知识抽取、图谱构建、数据生成到质量过滤的流水线,并可对接 LLaMA-Factory 等训练框架,直接产出可用于 SFT 的数据集。整体定位是让没有大量人工标注的团队,也能低成本构造高质量领域训练数据。
项目数据
使用教程
环境要求
- Python 环境(README 未指定具体版本)
- uv 包管理工具,用于 uv pip install graphg
- 可访问的 LLM 服务及 API Key(synthesizer 与 trainee 各一套)
- 源码运行需可执行 bash 脚本的类 Unix 环境
- 可选:Docker,用于容器方式部署
安装与启动步骤
-
1安装 GraphGen
通过 PyPI 安装官方发布的 graphg 包,安装后即可使用 graphg 命令行。
uv pip install graphg -
2复制环境变量模板
从源码运行时,在项目根目录生成 .env 文件,后续所有模型配置都写在这里。
cp .env.example .env -
3填写 .env 配置
按所选后端填写 synthesizer(建图与造数据)和 trainee(训练用)模型、地址与密钥。
-
4调整生成参数
可选。在 examples 下的 YAML 中改 working_dir、graph_backend、kv_backend 和输入文件路径。
-
5运行生成脚本
按需要的格式选择对应脚本,例如 cot 生成思维链问答对,其余格式见 README 表格。
bash examples/generate/generate_cot_qa/generate_cot.sh -
6查看生成结果
生成的问答数据默认写入 cache/output 目录,用 ls 确认文件已产出。
ls cache/output -
7CLI 直接运行
不克隆源码时,可用环境变量加 graphg 命令直接跑,输出目录由 --output_dir 指定。
SYNTHESIZER_MODEL=your_synthesizer_model_name SYNTHESIZER_BASE_URL=your_base_url_for_synthesizer_model SYNTHESIZER_API_KEY=your_api_key_for_synthesizer_model TRAINEE_MODEL=your_trainee_model_name TRAINEE_BASE_URL=your_base_url_for_trainee_model TRAINEE_API_KEY=your_api_key_for_trainee_model graphg --output_dir cache -
8Docker 方式运行
先构建镜像,再以 7860 端口启动容器,浏览器访问该端口使用界面。
docker build -t graphgen . docker run -p 7860:7860 graphgen
关键配置
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
SYNTHESIZER_BACKEND | 是 | 合成模型后端,用于构建知识图谱与生成数据 | openai_api |
SYNTHESIZER_MODEL | 是 | 合成模型名称,Azure 时填部署名 | gpt-4o-mini |
SYNTHESIZER_BASE_URL | 是 | 合成模型的接口地址 | https://api.openai.com/v1 |
SYNTHESIZER_API_KEY | 是 | 合成模型的调用密钥 | sk-xxxxxxxx |
TRAINEE_BACKEND | 是 | 训练侧模型后端 | openai_api |
TRAINEE_MODEL | 是 | 训练侧模型名称 | gpt-4o-mini |
如何确认成功
执行 ls cache/output 能看到生成的问答数据文件;Docker 方式可打开 http://localhost:7860 界面。
常见问题
Q:支持哪些模型后端?
A:SYNTHESIZER_BACKEND 支持 http_api、openai_api、ollama_api、ollama、huggingface、tgi、sglang、tensorrt;README 示例还给出 azure_openai_api 与 vllm 配置。
Q:为什么 ollama_api 不能配 trainee?
A:README 明确说明 ollama_api 不支持 logprobs,因此 TRAINEE 暂不支持该后端,需换成其他后端。
Q:有现成的在线体验吗?
A:可以,README 提供 Huggingface Space 与 Modelscope Studio 两个在线 Demo,无需本地部署即可试用。
Q:生成不同题型要改什么?
A:不用改代码,按 README 表格换成对应脚本即可,例如 atomic、multi-hop、vqa、multi_choice、fill_in_blank 等。
Q:输出数据在哪里?
A:默认写在 cache/output,可在 config.yaml 的 working_dir 或 CLI 的 --output_dir 中修改。
注意事项
- 除已列配置外,.env 还需填写 TRAINEE_BASE_URL、TRAINEE_API_KEY 以及 TOKENIZER_MODEL。
- 从源码运行时才需要 cp .env.example .env;PyPI 的 graphg CLI 直接通过命令行环境变量传参。
- README 未给出 Python 版本要求和 git clone 命令,请自行准备源码目录。
- 生成的数据可对接 LLaMA-Factory 等框架直接用于监督微调。
核心亮点
- 以知识图谱为骨架采样生成数据,事实覆盖更全、重复更少
- 打通从知识抽取到 SFT 数据集输出的完整流水线,可直接对接 LLaMA-Factory
- 支持领域知识注入,适合垂直行业低成本构造训练数据
不足之处
- 依赖知识抽取和图谱构建质量,上游噪声会传导到合成数据
- 项目较新,文档与社区生态仍在完善中
适用场景
- 为垂直领域模型构造监督微调数据集
- 在缺少人工标注时快速扩充指令跟随训练样本
- 基于企业知识库生成问答对用于模型知识注入
替代项目
Easy Dataset、Distilabel、Self-Instruct
项目介绍
上一篇:sdg_hub
下一篇:RSIBench-Data
同类项目推荐
X-AnyLabeling
开源
一站式AI辅助标注,图像视频文本通吃,导出格式随心配
X-AnyLabeling: A lightweight, efficient, and unified cross-platform desktop applicat···
distilabel
开源
基于论文的合成数据流水线,快速生成高质量 AI 反馈数据。
Distilabel is a framework for synthetic data and AI feedback for engineers who need ···
DataGen
开源
用大模型一键生成定制化训练数据,告别数据荒
[ICLR'25] DataGen: Unified Synthetic Dataset Generation via Large Language Models
stopes
开源
一键准备多语言翻译数据,从清洗到挖掘平行语料
A library for preparing data for machine translation research (monolingual preproces···