把任意文本变成知识图谱:rahulnyk/knowledge_graph 完整上手指南
【免费下载链接】knowledge_graphConvert any text to a graph of knowledge. This can be used for Graph Augmented Generation or Knowledge Graph based QnA项目地址: https://gitcode.com/gh_mirrors/kn/knowledge_graph
知识图谱(Knowledge Graph)听起来像大厂基建,其实你个人就能搭。资料越存越乱、搜索只能靠关键词?rahulnyk/knowledge_graph 能把你手里的任意文本——文档、PDF、论文——自动转成一张可查询的知识图谱:概念是节点,关系是边,再配合 RDF 与 SPARQL(图数据的标准存储格式和查询语言)就能灵活提问。读完这篇,你会知道它怎么搭、能干什么、什么时候该换更重的方案。
3 分钟跑通第一次查询
这个项目的核心是一份 Jupyter 工作流,主流程写在 extract_graph.ipynb,概念提取的提示词集中在 helpers/prompts.py。
最短运行路径有三步:
git clone https://link.gitcode.com/i/6f3e1bb5332aa2bb0f5b12f1cf88a919docker build -t knowledge-graph . && docker run -p 8888:8888 knowledge-graph- 打开 notebook,喂一段文本,跑完就能看到图
想脱离容器本地跑,也可以按 pyproject.toml 里的依赖装好环境,再用 Ollama 拉一个本地模型——概念提取基本零成本。
一条三元组 + 一次查询,长这样
知识图谱的最小单元就是上面说的三元组。下面这个最小示例,能让你直观感受"加一条关系、查一条关系"有多轻:
from knowledge_graph import KnowledgeGraph kg = KnowledgeGraph() kg.add_triple("Alice", "knows", "Bob") # 加一个三元组 kg.add_triple("Bob", "works_at", "Acme") results = kg.query({"subject": "Alice", "predicate": "knows"}) # -> [("Alice", "knows", "Bob")]几行代码,你就有了一张可以增删查的微型知识图谱——这正是整套工具想给你的手感:门槛低,反馈快。
拆开看:每个关键件负责什么
- 三元组模型:主语(Subject)- 谓语(Predicate)- 宾语(Object),"Bob 认识 Alice"就是一条边。图越大,这张模型越能描述复杂关系。
- rdflib + SPARQL:rdflib 是处理 RDF 数据的 Python 库,帮你把三元组存成标准结构;SPARQL 是 RDF 的查询语言,一句查询就能筛出符合任意组合条件的关系,不用手写循环。
- pandas:项目用 DataFrame 当图的"表",节点表、边表各自一列,加行即加节点/边,改起来顺手;仓库里的 data_output/ 目录就是这种 CSV 中间结果。
- sqlite3:本地自带、零运维,适合把图谱落盘,方便下次接着查。
这套组合的取舍很清晰:内存里灵活处理,落盘时尽量无依赖。
知识图谱能落到你手头哪些事
- 个人知识库:把收藏夹里的 PDF 和论文丢进去,先切块、再让 LLM 从每块里抽概念,最后连成概念图。你具体怎么做:跑一遍 notebook,然后从图里点一个节点,顺着边找到所有相关文档。
- 问答助手:把图谱当检索器,问问题时先沿边找相关概念,再拼进提示词。你具体怎么做:在 helpers/prompts.py 的模板基础上,把"命中边"作为上下文喂给模型,回答会明显比纯关键词检索稳。
- 关系挖掘:算每个节点的中心度,立刻知道哪些概念是文本的"枢纽";算社区,把相近概念聚成簇。你具体怎么做:用 NetworkX 的两个现成函数,对同一份文本,先看枢纽、再看簇。
适合谁,边界在哪
适合:中小规模语料(几篇到几千页)、想快速把文本变成图、本地就能跑的开发者。它上手快、依赖轻、本地跑成本低。
不适合:千万级节点以上的工程、严格实体对齐(比如 "doctor" 和 "doctors" 自动归一)、复杂推理链路。这类需求建议直接用 Neo4j 等图数据库,或在其上加一层推理引擎。
中肯建议:先用手头一份文档把整条链路跑通,看效果和速度,再决定要不要往生产方向扩展——大多数个人场景,这套"轻量级知识图谱"已经够用。
下一步
打开仓库,挑一份你读得头疼的文档,跑一遍 extract_graph.ipynb。看到那张图出现的那一刻,你会知道下一篇该往哪个方向扩。
【免费下载链接】knowledge_graphConvert any text to a graph of knowledge. This can be used for Graph Augmented Generation or Knowledge Graph based QnA项目地址: https://gitcode.com/gh_mirrors/kn/knowledge_graph
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考