>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
Python

如何将堆积如山的混乱文档转化为严谨的知识图谱

最近我遇到了一个解决大语言模型中最繁琐任务之一的工具。它可以将原始文本解析为可预测的格式,而无需编写超长的提示词。

这个项目叫 Hyper-Extract。它是一个 CLI 工具和 Python 库,旨在将非结构化文件转换为类型化数据结构:包括常见的列表、Pydantic 模型、超图以及时空关系。

Hero & Workflow

标准 RAG 有什么问题

典型的朴素 RAG 将文本切分为 500 个 token 的块并使用向量数据库搜索,往往会产生一团乱麻。实体之间的复杂关系会丢失,事件随时间推移的上下文会变得模糊。当你想把财务报告或科学论文喂给模型时,平面的向量搜索很少能准确呈现它们之间的关联。

GraphRAG 或 LightRAG 等框架试图解决这个问题,但从零开始将它们集成到你的项目中可能很麻烦。Hyper-Extract 的作者决定将知识提取引擎打包成一个紧凑的命令行工具和库,并附带现成的模板。

内部结构与工作原理

该库在底层依赖三层架构。

  1. 八种数据类型。包括 Pydantic 模型、简单列表、集合、标准知识图谱、超图,以及时序图和时空图。
  2. 提取算法。该框架支持 KG-Gen、GraphRAG、LightRAG、Hyper-RAG 和 Cog-RAG 引擎。
  3. 现成模板。仓库中包含 80 多个针对不同领域的预制 YAML 文件:金融、医疗、法律、科学论文等。
Knowledge Structures Matrix

模板无需代码即可使用。你只需选择一个现成的预设,然后指定要提取哪些字段和关系类型。例如,对于关系图谱,模板看起来像一个标准的 YAML 清单,包含实体(entities)和关系(relations)定义:

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}'
Architecture

几分钟快速上手

该工具通过现代包管理器 uv 安装,只需一条命令即可完成:

uv tool install hyperextract

接下来,你需要配置模型提供商。该工具支持 OpenAI、Anthropic Claude、DeepSeek、阿里云通义以及本地 vLLM 实例。

如果你使用的是 DeepSeek 或 Claude,请记住一个细节:它们没有自己的 embedding API,所以对于向量搜索,你需要单独配置 embedding 模型(例如通过 OpenAI 兼容端点):

# Настройка для связки DeepSeek + OpenAI Embeddings
he config llm -p deepseek -k YOUR_DEEPSEEK_API_KEY
he config embedder -p openai -k YOUR_OPENAI_API_KEY

对于完全本地运行、不向外发送数据的场景,你可以使用 Qwen 和 bge-m3 等模型启动 vLLM:

he config llm -p vllm -u http://localhost:8000/v1 -k dummy -m Qwen/Qwen3.5-9B
he config embedder -p vllm -u http://localhost:8001/v1 -k dummy -m BAAI/bge-m3

配置完成后,开始解析文档:

# Извлекаем граф связей из биографии
he parse examples/en/tesla.md -t general/biography_graph -o ./output/ -l en

# Делаем семантический поиск по собранной базе
he search ./output/ "What are Tesla's major achievements?"

# Запускаем интерактивную визуализацию графа прямо в браузере
he show ./output/

运行 he show 命令后,会生成一个交互式界面,你可以在其中探索生成的节点和关系。

AutoGraph Visualization

如果你在用 Python 编写代码,可以通过 Template 类以编程方式调用解析:

from hyperextract import Template

ka = Template.create("general/biography_graph")

with open("examples/en/tesla.md") as f:
    result = ka.parse(f.read())

result.show()

实用功能

最近该项目新增了几个实用的集成功能,使其不同于普通的解析脚本。

首先,导出到 Obsidian。只需一条命令 he export obsidian ./output/ -o ./vault/,图谱就会转换为一组通过标准 [[вики-ссылки]] 链接的 Markdown 笔记。对于在 Obsidian 中维护知识库且不想手动迁移实体的人来说,这简直是救星。

其次,内置 MCP 服务器(Model Context Protocol)。运行 he-mcp 命令后,你可以让 Claude Desktop 或 IDE 代理访问你的知识库。它们可以通过标准协议直接调用搜索、运行 RAG 和获取上下文。

第三,增量更新。如果你有一份新文档,无需从头重建图谱。只需将新文件放入现有目录,数据库就会补充新节点。

适用人群

该工具适合那些在企业文档上构建复杂管道、受够了 LLM 幻觉和结构化程度低的响应之苦的开发者。对于需要快速将数百页 PDF 数字化为可理解结构的分析师和研究人员也非常有用。

该仓库组织有序,文档清晰,采用 Apache 2.0 许可证。如果你正在寻找一种整理知识图谱和 RAG 工作流程的方法,不妨用你自己的几份文档试试 Hyper-Extract。你可以在 项目的 GitHub 仓库中查看代码和模板。

相关项目