W
AI-Wiki
CONCEPT

声明式知识提取模板

定义

声明式知识提取模板Hyper-Extract 在配置层使用的一种任务声明机制:用 YAML 来声明知识提取任务,而不是在代码里硬编码字段结构、抽取规则、唯一标识和展示方式。

它的核心价值不是单纯“把 Prompt 写到配置文件里”,而是把一个提取任务拆成若干彼此分离、可替换的部分:

  • output schema 定义要抽取哪些字段、对象或关系结构。
  • guideline 定义如何高质量抽取,以及需要避免哪些常见错误。
  • identifiers 定义实体、关系或复杂图对象的唯一标识规则。
  • display 定义知识对象在可视化或展示时使用什么标签。

因此,同一个底层引擎或同一套代码,可以通过切换模板,快速从“人物生平图谱”切换到“财报摘要”“合同关系”“病历结构化信息”或“时空事件图”。

在本文档中的语境

在本文语境里,声明式知识提取模板不是一个泛指的“配置文件”概念,而是 Hyper-Extract 三层架构中的配置层,与数据层的强类型知识提取结果类型,以及算法层的提取方法分离。

文中明确把架构分成三层:

  • Layer 1:Auto-Types,负责承载结构化结果,并做验证、序列化、搜索、可视化、合并等。
  • Layer 2:Methods,负责真正调用 LLM 或 RAG/Typical 方法进行抽取。
  • Layer 3:Templates,即本文所说的声明式知识提取模板,负责描述任务本身。

这里的关键思想是:任务定义不直接绑定某个算法实现。模板负责说明任务要求,方法层负责执行,类型层负责接收、校验与后处理结果。这种解耦使 Hyper-Extract 能同时支持 CLI 和 Python API,也让模板能够跨场景复用。

核心作用

用 YAML 声明提取逻辑,而不是在代码里硬编码

声明式知识提取模板最核心的作用,是把提取逻辑从代码中抽出来,用 YAML 显式声明。

这意味着用户不需要每做一个新任务就去改 Python 代码、重写数据模型、手工拼 Prompt 或添加显示逻辑,而是可以直接通过模板配置:

  • 提取任务叫什么;
  • 用什么语言执行;
  • 输出属于哪种知识结构类型;
  • 具体要抽取哪些字段或关系;
  • 抽取时应遵守什么规则;
  • 怎样判断两个对象是否是同一实体或同一关系;
  • 展示时给对象生成什么可读标签。

对使用者来说,这使知识提取从“写程序”更接近“声明任务”。文中把它描述为零代码定义提取逻辑,并支持低代码扩展。

让任务定义与算法实现解耦

模板并不等于具体抽取引擎。Hyper-Extract 同时提供 10+ 提取引擎,包含 RAG-based 方法和 Typical 方法,用户可以通过模板或 API 选择适合的引擎。

这说明模板的职责不是规定“必须用哪种算法”,而是把任务目标稳定地定义出来。算法层可以替换,但任务定义不必跟着重写。

内置规模与覆盖范围

文中明确说明,声明式知识提取模板并不是一个只提供少量示例的机制,而是已经内置了 80+ 预设模板,覆盖 6 大领域

  • Finance(金融)
  • Legal(法律)
  • Medical(医学)
  • TCM(中医)
  • Industry(工业)
  • General(通用)

这意味着该机制不是只为某一个垂直任务设计,而是从一开始就被当作跨领域知识提取的统一任务描述层。用户既可以直接复用预设模板,也可以在此基础上自定义新模板。

关键字段组成

文中列出的模板关键字段包括:

  • language
  • name
  • type
  • description
  • output schema
  • guideline
  • identifiers
  • display

这些字段分别承担不同职责。

language

language 用来指定模板工作的语言环境,例如文中提到系统支持 enzh 等多语言。它影响抽取任务面向的文本语言,以及生成规则与输出的语言上下文。

name

name 是模板名称,用于标识具体任务。CLI 与 Python API 中按模板名创建任务,例如示例里使用 general/biography_graph

type

type 指明输出结果对应哪种知识结构类型。由于 Hyper-Extract 底层有 8 大 Auto-Types,模板需要通过 type 把任务映射到合适的结构,例如记录型结果、普通图谱、超图、时间图、空间图或时空图。

description

description 用于说明该模板要解决什么问题、适合什么文本、希望产出什么知识对象。它帮助系统和使用者理解任务边界,而不是只靠字段名猜测。

output schema

output schema 负责定义输出结构,也就是“提取什么”。它会声明字段、对象结构、关系结构以及类型约束,最终与 Pydantic 支撑的强类型结果对象相衔接。

guideline

guideline 负责定义“如何提取得更好”。它不是结构定义,而是抽取过程的质量规则、判定原则、歧义处理方式和常见错误规避要求。

identifiers

identifiers 负责定义唯一标识逻辑,用来确保实体、关系或更复杂图对象在抽取、合并、增量演进时能够被稳定识别。

display

display 用来控制可视化标签生成。它不直接改变是否抽取成功,但会影响抽取结果在展示、浏览和图谱可视化中的可读性。

schema 与 guideline 分离

这是 声明式知识提取模板 中最重要的设计点之一。文中明确强调 Schema vs Guideline 分离

output schema 回答“提取什么”

output schema 的职责是定义结果结构本身,也就是要抽什么数据。它描述的是目标对象,而不是抽取策略。

例如,一个模板可以通过 schema 指定:

  • 需要抽取哪些实体字段;
  • 需要输出哪些关系;
  • 结果是列表、集合还是图结构;
  • 某些关系是否带时间或地点字段。

它解决的是“目标数据长什么样”的问题。

guideline 回答“如何高质量提取”

guideline 的职责则是说明抽取时应遵守的规则。文中明确说它用于定义“如何高质量提取”,以及“避免哪些常见错误”。

这类规则通常不是结构的一部分,但会显著影响结果质量,例如:

  • 遇到歧义时应如何判断;
  • 信息不足时是否应保守处理;
  • 哪些表述不能误识别为关系;
  • 哪些字段必须从原文显式支持,而不能臆造;
  • 哪类重复、混淆或过度泛化应当避免。

把 schema 与 guideline 分开,带来两个直接好处:

  • 第一,结构定义更稳定,不会和提示细节混在一起。
  • 第二,可以在不改输出结构的前提下单独优化抽取质量规则。