乐于分享
好东西不私藏

读完就忘的文档,被它一行命令压成可查询的知识图谱

读完就忘的文档,被它一行命令压成可查询的知识图谱

你大概率也有过这种时刻:一份 30 页的研报、一篇论文、一摞合同,读完合上,三天后只剩一句"我好像看过"。问题不在你没认真读,而在读过的东西没有变成可以回查的结构。你脑子里留下的是一团散文,而你真正想问的是"谁在什么时间做了什么决策""这条条款和那条互相矛盾吗"——这些问句对着原文只能重新翻找。

Hyper-Extract 想解决的就是这一步:把"读过的散文"压成"能查、能看、能接着喂新料的知识结构",而且只靠一条命令。

项目卡片

  • 项目:Hyper-Extract[1]
  • 状态:v0.3.0(2026-06-19)/ 约 3.1k Star / 2026-01 起持续更新,仍处于 Alpha
  • 一句话判断:与其说它是又一个 GraphRAG 套壳,不如说它把"文档→结构化知识"做成了一条带 CLI、带可视化、能导出、能接 Agent 的完整流水线,对"想把文档真正留下"的人很值。

它到底是什么,一句话讲清

市面上"把文档变图谱"的工具不少,GraphRAG、LightRAG、KG-Gen 都能跑。Hyper-Extract 真正不同的地方,是它不把"图谱"当成唯一答案。它的输出叫 Knowledge Abstract(知识摘要,KA),是一个有强类型的容器:你可以让一篇文档变成一个有序列表、一个去重集合、一张关系图、一张带时间的时间线、一张带坐标的空间图,甚至"时间+空间"的图。同一段文字,按你关心的维度落进不同的形状里。

落到用法上很实在:财报的"风险因素"你要的是去重集合,不是图;人物传记要带年份的时间线图;解剖学文本要关系图;一份"五人共决一事"的纪要,普通图得塞五条边,超图一条边就能挂住五个人。先选形状,再谈提取,是它和普通 RAG 的分水岭——普通 RAG 默认全塞向量库,结构得自己拼。

八种形状,对应八种"我到底想留下什么"

仓库把形状分成两组。Record 类负责"结构化但不需要连线"的内容:AutoModel 是一条结构化报告,AutoList 是有顺序的要点,AutoSet 是去重的标签集合。Graph 类负责"有关系"的内容:普通图、超图(一条边连多个实体)、时间图、空间图、时空图。

这个矩阵不是炫技。它逼你在动手前先回答一个问题:我读完这份东西,最遗憾查不到的是什么? 是查不到顺序,查不到关系,还是查不到"什么时候、在哪里"?答案直接决定形状,形状直接决定后面所有提取规则。仓库为这个选择画了一棵决策树,普通用户照着一分钟就能定下来,不必懂图论。

我实跑了一遍:一行命令,96 秒

别只听文档说,我装好直接跑。uv tool install hyperextract 装上 hehe-mcp 两个命令;配好一个 OpenAI 兼容的接口后,对仓库自带的特斯拉传记(英文,五千多字)跑传记时间线模板:

he parse tesla.md -t general/biography_graph -o ./tesla_kb -l en
he info ./tesla_kb

五千多字、九十六秒,he info 报出 71 个节点、94 条边。这背后是模型按块跑了好几次结构化调用——文档越长调用越多、token 越实打实,别把它当免费摘要器。打开 data.json,里面是带类型的实体(人、地点、组织、发明……)和带时间戳的关系:"Nikola Tesla —born_in→ Smiljan,time=1856-07-10""—rival→ Thomas Edison"。模板里的指引把"相对时间转成绝对时间""同一实体全文命名统一"这类脏活先替你做掉了。

he show ./tesla_kb 会用自带的 OntoSight 在本地开一个交互图:中间是人物,四周是关系,点节点看详情,左侧直接给节点数、边数、平均度数。说实话我没指望可视化多讲究,真看见人物居中、关系一圈铺开、点一下出详情,才信它是想让人的,而不只产出一个 JSON 让你自己消化。文档读完,它从一篇散文变成了一张你点得动、查得到的网。

之后还能 he search 做语义检索、he talk 对着这张图问答、he feed 喂下一篇文档做增量合并(不重跑旧的)、he export obsidian 把整张图导成一个带 [[wikilinks]] 的 Obsidian 仓库。读—看—查—问—长—出,是一条走完的路,不是六个互不相干的脚本。

为什么是它,而不是已有的方案

第一,它替你攒好了模板。仓库里 37 个 YAML 预设,覆盖金融、法律、医疗、中医、工业、通用六个领域,每个预设自带中英双语的提取指引(官方口径称"80+ 模板",是把双语变体和方法模板一并算进去的营销口径,真实 YAML 文件是 37 个——这点我心里有数,也建议你心里有数)。合同义务、药物相互作用、股权穿透、案件时间线,这些你不用从零写 prompt,挑一个就能跑,挑不准还能改。

第二,它不绑死你的模型和云。OpenAI、Anthropic Claude、阿里云百炼、本地 vLLM 都能当大脑;任何 OpenAI 兼容接口都行。我这次就是用一台第三方兼容接口跑通的,没碰 OpenAI 官方。要数据不出本地,挂一个本地 Qwen + bge-m3 的 vLLM 即可,README 给了一行 create_client(...) 的写法。

第三,它把 Agent 也算进去了。仓库自带 MCP server(he-mcp),把列模板、检索、问答、导出 Obsidian 暴露成工具,IDE 里的 Agent 能直接读你的知识摘要,还附带一套帮你写新模板的 Agent skill。想把"读文档"嵌进自动流水线的人,拿到的是现成接口,不用自己封。

三条诚实的边界,决定你用不用

但值不值得用,得看边界,不看亮点。

边界一:检索和对话额外要吃一个 embedding 接口。 提取本身只要一个能聊天的兼容接口;但 search/talk 要先 build-index,这一步要调 embedding 模型。我实测时,我那台"只转聊天"的兼容接口在 build-index 时直接 404——也就是说,光有一个聊天代理不够,检索闭环要么用带 embedding 的接口,要么本地起 bge-m3。文档把这个写成了前提,但放在"30 秒上手"之后才暴露,新手容易卡。先确认你的接口有没有 embedding,再承诺检索体验。

边界二:它是 Alpha,质量押在你选的模型上。 它依赖模型的"结构化输出"能力(json_schema / function calling)。模型弱,提取得就脏;模板指引写得再好,也救不回一个不肯乖乖填 JSON 的底座。我更愿意把它看成放大模型能力的脚手架,准确率的上限,仍是底座说了算。Alpha 还意味着命令和接口在动,上生产记得锁版本。

边界三:别被首页的数字带节奏。 "80+ 模板""10+ 引擎"是营销计数,仓库里实打实是 37 个 YAML 预设和 9 个提取方法。这不影响它好用,但影响你对"开箱覆盖度"的预期——你的领域如果不在那六类里,你得自己写或改模板,而写模板这件事,恰好是它附带的 Agent skill 想帮你省的那部分。

谁该用,谁别用

该用的:手里压着研报、合同、病历、论文,想要一个能回查、能增量、能导出的库、而非一次性摘要的人;正给 Agent / RAG 找"结构化记忆层"、又不想自己拼图谱加向量库的人;要数据留本地、用自有模型的人。

先别用的:只想把一篇文档"总结成三段话"的——那是摘要,不是提取,杀鸡用牛刀;对"读一次就够、绝不回查"的内容,它的索引、可视化、增量全是多余的重量;以及不愿接受 Alpha 偶尔踩坑、宁可等它再熟半年的项目。

我合上文档前现在会多问自己一句:这堆字,我是想再读一遍,还是想把它留下。Hyper-Extract 给"留下"这件事,备好了从提取到看见、到接出去的整条路;想留下的,一行命令就够开始。


如果你想继续看这类 AI 工具拆解,我会把上手路径、关键限制和可复用配置整理成清单,方便你直接判断值不值得试。

引用链接

[1]Hyper-Extract: https://github.com/yifanfeng97/Hyper-Extract