知识抽取模板
定义
知识抽取模板 是 Hyper-Extract 用于零代码配置抽取任务的预设规范。它的核心作用,不是单纯给任务起一个名字,而是把“要抽什么、按什么结构抽、字段怎么组织、如何唯一标识结果对象”这些本来需要手写代码或手写 schema 的内容,封装成可复用的模板配置。
在 README 的表述里,模板层负责把抽取任务的结构与字段规范配置化,使高度非结构化文本可以被稳定地转成强类型的 Knowledge Abstract。
在 Hyper-Extract 中的语境
README 明确把模板放在 Hyper-Extract 的三层架构里理解:
- Auto-Types:定义 8 种强类型知识结构,如 Model、List、Set、Graph、Hypergraph、Temporal Graph、Spatial Graph、Spatio-Temporal Graph。
- Methods:定义抽取算法或方法,如 KG-Gen、GraphRAG、LightRAG、Hyper-RAG、Cog-RAG 等。
- Templates:定义面向具体任务的预设模板,用于零代码配置。
也就是说,模板层并不等于底层数据结构本身,也不等于抽取算法本身;它更像是位于两者之上的“任务规格说明书”,把某个领域或场景需要的语言、输出字段、标识符和语义约束固定下来,交给底层结构与方法执行。
规模与覆盖范围
README 给出的规模信息非常明确:
- 内置 80+ YAML Templates。
- 覆盖 6 个领域。
- README 中点名的领域包括:General、Finance、Legal、Medical、TCM、Industry。
这意味着模板不是零散示例,而是仓库中一整套可直接使用的预设集合。README 还提供了浏览入口,可查看全部 80+ presets。
与零代码使用方式的关系
知识抽取模板 与 Hyper-Extract 的“零代码”体验直接相关。README 多次强调:用户可以不自己写抽取逻辑,只需在命令行选择模板。
典型方式是通过 CLI 的 -t 参数指定模板,例如:
he parse paper.pdf -t general/academic_graph -o ./paper_kb/
或:
he parse earnings.md -t finance/earnings_graph -o ./finance_kb/
在快速开始中,README 还给出:
he parse examples/en/tesla.md -t general/biography_graph -o ./output/ -l en
这里的关键点是:
- 用户不需要自己编写实体抽取、关系抽取、字段映射等逻辑。
- 只要选择合适的模板,Hyper-Extract 就会按模板约束生成对应的结构化结果。
- 模板名通常带有领域和任务倾向,如
general/academic_graph、finance/earnings_graph、general/biography_graph。
因此,模板是 CLI 零代码工作流的入口之一,也是把通用引擎变成具体业务抽取任务的关键配置。
模板包含哪些元素
README 在“三层架构”的模板示例中,展示了一个 graph 类型模板。该示例清楚说明模板通常包含以下元素:
language:模板所面向的语言。name:模板名称。type:输出知识结构类型。tags:分类标签或领域标签。description:模板要抽取什么内容的说明。output fields:输出对象及其字段定义。identifiers:对象唯一标识规则。
README 示例原型可概括为:
language: en
name: Knowledge Graph
type: graph
tags: [general]
description: 'Extract entities and their relationships.'
output:
entities:
fields:
- name: name
type: str
- name: type
type: str
- name: description
type: str
relations:
fields:
- name: source
type: str
- name: target
type: str
- name: type
type: str
identifiers:
entity_id: name
relation_id: '{source}|{type}|{target}'
从这个例子可以看出,模板不仅描述“抽实体和关系”,还把实体字段、关系字段、唯一标识规则都具体写死为配置。
graph 示例中的标识设计
README 展示的模板类型明确是 graph。在这个示例里,标识符设计有两层:
entity_id: namerelation_id: '{source}|{type}|{target}'
其设计思路可以概括为:
实体标识 entity_id
示例使用实体的 name 作为唯一标识。这种设计适合以下场景:
- 抽取结果中的实体名称本身足以区分对象。
- 任务更重视“文档中的概念或对象节点”而非复杂主键。
- 图谱节点去重可以直接依赖名称。
但它也隐含边界:如果不同实体可能重名,单用 name 作为 ID 就可能发生冲突。因此这是一种简单、直观、便于零代码上手的默认设计,而不是适用于所有领域的万能方案。
关系标识 relation_id
示例把关系 ID 设计成:
{source}|{type}|{target}
这说明关系的唯一性由三元组组合决定:
- 起点
source - 关系类型
type - 终点
target
这种拼接式设计的好处是:
- 不必额外生成随机 ID。
- 关系是否重复可以按语义三元组直接判断。
- 对知识图谱类输出尤其自然,因为很多边本来就是“源节点—关系类型—目标节点”的组合。
同样,这也体现出模板层的价值:唯一标识策略并不是代码里临时决定,而是模板中显式声明的规则。
模板如何约束输出
从 README 的 graph 示例可见,模板至少会约束两类内容:
- 输出结构类型:例如本例是
graph,因此结果会按实体与关系组织,而不是普通列表或单个模型。 - 字段集合与字段类型:例如实体有
name、type、description,关系有source、target、type,且都声明为str。
这让抽取结果具备几个 README 强调的特征:
- persistent:可以持久保存和继续演化。
- predictable:输出字段和结构是可预期的。
- strongly-typed:字段和结构有明确类型约束。
所以,模板并不是“提示词别名”,而是对输出知识结构的显式模式约束。
直接复用与自定义
README 同时给出了两种模板使用路径:
直接复用内置模板
对于常见场景,用户可以直接选用仓库里的 presets,例如通用、金融等领域模板。使用方式就是在 CLI 或 API 中按名称创建或指定模板。
CLI 示例:
he parse examples/en/tesla.md -t general/biography_graph -o ./output/ -l en
Python API 示例:
from hyperextract import Template
ka = Template.create("general/biography_graph")
创建自定义模板
如果内置的 80+ presets 不能满足需求,README 明确给出了自定义入口:
- 可浏览预设模板集合。
- 可通过
DESIGN_GUIDE创建自定义模板。
这说明模板体系并非封闭黑盒,而是开放给用户扩展的配置机制。也就是说,模板既是现成可复用资产,也是用户定义自己领域抽取规范的接口。
边界与理解要点
理解 知识抽取模板 时,有几个边界需要注意:
- 它不是抽取算法本身。算法属于 Methods 层。
- 它不是知识结构类型本身。结构类型属于 Auto-Types 层。
- 它也不是单纯的领域标签;领域只是
tags或 preset 分类的一部分。 - 它的价值在于把任务语义、字段设计、输出模式和标识规则一起配置化。
因此,同样是 graph 结构,完全可以存在多个不同模板:一个面向学术论文,一个面向财报,一个面向人物传记。它们共享图结构类型,但字段语义、标签、描述和标识策略可以不同。