GraphGen
利用知识图谱自动识别LLM知识缺口,合成高质量微调数据的AI训练数据生成框架
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
利用知识图谱自动识别LLM知识缺口,合成高质量微调数据的AI训练数据生成框架
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
当你想要微调一个大语言模型,让它成为某个垂直领域的专家时,最大的瓶颈往往不是模型本身,而是高质量的训练数据。收集、清洗、标注数据需要消耗大量人力和时间,而且很多领域(医学、法律、植物学)的专业知识本身就难以获取。
InternScience 团队(上海人工智能实验室关联机构)推出的 GraphGen,正是为了解决这个数据困境。它提出了一个核心思路:与其费力地找数据,不如让 AI 自己生成高质量的训练数据。
具体来说,GraphGen 利用知识图谱作为"导航图",先从源文本中提取细粒度的实体和关系,构建知识图谱;然后通过期望校准误差(ECE)指标识别模型的知识盲区——哪些知识点模型还不知道;最后针对性地生成针对这些"知识缺口"的问答对。整个流程自动化程度高,数据质量可控。
ACL 2026 论文 Knowledge-to-Verification: Exploring RLVR for LLMs in Knowledge-Intensive Domains 已基于 GraphGen 方法被 ACL 2026 主会录取。
GraphGen 的工作流可以概括为"建图 → 找缺口 → 定向生成"三个阶段。
第一阶段:知识图谱构建。 从源文本(支持 JSON、JSONL、PDF、TXT 等格式,甚至可以从 NCBI、RNAcentral 等生物数据库直接拉取 DNA/RNA 数据)中提取实体和关系,构建细粒度的知识图谱。这一步决定了后续生成数据的知识边界。
第二阶段:知识缺口识别。 这是 GraphGen 最有技术含量的部分。它使用期望校准误差(ECE)指标来衡量知识图谱中每个知识点对当前模型来说的"学习价值"。如果模型已经掌握了某个知识点,继续生成相关问答对就是浪费;如果模型还不会某个知识点,那生成对应问答对就能显著提升模型能力。GraphGen 优先处理高 ECE 的知识点。
第三阶段:多模态数据生成。 识别出知识缺口后,GraphGen 通过多跳邻域采样捕获复杂关系信息,并使用**风格控制生成(Style-Controlled Generation)**来保证数据多样性——同样是"光合作用"的知识,可以生成选择题、填空题、思维链题、判断题等多种形式。目前支持的输出格式包括:
GraphGen 在 Pretrain、SFT、RLVR 三个训练阶段的数据合成上均验证了效果:仅用 GraphGen 合成的数据,不需要任何额外真实数据,即可将 Qwen3-0.6B 在 ARC 等基准上提升约 1 个百分点;在植物、医学、法律等垂域的微调中,使用 GraphGen 生成数据训练的模型在 SeedBench、MedQA、LawBench 等数据集上显著超越基线。
从代码结构来看,GraphGen 采用高度模块化的设计:
graphgen/engine.py:核心调度引擎,管理整个数据合成流水线graphgen/operators/:各类操作算子(文件读取、知识抽取、图谱构建等)graphgen/models/:LLM 推理客户端,支持 OpenAI API、Azure OpenAI、HuggingFace Transformers、SGLang、vLLM、Ollama 等多种后端graphgen/storage/:存储后端,支持 RocksDB 键值存储和 Kuzu 图数据库graphgen/bases/:基础抽象类,定义算子和模型的接口规范graphgen/templates/:Prompt 模板,控制生成数据的格式和风格系统通过 YAML 配置文件(config.yaml)描述数据合成流水线,每个节点(Node)代表一个算子,节点之间通过 dependencies 字段定义执行顺序。这种设计让用户可以在不修改代码的情况下,灵活配置各种数据合成场景。
此外,项目还包含丰富的 baseline 对比实现(BDS、EntiGraph、Genie、LongForm、SELF-QA、Wrap),方便研究人员复现和对比学术前沿的数据合成方法。
GraphGen 提供了多种部署方式,满足不同用户的需求。
最简单:直接 pip 安装。 一条命令 uv pip install graphg 即可安装,然后配置环境变量指定 Synthesizer(用于生成数据)和 Trainee(用于评估数据价值)模型,即可通过 CLI 运行。这种方式适合已经熟悉 LLM API 调用的用户。
最友好:Gradio Web UI。 运行 python -m webui.app,即可通过浏览器访问交互界面,上传文件、配置参数、查看生成结果。界面简洁直观,非技术用户也能快速上手。
图1:GraphGen Gradio Web UI 界面,支持交互式配置数据合成流程
最可控:源码 + YAML 配置。 克隆仓库后,复制 .env.example 为 .env,填写 LLM API Key,然后运行对应的 bash 脚本(如 bash examples/generate/generate_cot_qa/generate_cot.sh)即可生成指定格式的问答数据。这种方式最适合需要深度定制数据合成流程的研究人员。
最省心:Docker 容器化。 项目提供了 Dockerfile,基于 python:3.10-slim 构建,运行 docker build -t graphgen . && docker run -p 7860:7860 graphgen 即可在隔离环境中启动 Gradio Web UI。
GraphGen 作为一个数据合成框架,也存在一些值得关注的问题。
合成数据质量依赖底座模型。 GraphGen 的数据生成质量直接受 Synthesizer 模型能力影响。如果底座模型存在幻觉或知识错误,生成的问答对也可能继承这些缺陷。项目文档中提到需要使用"强大的 Synthesizer 模型",但这实际上提高了使用门槛——用户仍然需要一个强大的闭源或开源 LLM 作为数据生成器。
ECE 指标的理论支撑。 期望校准误差用于衡量"知识缺口"是 GraphGen 的核心创新,但 ECE 本身是统计指标,在真实场景中如何校准 ECE 阈值、避免过度拟合到特定模型的弱点,目前公开资料中没有充分讨论。
部署硬件要求较高。 虽然项目支持 API 调用,但数据合成流程中涉及多次 LLM 调用(抽取、生成、评估),如果完全使用本地模型推理,需要至少 16GB 显存的 GPU 才能流畅运行。项目明确推荐 A100/H100 等高端 GPU,对资源有限的个人开发者和小团队不友好。
知识图谱构建依赖 NER/RE 质量。 从非结构化文本构建知识图谱需要实体识别和关系抽取能力,如果源文本领域偏移大或格式不规范,图谱质量会显著下降。
GraphGen 的出现代表了 LLM 训练数据工程的一个重要趋势:用 AI 生成数据训练 AI,而不是依赖昂贵的人工标注。
这一方向在学术上已经有了充分验证(Stanford 的 SELF-INSTRUCT、Microsoft 的 Orca 等),GraphGen 的贡献在于将知识图谱引入了数据合成流程,使得数据生成更加结构化和可解释——你可以追溯每一个问答对背后的知识来源,这比纯粹 prompt 驱动的合成数据更可控。
从行业影响来看,GraphGen 对三类用户最有价值:
GraphGen 的 Star 轨迹(从 2025 年 4 月发布至今持续增长)也印证了社区对这类工具的旺盛需求。随着开源社区对其方法论的持续优化(比如引入更强的底座模型、更精准的缺口检测算法),GraphGen 有望成为 LLM 训练数据工程的标准工具之一。