资讯动态

knowledge-graph-llms 代码实现解析:从文本到知识图谱的完整流水线拆解

发布时间:2026/8/16 20:34:10 来源:尧图企业网站定制
knowledge-graph-llms 代码实现解析从文本到知识图谱的完整流水线拆解【免费下载链接】knowledge-graph-llmsIn this project, I explored how to extract knowledge graphs from text using LLMs, such as OpenAI GPT4o.项目地址: https://gitcode.com/gh_mirrors/kn/knowledge-graph-llms用 GPT-4o 把任意一段文本变成可视化知识图谱总共分几步knowledge-graph-llms 项目给出了答案它基于 LLM LangChain PyVis Streamlit 搭建了一条完整的知识图谱构建流水线只需输入文本就能自动抽取实体与关系并生成可拖拽、可筛选的交互式知识图谱。本文将从代码实现层面一步步拆解这条文本 → 知识图谱流水线的每个环节帮助新手彻底看懂它的工作原理。一、knowledge-graph-llms 是什么项目全景速览 knowledge-graph-llms 是一个轻量级的开源实验项目核心目标只有一个用大语言模型从纯文本中自动提取知识图谱数据。它的整体架构非常清晰由 4 个核心模块组成模块技术栈职责交互界面Streamlit提供文件上传与文本输入两种入口抽取引擎LangChain GPT-4o从文本中提取实体和关系图谱可视化PyVis生成可交互的力导向图异步调度asyncio高效执行 LLM 抽取任务整个项目只有三个核心代码文件界面入口app.py、核心逻辑generate_knowledge_graph.py以及用于实验探索的knowledge_graph.ipynb。麻雀虽小五脏俱全非常适合作为 LLM 知识图谱入门的参考模板。二、完整流水线拆解文本如何一步步变成知识图谱 在深入代码之前先建立全局视角。从输入一段文本到最终看到交互式知识图谱整个流水线共经历 6 个环节输入文本 → 封装为 Document → GPT-4o 抽取实体与关系 → 生成 GraphDocument → PyVis 构建网络图 → Streamlit 展示其中前三个环节由generate_knowledge_graph.py中的generate_knowledge_graph(text)函数统一调度先通过asyncio.run()执行异步抽取再把结果交给可视化函数渲染。下面我们按环节逐一拆解。三、环境准备最快 3 步完成依赖安装与密钥配置 ️在运行代码之前需要先准备好运行环境。这个项目的依赖非常精简全部集中在requirements.txt中主要包括langchain / langchain-experimental核心 LLM 框架与实验性图转换器langchain-openaiOpenAI 模型接入pyvis交互式图谱可视化streamlitWeb 界面框架python-dotenv环境变量管理一键安装全部依赖pip install -r requirements.txt配置 OpenAI API Key项目通过.env文件管理密钥。在项目根目录创建.env文件写入你的 OpenAI API Key 即可OPENAI_API_KEY你的密钥代码中通过load_dotenv()自动加载见generate_knowledge_graph.py第 6-14 行随后用os.getenv(OPENAI_API_KEY)读取无需手动传参。四、核心抽取引擎解析LLMGraphTransformer 如何实现实体关系抽取 ⚙️这是整个项目最精华的部分。知识图谱构建的关键在于实体识别和关系抽取而 project 巧妙地把这两件事全部交给了 LLM 完成。GPT-4o 的调用配置首先创建 LLM 实例代码中有一个非常值得注意的细节llm ChatOpenAI(temperature0, model_namegpt-4o)temperature0意味着让模型保持确定性输出避免每次运行抽取结果随机波动这对知识图谱构建这类需要稳定结果的任务至关重要。异步抽取函数 extract_graph_data 的实现思路接下来是抽取环节代码将文本封装成 LangChain 的Document对象再交给LLMGraphTransformer的异步方法处理documents [Document(page_contenttext)] graph_documents await graph_transformer.aconvert_to_graph_documents(documents)LLMGraphTransformer是 LangChain 实验性模块提供的文本→图转换器它会自动引导模型完成两件事抽取实体Nodes并为其分类如 Person、Organization、Concept、Event 等类型以及识别实体之间的语义关系Relationships并标注关系类型如 DEVELOPED、MOVED_TO、WORKED_AT 等。以项目 notebook 中的爱因斯坦文本为例GPT-4o 能从一段人物传记中抽取 35 个节点和 32 条关系——从Albert Einstein → DEVELOPED → Theory Of Relativity到Albert Einstein → RECEIVED → 1921 Nobel Prize In Physics实体与关系覆盖人物、地点、组织、奖项、概念、事件等多种类型效果相当惊艳。五、可视化模块拆解PyVis 让知识图谱活起来 抽取完成后的GraphDocument只是结构化数据要想直观展示还需要可视化的加持。项目选用 PyVisvis.js 的 Python 接口来完成这一步。节点与边的构建逻辑在visualize_graph函数中有几个值得学习的工程细节建立节点索引先把所有节点放进字典node_dict便于快速查找过滤非法边只保留源节点和目标节点都真实存在的边防止出现悬空连接按类型着色通过groupnode.type让同类型节点显示同一颜色视觉上层次分明容错处理添加节点和边时使用 try/except 跳过异常数据保证单个脏数据不会拖垮整个渲染流程。forceAtlas2Based 物理布局为了让图谱看起来更美观、更易读代码为 PyVis 配置了forceAtlas2Based物理引擎通过调整引力常数、弹簧长度等参数让节点自动散开、关联紧密的节点相互靠近形成符合直觉的力导向布局。最终图谱会保存为独立的knowledge_graph.html文件用户可以在浏览器中自由拖拽节点、滚动缩放、悬停查看详情还能使用筛选菜单过滤指定节点。六、Streamlit 交互界面解析两种输入方式一次讲透 项目的用户界面由app.py实现代码逻辑非常简洁。它通过侧边栏的单选组件提供了两种输入方式。方式一上传 .txt 文件用户选择 Upload txt 后界面出现文件上传组件代码将上传的文件读取并解码为 UTF-8 文本text uploaded_file.read().decode(utf-8)方式二直接输入文本用户也可以选择 Input text在文本框中直接粘贴任意内容例如新闻、论文摘要、人物介绍无需创建文件。无论哪种方式点击Generate Knowledge Graph按钮后都会进入统一的处理流程调用generate_knowledge_graph(text)生成图谱 → 保存为 HTML 文件 → 通过components.html()内嵌到 Streamlit 页面中展示。整个交互只有几十行代码却构成了一个完整的输入—处理—展示闭环非常适合初学者模仿学习。七、进阶玩法限定节点类型与关系类型让抽取更精准 如果觉得默认抽取太自由项目在knowledge_graph.ipynb中还演示了两种精准控制技巧限定节点类型通过allowed_nodes参数只抽取 Person、Organization、Location、Award 等指定类型的实体过滤掉无关概念限定关系类型通过allowed_relationships参数指定关系三元组模板例如只保留(Person, WORKS_AT, Organization)这类关系让抽取结果严格符合业务需求。这两个参数是LLMGraphTransformer内置的能力适合在特定领域如人物履历分析、公司关系网中控制知识图谱的精度。八、快速上手指南从零跑通整个项目 想亲自体验这条知识图谱构建流水线按下面的步骤操作即可克隆项目git clone https://gitcode.com/gh_mirrors/kn/knowledge-graph-llms安装依赖执行pip install -r requirements.txt配置密钥创建.env文件并填入OPENAI_API_KEY启动应用streamlit run app.py启动后浏览器会自动打开 Streamlit 界面默认地址 http://localhost:8501粘贴一段文本并点击生成按钮稍等片刻就能看到属于你的知识图谱了。结语 knowledge-graph-llms 虽然代码量不大却完整覆盖了文本 → LLM 抽取 → 图谱可视化 → 交互展示的全链路是学习 LLM 知识图谱构建的绝佳样板。它的核心启发在于借助大模型的理解能力知识图谱构建不再依赖繁琐的规则编写只需几行代码即可完成。如果你正在探索如何用 LLM 从非结构化文本中挖掘结构化知识这个项目值得仔细研读。【免费下载链接】knowledge-graph-llmsIn this project, I explored how to extract knowledge graphs from text using LLMs, such as OpenAI GPT4o.项目地址: https://gitcode.com/gh_mirrors/kn/knowledge-graph-llms创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

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

免费获取报价