GraphGen

用知识图谱自动造微调数据,省人工标注

GraphGen 是一个面向大语言模型监督微调的数据合成框架,核心思路是用知识图谱驱动合成数据生成。它从给定知识源(如文档、知识库)中抽取实体与关系,构建知识图谱,再沿着图谱中的路径和子图采样,自动生成问答对、指令跟随样本等训练数据。相比随机采样或纯提示词生成,GraphGen 让合成数据在事实覆盖和逻辑关联上更完整,减少重复和幻觉,适合需要领域知识注入的微调场景。项目提供从知识抽取、图谱构建、数据生成到质量过滤的流水线,并可对接 LLaMA-Factory 等训练框架,直接产出可用于 SFT 的数据集。整体定位是让没有大量人工标注的团队,也能低成本构造高质量领域训练数据。

开源 free 数据集
访问官网 ↗ GitHub ↗ 文档 ↗
GitHub 星标 ★ 1222
维护状态 维护中
是否开源
定价模式 free

项目数据

分类数据集
开发团队InternScience
所属国家
定价模式free
价格说明开源项目,免费使用
访问状态
是否开源
开源协议Apache-2.0
主要语言Python
技术栈/模型ai4science,data-generation,data-synthesis,graphgen,knowledge-graph,llama-factory,llm,llm-training,pretrain,pretraining,qa,question-answering,qwen,sft,sft-data,xtuner
GitHub 星标★ 1222
30天Star增速
HF 下载量
上线时间2025-01-08 00:00:00
最近更新2026-09-16 00:00:00
维护状态维护中
中文支持
访问方式
移动端支持
综合评分
收录时间2026-09-12
浏览次数0

使用教程

难度:进阶 约 15 分钟 部署方式:命令行工具 8 步

环境要求

  • Python 环境(README 未指定具体版本)
  • uv 包管理工具,用于 uv pip install graphg
  • 可访问的 LLM 服务及 API Key(synthesizer 与 trainee 各一套)
  • 源码运行需可执行 bash 脚本的类 Unix 环境
  • 可选:Docker,用于容器方式部署

安装与启动步骤

  1. 1安装 GraphGen

    通过 PyPI 安装官方发布的 graphg 包,安装后即可使用 graphg 命令行。

    uv pip install graphg
  2. 2复制环境变量模板

    从源码运行时,在项目根目录生成 .env 文件,后续所有模型配置都写在这里。

    cp .env.example .env
  3. 3填写 .env 配置

    按所选后端填写 synthesizer(建图与造数据)和 trainee(训练用)模型、地址与密钥。

  4. 4调整生成参数

    可选。在 examples 下的 YAML 中改 working_dir、graph_backend、kv_backend 和输入文件路径。

  5. 5运行生成脚本

    按需要的格式选择对应脚本,例如 cot 生成思维链问答对,其余格式见 README 表格。

    bash examples/generate/generate_cot_qa/generate_cot.sh
  6. 6查看生成结果

    生成的问答数据默认写入 cache/output 目录,用 ls 确认文件已产出。

    ls cache/output
  7. 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
  8. 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

项目介绍

GraphGen 是一个数据集领域的开源项目,官方简介:GraphGen: Enhancing Supervised Fine-Tuning for LLMs with Knowledge-Driven Synthetic Data Generation。项目使用 Python 开发,在 GitHub 上获得 1219 星标。

上一篇:sdg_hub

下一篇:RSIBench-Data

同类项目推荐

X-AnyLabeling 开源

一站式AI辅助标注,图像视频文本通吃,导出格式随心配

X-AnyLabeling: A lightweight, efficient, and unified cross-platform desktop applicat···

★ 10456 2026-08-10
distilabel 开源

基于论文的合成数据流水线,快速生成高质量 AI 反馈数据。

Distilabel is a framework for synthetic data and AI feedback for engineers who need ···

★ 3394 2026-08-10
DataGen 开源

用大模型一键生成定制化训练数据,告别数据荒

[ICLR'25] DataGen: Unified Synthetic Dataset Generation via Large Language Models

★ 69 2026-08-09
stopes 开源

一键准备多语言翻译数据,从清洗到挖掘平行语料

A library for preparing data for machine translation research (monolingual preproces···

★ 313 2026-08-10