GraphRAG: Auto Prompt Tuning 实践

GraphRAG 的 Auto Prompt Tuning 功能是一个强大的工具,用于优化知识图谱的生成过程。以下是对该功能的详细介绍和分析:

自动提示调优(Auto Prompt Tuning)

1. 概念

GraphRAG 的自动提示调优功能旨在为特定领域的知识图谱生成创建适应性提示。这一过程通过加载输入数据,将其分割成多个文本单元(块),然后运行一系列大型语言模型(LLM)调用和模板替换,生成最终的提示。这些提示能够更好地适应特定领域的数据,从而提高生成模型的表现。

2. 先决条件

在运行自动提示调优之前,需要确保已经使用 graphrag init 命令初始化工作空间。这将创建必要的配置文件和默认提示。具体步骤如下:

sh复制

graphrag init
3. 使用方法

可以通过命令行运行主脚本,并提供多种选项来执行自动提示调优。命令行的基本格式如下:

sh复制

graphrag prompt-tune [--root ROOT] [--config CONFIG] [--domain DOMAIN]  [--selection-method METHOD] [--limit LIMIT] [--language LANGUAGE] \
[--max-tokens MAX_TOKENS] [--chunk-size CHUNK_SIZE] [--n-subset-max N_SUBSET_MAX] [--k K] \
[--min-examples-required MIN_EXAMPLES_REQUIRED] [--discover-entity-types] [--output OUTPUT]
4. 命令行选项
  • --config (必需): 配置文件的路径,用于加载数据和模型设置。

  • --root (可选): 数据项目根目录,包括配置文件(YML、JSON或.env)。默认为当前目录。

  • --domain (可选): 与输入数据相关的领域,如“太空科学”、“微生物学”或“环境新闻”。如果留空,将从输入数据中推断领域。

  • --method (可选): 选择文档的方法,选项有 allrandomautotop。默认为 random

  • --limit (可选): 使用 randomtop 选择时加载的文本单元数量。默认为15。

  • --language (可选): 用于输入处理的语言。如果与输入语言不同,LLM将进行翻译。默认为"",表示将自动从输入中检测语言。

  • --max-tokens (可选): 生成提示时的最大标记数。默认为2000。

  • --chunk-size (可选): 用于从输入文档生成文本单元的标记大小。默认为200。

  • --n-subset-max (可选): 使用 auto 选择方法时嵌入的文本块数量。默认为300。

  • --k (可选): 使用 auto 选择方法时选择的文档数量。默认为15。

  • --min-examples-required (可选): 实体提取提示所需的最小示例数量。默认为2。

  • --discover-entity-types (可选): 允许LLM自动发现和提取实体。当数据涵盖多个主题或高度随机化时,建议使用此选项。

  • --output (可选): 保存生成提示的文件夹。默认为"prompts"。

5. 示例用法

以下是一个完整的示例命令,展示了如何使用自动提示调优功能:

sh复制

python -m graphrag prompt-tune --root /path/to/project --config /path/to/settings.yaml --domain "environmental news" \
--method random --limit 10 --language English --max-tokens 2048 --chunk-size 256 --min-examples-required 3 \
--no-entity-types --output /path/to/output

或者,使用最小配置(建议):

sh复制

python -m graphrag prompt-tune --root /path/to/project --config /path/to/settings.yaml --no-entity-types
6. 文档选择方法

自动提示调优功能会读取输入数据,然后将其划分为指定大小的文本单元。接下来,它会使用以下选择方法之一来挑选样本用于提示生成:

  • random: 随机选择文本单元。这是默认且推荐的选项。

  • top: 选择前n个文本单元。

  • all: 使用所有文本单元进行生成。仅在数据集较小时使用,通常不推荐此选项。

  • auto: 在较低维空间中嵌入文本单元,并选择k个最近邻居。这在处理大型数据集时非常有用,可以选择一个具有代表性的样本。

7. 修改环境变量

运行自动提示调优后,需要修改以下环境变量(或配置变量),以便在索引运行时使用新的提示。请确保更新生成提示的正确路径,以下示例使用默认的"prompts"路径:

sh复制

GRAPHRAG_ENTITY_EXTRACTION_PROMPT_FILE = "prompts/entity_extraction.txt"
GRAPHRAG_COMMUNITY_REPORT_PROMPT_FILE = "prompts/community_report.txt"
GRAPHRAG_SUMMARIZE_DESCRIPTIONS_PROMPT_FILE = "prompts/summarize_descriptions.txt"

或者在yaml配置文件中:

yaml复制

entity_extraction:prompt: "prompts/entity_extraction.txt"summarize_descriptions:prompt: "prompts/summarize_descriptions.txt"community_reports:prompt: "prompts/community_report.txt"

应用场景

自动提示调优功能在多种应用场景中都非常有用,例如:

  • 学术论文分析:提取论文中的作者、出版日期、方法论、技术等实体。

  • 新闻报道处理:提取新闻中的事件、人物、地点等实体。

  • 医疗数据处理:提取病历中的症状、诊断、治疗等实体。

手动提示调优

虽然自动提示调优功能非常强大,但在某些情况下,可能需要手动调整提示以更好地适应特定需求。手动提示调优的步骤如下:

  1. 明确任务目标:确定需要从文本中识别的实体类型及其关系。

  2. 设计Prompt结构:编写包含任务目标、步骤、实体类型列表、示例等部分的Prompt。

  3. 借助AI助手生成示例:使用ChatGPT等AI助手生成示例,帮助定义实体类型和关系。

  4. 微调Prompt并测试:根据生成的示例和实际需求,对Prompt进行微调,并通过实际测试验证其效果。

  5. 应用于实际场景:将调整好的Prompt应用于实际场景,如学术论文分析、新闻报道处理等。

结论

GraphRAG 的自动提示调优功能是一个强大的工具,能够通过创建特定于领域的提示来提升知识图谱生成的效果。通过合理配置命令行选项和选择合适的文档选择方法,用户能够有效地生成高质量的提示,从而在后续的索引运行中获得更优的结果。同时,手动提示调优提供了更灵活的方式,可以进一步优化提示,以更好地适应特定需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/67573.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL下载安装DataGrip可视化工具

目录 WinMySQL下载安装步骤MySQL配置添加环境变量 Mac下载安装配置环境变量 DataGrip可视化工具以Win为例了。Mac忘记截图了。步骤都一样 Win MySQL下载 官网: https://www.mysql.com/ 直接进下载界面: https://downloads.mysql.com/archives/installe…

ASP.NET Core - 配置系统之配置提供程序

ASP.NET Core - 配置系统之配置提供程序 3. 配置提供程序3.1 文件配置提供程序3.1.1 JSON配置提供程序3.1.2 XML配置提供程序3.1.3 INI配置提供程序 3.2 环境变量配置提供程序3.3 命令行配置提供程序3.4 内存配置提供程序3.5 配置加载顺序 3.6 默认配置来源 3. 配置提供程序 前…

网络安全 | 什么是正向代理和反向代理?

关注:CodingTechWork 引言 在现代网络架构中,代理服务器扮演着重要的角色。它们在客户端和服务器之间充当中介,帮助管理、保护和优化数据流。根据代理的工作方向和用途,代理服务器可分为正向代理和反向代理。本文将深入探讨这两种…

回归预测 | MATLAB实TCN时间卷积神经网络多输入单输出回归预测

效果一览 基本介绍 回归预测 | MATLAB实TCN时间卷积神经网络多输入单输出回归预测 …………训练集误差指标………… 1.均方差(MSE):166116.6814 2.根均方差(RMSE):407.5741 3.平均绝对误差(MAE):302.5888 4.平均相对…

JavaScript 日期对象、DOM节点操作

日期对象 日期对象:使用new关键字实例化出来的对象 const date new Date() //这样就获取到了一个日期对象 直接打印对象: console.log(date) 打印到控制台如截图所示 时间对象内的方法们: 1.获取对象 对象.getFullYear() -- 获取当前…

Python制作简易PDF查看工具PDFViewerV1.0

PDFViewer PDF浏览工具,Python自制PDF查看工具,可实现基本翻页浏览功能,其它功能在进一步开发完善当中,如果有想一起开发的朋友,可以留言。本软件完全免费,自由使用。 软件界面简洁,有菜单栏、…

开源AI智能名片2+1链动模式S2B2C商城小程序源码在活动运营中的应用与优化

摘要:在数字化时代,开源AI智能名片21链动模式S2B2C商城小程序源码作为一种创新的商业应用模式,为企业提供了强大的运营工具。本文旨在探讨该源码在活动运营中的应用与优化策略,包括活动类型与时间节点的梳理、活动模块化设计、后台…

Centos7系统下安装和卸载TDengine Database

记录一下Centos7系统下安装和卸载TDengine Database 安装TDengine Database 先看版本信息 [root192 ~]# cat /etc/centos-release CentOS Linux release 7.9.2009 (Core) [root192 ~]# uname -r 3.10.0-1160.119.1.el7.x86_64 [root192 ~]# uname -a Linux 192.168.1.6 3.10…

【专题三:穷举vs暴搜vs深搜vs回溯vs剪枝】46. 全排列

1.题目解析 2.讲解算法原理 1.首先画出决策树&#xff0c;越详细越好 2.设计代码 全局变量 List<List<Integer>> retList<Integer> pathboolean[] check dfs函数 仅关心某一节点在干什么 细节问题回溯 干掉path最后一个元素修改check权限 剪枝 check中为…

【氮化镓】香港科技大学陈Kevin-单片集成GaN比较器

一、引言(Introduction) GaN HEMT的重要性 文章开篇便强调了氮化镓(GaN)高电子迁移率晶体管(HEMT)在下一代功率转换系统中的巨大潜力。GaN HEMT具备高开关频率、低导通电阻、高击穿电压以及宽工作温度范围等优势,使其成为功率电子领域的热门研究对象。这些特性使得GaN…

【Linux】进程的程序替换

前言&#xff1a; 在未进行进程的程序替换时&#xff0c;父子进程的数据是独立的通过页表进行映射进行实现进程数据的独立性&#xff0c;但是父子进程的代码还是共享的&#xff0c;我父进程将子进程进行创建出来不仅仅只会有父子进程只进行执行共享代码的需求&#xff0c;有的…

linux网络编程11——线程池

1. 线程池 1.1 池化技术原理 池化技术 当一个资源或对象的创建或者销毁的开销较大时&#xff0c;可以使用池化技术来保持一定数量的创建好的对象以供随时取用&#xff0c;于是就有了池式结构。常见的池式结构包括线程池、内存池和连接池。 池化技术应用的前提条件主要包括三…

计算机网络 (51)鉴别

前言 计算机网络鉴别是信息安全领域中的一项关键技术&#xff0c;主要用于验证用户或信息的真实性&#xff0c;以及确保信息的完整性和来源的可靠性。 一、目的与重要性 鉴别的目的是验明用户或信息的正身&#xff0c;对实体声称的身份进行唯一识别&#xff0c;以便验证其访问请…

SSM宠物论坛设计系统

&#x1f345;点赞收藏关注 → 添加文档最下方联系方式咨询本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345; 项目视频 宠…

前后端分离的Java快速开发平台

采用SpringBoot3.x、Shiro、MyBatis-Plus、Vue3、TypeScript、Element Plus、Vue Router、Pinia、Axios、Vite框架&#xff0c;开发的一套权限系统&#xff0c;极低门槛&#xff0c;拿来即用。设计之初&#xff0c;就非常注重安全性&#xff0c;为企业系统保驾护航&#xff0c;…

ComfyUI-PromptOptimizer:文生图提示优化节点

ComfyUI-PromptOptimizer 是 ComfyUI 的一个自定义节点&#xff0c;旨在优化文本转图像模型的提示。它将用户输入的提示转换为更详细、更多样化、更生动的描述&#xff0c;使其更适合生成高质量的图像。无需本地模型。 1、功能 提示优化&#xff1a;优化用户输入的提示以生成…

电梯系统的UML文档05

Dispatcher 不控制实际的电梯组件&#xff0c;但它在软件系统中是重要的。每一个电梯有一个ispatcher&#xff0c;主要功能是计算电梯的移动方向、移动目的地以及保持门的打开时间。它和系统中除灯控制器以外的几乎所有控制对象交互。 安全装置也是一个环境对象&#xff0c;它…

【Spring Boot】掌握 Spring 事务:隔离级别与传播机制解读与应用

前言 &#x1f31f;&#x1f31f;本期讲解关于spring 事务传播机制介绍~~~ &#x1f308;感兴趣的小伙伴看一看小编主页&#xff1a;GGBondlctrl-CSDN博客 &#x1f525; 你的点赞就是小编不断更新的最大动力 &#x1f386;那么废话…

go语言zero框架通过chromedp实现网页在线截图的设计与功能实现

在 GoZero 框架中实现网页在线截图的功能&#xff0c;可以通过集成 chromedp 库来控制 Chrome 浏览器进行截图。chromedp 是一个基于 Chrome DevTools 协议的 Go 包&#xff0c;可以用来在 Go 程序中模拟浏览器操作&#xff0c;如页面截图、DOM 操作、表单提交等。 下面是一个…

新星杯-ESP32智能硬件开发--SoC基础

本博文内容导读 1、当前嵌入式系统的发展情况&#xff0c;分析SoC作为物联网开发的重要技术&#xff0c;是未来物联网发展重要方向。 2、介绍SoC系统的组成和系统特点&#xff0c;了解SoC打下SoC基础。 3、介绍基于ESP32的SoC系列开发板&#xff0c;ESP32开发的系统功能进行总…