资讯动态

PDF 收藏了一堆没读过?把它变成一张知识图谱,本地跑零成本

发布时间:2026/10/14 9:28:42 来源:尧图企业网站定制
图作者用一份 PDF 跑出来的知识图谱图源项目仓库你硬盘里是不是也有个叫「资料」的文件夹几十份 PDF收藏那天热情高涨之后再没打开过。想复习翻两页就困想找东西CtrlF 都不知道该搜哪个词。我最近翻到一个开源项目 knowledge_graph专门治这个把任意文本喂进去它输出一张知识图谱一句话解释把概念当成站点、概念之间的关系当成线路画出来的一张网节点能拖、点开能看还能缩放。更实用的是这张图不只是好看——它能反过来当检索器跟文档对话这套玩法叫GRAG图检索增强生成让大模型答题前先去图谱里查地图而不是去原文里翻抽屉。整套流程在本地跑用的也是本地大模型不调任何付费 API。下面把我试下来的体验拆开讲讲。图左边是吃灰的文档堆右边是它变成的知识图谱先看效果作者把一份样例文档生成的图谱挂在了网上这个页面可以直接玩拖节点、滚轮缩放、点开看关系。节点越大代表这个概念在原文里越中心。图我试了下一份医疗主题文档生成的图谱颜色是自动聚出的话题社区图源项目仓库放大看会发现节点上不是零散的关键词而是一句句完整的小概念比如私立医学院的监管缺失——一眼就能看出它是从原文哪段话里长出来的。核心思路提取概念而不是实体这是这个项目跟大多数知识图谱工具最大的区别。市面上不少图谱工具走NER路线命名实体识别从文本里抠出人名、地名、机构名这类专有名词。这个项目用大模型提取的是概念。作者在 README 里举了个例子类型例子说明实体班加罗尔、医生具体的对象、人名、地名概念班加罗尔宜人的天气、医生与患者的关系情境、关系、抽象话题本项目提取概念作者的经验概念连出的图谱信息量更大打个比方实体图谱像通讯录只记有谁概念图谱像朋友圈八卦图记的是谁跟谁因为什么事扯上了关系——后者的信息密度明显高得多。图是怎么画出来的我翻了作者的 README 和他那篇 Medium 方法详解整个流程就四步图作者手绘的流程图和extract_graph.ipynb里跑的是同一套图源项目仓库切块把长文切成一段一段的小块chunk分块把长文拆成小段每段单独处理每段编个号提概念用本地大模型从每个小块里提取概念对以及它们明说的语义关系记为权重W1补共现同一个小块里出现的两个概念就算模型没说它们有关系也默认它俩在同一现场出现过再记一个权重W2上下文邻近关系合并去重同一对概念可能在很多块里反复出现把权重加起来、关系描述拼在一起最后每对概念之间只留一条边。用生活化的话说W1 是这两个人当面认识还知道是谁介绍的W2 是这俩人总出现在同一张合影里八成也认识。最后顺手再算两个东西每个节点的度一个概念连了多少条线线越多节点画得越大——相当于班里人缘最好的同学以及社区发现把关系紧密的概念自动聚成一簇一簇对应上图里不同颜色的区域相当于自动帮你把同学分成打球的一伙打游戏的一伙。图谱建好了能干什么GRAG 对话把图谱当检索器跟文档做更深层的问答——传统 RAG 捞回来的是几段零散的片段图谱能给出概念 A 怎么一路连到概念 B的完整路径中心性分析一眼看出整篇文档里最核心的概念是哪几个社区发现自动把全文聚成几个主题群快速摸清文档结构可视化生成的交互网页图可以直接托管上线比如作者的示例图谱。它跟向量 RAG 不是替代关系更像互补对比项knowledge_graph传统 NER关系抽取纯向量 RAG提取对象概念实体无显式结构关系语义 上下文共现预定义关系类型无成本本地 LLM零 API 费视实现而定向量化有成本检索方式图检索GRAG图查询向量相似度可解释性高每条边能追溯到原文块中低怎么跑起来路线一Docker省事Docker把软件连同运行环境打包一条命令跑起来路线三条命令git clone https://github.com/rahulnyk/knowledge_graph.git cd knowledge_graph docker build -t knowledge-graph .docker run -p 8888:8888 knowledge-graph跑完浏览器打开localhost:8888就是一个 Jupyter Notebook能一段一段跑代码的网页笔记本核心文件是extract_graph.ipynb把里面的输入文本或 PDF 路径改成你自己的文件就行。【配图建议这里放一张自己跑docker run后浏览器里 Jupyter 界面的截图能看到 notebook 文件列表或单元格即可】路线二本地 Ollama不想折腾 Docker 的话用 Ollama在自己电脑上跑开源大模型的工具# 第一步装好 Ollama 后拉一个模型README 推荐的是 zephyr ollama run zephyr然后打开extract_graph.ipynb改一下输入路径逐格运行。模型用的是 Mistral 7B OpenOrca通过 Ollama 本地托管整个提取过程不花一分钱 API 费。技术栈一览组件干什么的Mistral 7B OpenOrca提取概念的本地大模型Ollama本地托管大模型零 API 成本Pandas存图谱的表结构以后可以换图数据库NetworkX图结构和图算法算度、社区发现都用它Pyvis把图渲染成网页上的交互可视化我翻了 Issues它还不完美从社区反馈来看这个项目的短板也比较集中作者也在 README 里开了求共建板块列了几条社区建议的改进方向概念去重大模型提取概念时doctor和doctors会被当成两个节点需要用 embedding把文本转成向量用来判断两段话是不是一个意思做语义合并过滤噪音太泛、出现太频繁的概念会被留下来图会很吵共现权重失衡高频概念在 W2 里权重会过大需要优化前端交互目前只能整体浏览还不能点一个概念、展开它的子话题往下钻。这些是这类概念图谱项目的通病不算这个项目的锅。但如果你打算拿去做正经生产工具得心里有数它现在更像一个很好的方法验证和起点不是开箱即用的产品。适合谁用硬盘里 PDF 堆成山、想给资料建一张能看的关系网的人在研究 GRAG、想搞清楚图检索和向量检索到底差在哪的团队不想花 API 钱、只想在自己电脑上玩 RAG/GRAG 的用户对概念抽取、图可视化感兴趣的研究者和学生。项目是 MIT 协议代码就是一个 notebook改改路径就能跑。名词速查表名词一句话解释知识图谱把概念当节点、关系当边画出来的一张网RAG检索增强生成大模型答题前先去资料库里翻材料GRAG把 RAG 里的向量库换成知识图谱来翻NER命名实体识别从文本里抠出人名地名这类专有名词chunk分块把长文切成小段每段单独处理度degree一个节点连了多少条线线越多越中心社区发现把关系紧密的节点自动聚成一簇一簇embedding把文本转成向量用来判断两段话是不是一个意思Ollama在自己电脑上跑开源大模型的工具Jupyter Notebook一种能一段一段跑代码的网页笔记本相关链接GitHubrahulnyk/knowledge_graph在线示例图谱rahulnyk.github.io/knowledge_graph方法详解MediumHow to convert any text into a graph of concepts收藏夹里的 PDF 不会自己变成知识但让机器替你读一遍、再把关系画出来这件事现在本地就能免费做到。有兴趣的话跑一遍 notebook 比看十篇介绍都直观。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑