Skip to main content

stars forks open issues issue resolution

GraphGen: Enhancing Supervised Fine-Tuning for LLMs with Knowledge-Driven Synthetic Data Generation

📚 Table of Contents

📝 What is GraphGen?

GraphGen is a framework for synthetic data generation guided by knowledge graphs. Here is our paper.

It begins by constructing a fine-grained knowledge graph from the source text,then identifies knowledge gaps in LLMs using the expected calibration error metric, prioritizing the generation of QA pairs that target high-value, long-tail knowledge. Furthermore, GraphGen incorporates multi-hop neighborhood sampling to capture complex relational information and employs style-controlled generation to diversify the resulting QA data.

🚀 Quick Start

Experience it on the OpenXLab Application Center

Gradio Demo

python webui/app.py

ui

Run from PyPI

  1. Install GraphGen

    pip install graphg
    
  2. Run in CLI

    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
    

Run from Source

  1. Install dependencies
    pip install -r requirements.txt
    
  2. Configure the environment
    • Create an .env file in the root directory
      cp .env.example .env
      
    • Set the following environment variables:
      # Synthesizer is the model used to construct KG and generate data
      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 is the model used to train with the generated data
      TRAINEE_MODEL=your_trainee_model_name
      TRAINEE_BASE_URL=your_base_url_for_trainee_model
      TRAINEE_API_KEY=your_api_key_for_trainee_model
      
  3. (Optional) If you want to modify the default generated configuration, you can edit the content of the configs/graphgen_config.yaml file.
    # configs/graphgen_config.yaml
    # Example configuration
    data_type: "raw"
    input_file: "resources/examples/raw_demo.jsonl"
    # more configurations...
    
  4. Run the generation script
    bash scripts/generate.sh
    
  5. Get the generated data
    ls cache/data/graphgen
    

🏗️ System Architecture

Directory Structure

├── baselines/           # baseline methods
├── cache/               # cache files
│   ├── data/            # generated data
│   ├── logs/            # log files
├── configs/             # configuration files
├── graphgen/            # GraphGen implementation
│   ├── operators/       # operators
│   ├── graphgen.py      # main file
├── models/              # base classes
├── resources/           # static files and examples
├── scripts/             # scripts for running experiments
├── templates/           # prompt templates
├── utils/               # utility functions
├── webui/               # web interface
└── README.md

Workflow

workflow

🍀 Acknowledgements

  • SiliconCloud Abundant LLM API, some models are free
  • LightRAG Simple and efficient graph retrieval solution
  • ROGRAG ROGRAG: A Robustly Optimized GraphRAG Framework

Release files for graphg 20250416

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for graphg 20250416
File Size Uploaded
graphg-20250416.tar.gz 64.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for graphg 20250416
File Interpreter ABI Platform
graphg-20250416-py3-none-any.whl Python 3 none any Details

Total release size: 152.0 kB

Release files / graphg-20250416.tar.gz

Download URL graphg-20250416.tar.gz
Size 64.6 kB
Tags Source
SHA-256 checksum
How to use checksums
db041c714db1f7e2858d169ed3bab64ac26c163257449597471f6e3a7507aa7b
BLAKE2b-256 checksum
How to use checksums
79b1deb221c7a13de343ce605b48290cbf3fe85d7cf45c5c0f9af7190b5f0d3d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / graphg-20250416-py3-none-any.whl

Download URL graphg-20250416-py3-none-any.whl
Size 87.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7fff58b5888da10e01d4dbfa2b8e6ba0ea8e0d0f75c73fd264e4462b52a4374b
BLAKE2b-256 checksum
How to use checksums
3c862e6207be3334d2ef068205fb69ee97faf70e1a33b65c26e17b052a3ef729
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release history Release notifications | RSS feed

This release

20250416 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page