GraphGen是一个由知识图谱引导的合成数据生成框架,从源文本构建一个细粒度的知识图谱,使用预期校准误差指标识别大语言模型中的知识差距,优先生成针对高价值长尾知识的问答对。

GraphGen通过多跳邻域采样来捕捉复杂的关系信息,采用风格控制生成,让最终的问答数据更多样化。

可以通过网页入口体验GraphGen。

运行python webui/app.py命令,上传文本块(比如农业、医疗保健或海洋科学方面的知识),填入大语言模型的API密钥,就能在线生成Llama Factor和tuner所需的训练数据,数据处理完成后,会自动删除用户信息。

从PyPI运行

1、安装GraphGen:执行pip install graphg命令。

2、在命令行界面运行:设置好合成器模型、训练模型等相关信息对应的环境变量,再运行graphg --output_dir cache命令,具体环境变量设置如下:

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

从源代码运行

1、安装依赖项:执行pip install -r requirements.txt命令。

2、配置环境:在根目录创建一个.env文件,执行cp.env.example.env命令,然后设置以下环境变量:

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

(可选)如果想修改默认的生成配置,可以编辑configs/graphgen_config.yaml文件的内容。

3、运行生成脚本:执行bash scripts/generate.sh命令。

4、获取生成的数据:执行ls cache/data/graphgen命令查看。

使用Docker运行

1、构建Docker镜像:执行docker build -t graphgen.命令。

2、运行Docker容器:执行docker run -p 7860:7860 graphgen命令。

GraphGen工作流程

1、知识构建:从源文档提取知识,构建知识图谱。

2、理解评估:评估大语言模型对知识的理解程度,计算损失值来判断知识的重要性和模型的掌握情况。

3、图组织:对知识进行整理,根据不同策略选择和组织数据。

4、问答生成

原子问答:针对单一事实生成问答。

聚合问答:用于分析、总结或比较一系列相关信息。

多跳问答:在不同概念之间进行推理时使用。