【AI大模型应用开发】教你用AI轻松将你的知识库变为知识图谱(附完整代码,直接运行)

AI开发: 知识图谱的初识,学会制作知识图谱- Python 机器学习 是一个通过图结构来表示和组织知识的工具,它将事物、概念和它们之间的关系以图的形式呈现出来,图中的节点代表实体(比如人物、地点、事件等),而边代表这些实体之间的各种关系(例如“某人是某地的居民”,“某人是某公司的员工”等)。简单来说,知识图谱就像是一个庞大的电子地图,通过它我们可以知道不同事物是如何相互联系的。:假设你有一个图谱,节点包括“马云”、“阿里巴巴”和“电商行业”。如果我们在“马云”和“阿里巴巴”之间连接一条边,标注为“创办了”,就说明“马云”与“阿里巴巴”之间有一个“创办了”的关系。 阅读详情
AI摘要

本文介绍了利用AI将知识转化为知识图谱的方法。通过Prompt让大模型从知识中提取三元组,实现知识图谱结构的识别,还使用gradio框架等进行可视化展示。此外,给出了完整代码和可能遇到问题的解决办法,最后分享了AI大模型的学习资料和商业化落地方案。

0. 实现效果

先来看下最终的实现效果:输入知识,大模型自动将知识中的实体、关系、属性等提取出来,并自动生成知识图谱。为了方便查看,代码中还对创建的知识谱图进行了可视化展示。

(1)对于某个知识提取出的知识图谱结构:

(2)可视化知识谱图的展示:

1. 代码实现过程

1.1 知识图谱结构的识别

将知识转化为知识图谱,最重要的步骤是将知识中的实体、关系、属性等提取出来。这也是代码的主要部分。这部分是通过Prompt来实现的。

(1)Prompt部分

# Prompt template for knowledge triple extraction  
_DEFAULT_KNOWLEDGE_TRIPLE_EXTRACTION_TEMPLATE = (  
    "You are a networked intelligence helping a human track knowledge triples"  
    " about all relevant people, things, concepts, etc. and integrating"  
    " them with your knowledge stored within your weights"  
    " as well as that stored in a knowledge graph."  
    " Extract all of the knowledge triples from the text."  
    " A knowledge triple is a clause that contains a subject, a predicate,"  
    " and an object. The subject is the entity being described,"  
    " the predicate is the property of the subject that is being"  
    " described, and the object is the value of the property.\n\n"  
    "EXAMPLE\n"  
    "It's a state in the US. It's also the number 1 producer of gold in the US.\n\n"  
    f"Output: (Nevada, is a, state){KG_TRIPLE_DELIMITER}(Nevada, is in, US)"  
    f"{KG_TRIPLE_DELIMITER}(Nevada, is the number 1 producer of, gold)\n"  
    "END OF EXAMPLE\n\n"  
    "EXAMPLE\n"  
    "I'm going to the store.\n\n"  
    "Output: NONE\n"  
    "END OF EXAMPLE\n\n"  
    "EXAMPLE\n"  
    "Oh huh. I know Descartes likes to drive antique scooters and play the mandolin.\n"  
    f"Output: (Descartes, likes to drive, antique scooters){KG_TRIPLE_DELIMITER}(Descartes, plays, mandolin)\n"  
    "END OF EXAMPLE\n\n"  
    "EXAMPLE\n"  
    "{text}"  
    "Output:"  
)

这个Prompt主要的任务是让大模型从语句中提取出知识三元组,即实体、关系、属性。看着有点像识别句子中的主谓宾。Prompt中给了几个示例,Few-shot的方式可以让大模型更好地理解用户的需求。

(2)调用大模型的基本流程

KNOWLEDGE_TRIPLE_EXTRACTION_PROMPT = PromptTemplate(  
    input_variables=["text"],  
    template=_DEFAULT_KNOWLEDGE_TRIPLE_EXTRACTION_TEMPLATE,  
)  
  
llm = ChatOpenAI(temperature=0.9)  
  
# Create an LLMChain using the knowledge triple extraction prompt  
chain = LLMChain(llm=llm, prompt=KNOWLEDGE_TRIPLE_EXTRACTION_PROMPT)  
  
# Run the chain with the specified text  
text = "The city of Paris is the capital and most populous city of France. The Eiffel Tower is a famous landmark in Paris."  
triples = chain.invoke(  
    {'text' : text}  
).get('text')

(3)结果的解析

def parse_triples(response, delimiter=KG_TRIPLE_DELIMITER):  
    if not response:  
        return []  
    return response.split(delimiter)  
  
triples_list = parse_triples(triples)  
  
pprint(triples_list)

(4)执行结果示例:

1.2 知识图谱的可视化

示例代码中使用gradio框架进行了可视化界面的搭建。可视化不是本文重点,这里就不详细介绍了。可以看完整代码里的实现。大体是使用了 pyvis 和 networkx 来使用前面提取的三元组进行图结构的构建。

运行之后,打开提示中的链接,就可以看到可视化界面了。

这里有小小的疑问:为什么要同时使用pyvis和networkx?看代码中是先用三元组构建了networkx的图结构,然后将networkx结构转化成了pyvis结构,然后再使用pyvis进行可视化。这个过程有必要?不能直接利用三元组构建pyvis结构吗?期待各位大佬的解答!

2. 完整代码

下面将可直接运行的完整代码奉上(当然,缺依赖库的话还是要自己装一装的了):

from langchain.prompts import PromptTemplate  
from langchain_openai import ChatOpenAI  
from langchain.chains import LLMChain  
from langchain.graphs.networkx_graph import KG_TRIPLE_DELIMITER  
from pprint import pprint  
  
# Prompt template for knowledge triple extraction  
_DEFAULT_KNOWLEDGE_TRIPLE_EXTRACTION_TEMPLATE = (  
    "You are a networked intelligence helping a human track knowledge triples"  
    " about all relevant people, things, concepts, etc. and integrating"  
    " them with your knowledge stored within your weights"  
    " as well as that stored in a knowledge graph."  
    " Extract all of the knowledge triples from the text."  
    " A knowledge triple is a clause that contains a subject, a predicate,"  
    " and an object. The subject is the entity being described,"  
    " the predicate is the property of the subject that is being"  
    " described, and the object is the value of the property.\n\n"  
    "EXAMPLE\n"  
    "It's a state in the US. It's also the number 1 producer of gold in the US.\n\n"  
    f"Output: (Nevada, is a, state){KG_TRIPLE_DELIMITER}(Nevada, is in, US)"  
    f"{KG_TRIPLE_DELIMITER}(Nevada, is the number 1 producer of, gold)\n"  
    "END OF EXAMPLE\n\n"  
    "EXAMPLE\n"  
    "I'm going to the store.\n\n"  
    "Output: NONE\n"  
    "END OF EXAMPLE\n\n"  
    "EXAMPLE\n"  
    "Oh huh. I know Descartes likes to drive antique scooters and play the mandolin.\n"  
    f"Output: (Descartes, likes to drive, antique scooters){KG_TRIPLE_DELIMITER}(Descartes, plays, mandolin)\n"  
    "END OF EXAMPLE\n\n"  
    "EXAMPLE\n"  
    "{text}"  
    "Output:"  
)  
  
KNOWLEDGE_TRIPLE_EXTRACTION_PROMPT = PromptTemplate(  
    input_variables=["text"],  
    template=_DEFAULT_KNOWLEDGE_TRIPLE_EXTRACTION_TEMPLATE,  
)  
  
llm = ChatOpenAI(temperature=0.9)  
  
# Create an LLMChain using the knowledge triple extraction prompt  
chain = LLMChain(llm=llm, prompt=KNOWLEDGE_TRIPLE_EXTRACTION_PROMPT)  
  
# Run the chain with the specified text  
text = "The city of Paris is the capital and most populous city of France. The Eiffel Tower is a famous landmark in Paris."  
triples = chain.invoke(  
    {'text' : text}  
).get('text')  
  
pprint(triples)  
  
def parse_triples(response, delimiter=KG_TRIPLE_DELIMITER):  
    if not response:  
        return []  
    return response.split(delimiter)  
  
triples_list = parse_triples(triples)  
  
pprint(triples_list)  
  
from pyvis.network import Network  
import networkx as nx  
  
  
def create_graph_from_triplets(triplets):  
    G = nx.DiGraph()  
    for triplet in triplets:  
        subject, predicate, obj = triplet.strip().split(',')  
        G.add_edge(subject.strip(), obj.strip(), label=predicate.strip())  
    return G  
  
def nx_to_pyvis(networkx_graph):  
    pyvis_graph = Network(notebook=True, cdn_resources='remote')  
    for node in networkx_graph.nodes():  
        pyvis_graph.add_node(node)  
    for edge in networkx_graph.edges(data=True):  
        pyvis_graph.add_edge(edge[0], edge[1], label=edge[2]["label"])  
    return pyvis_graph  
  
def generateGraph():  
    triplets = [t.strip() for t in triples_list if t.strip()]  
    graph = create_graph_from_triplets(triplets)  
    pyvis_network = nx_to_pyvis(graph)  
  
    pyvis_network.toggle_hide_edges_on_drag(True)  
    pyvis_network.toggle_physics(False)  
    pyvis_network.set_edge_smooth('discrete')  
  
    html = pyvis_network.generate_html()  
    html = html.replace("'", "\"")  
  
    return f"""<iframe style="width: 100%; height: 600px;margin:0 auto" name="result" allow="midi; geolocation; microphone; camera;  
    display-capture; encrypted-media;" sandbox="allow-modals allow-forms  
    allow-scripts allow-same-origin allow-popups  
    allow-top-navigation-by-user-activation allow-downloads" allowfullscreen=""  
    allowpaymentrequest="" frameborder="0" srcdoc='{html}'></iframe>"""  
      
import gradio as gr  
  
demo = gr.Interface(  
    generateGraph,  
    inputs=None,  
    outputs='html',  
    title="Knowledge Graph",  
    allow_flagging='never',  
    live=True,  
)  
  
demo.launch(  
    height=800,  
    width="100%"  
)

3. 可能遇到的坑

如果你使用的是参考链接中的原代码,则很可能会遇到下面的问题。

(1)报错:module gradio has no attribute outputs. gradio版本4.16

解决:outputs=gr.outputs.HTML 改为 outputs='html'

4. 总结

本文我们主要是学习了如何利用AI将知识转化为知识图谱的结构。其中最主要的,就是从知识中提取出三元组,这就强依赖Prompt和大模型的能力了。然后,锦上添花的,代码实现了知识图谱结构的可视化。尽管简单,但思路绝对值得借鉴。

如何学习AI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

KG-RAG: 知识图谱增强的检索增强生成技术 在一个具体的测试中,研究人员比较了使用和不使用KG-RAG的GPT-4在回答关于FDA批准药物的问题时的表现。结果显示,使用KG-RAG的GPT-4能够提供更加准确和详细的信息,而没有使用KG-RAG的GPT-4则可能给出不完整或过时的答案。通过将结构化知识与先进的语言理解能力相结合,KG-RAG正在推动AI系统向更智能、更可靠的方向发展,为未来的人工智能应用开辟了新的可能性。: 通过结合知识图谱的结构化信息,KG-RAG能够显著减少LLM的幻觉问题,提供更加准确和可靠的回答。 阅读详情

相关推荐

DeepSeek自动生成课程的知识图谱

例如:“线性回归”与“监督学习”是“属于”关系,“梯度下降”与“线性回归”是“优化方法”关系。:如果课程有数据库或表格形式的内容(如课程大纲、知识点列表),可以直接使用。例如:在机器学习课程中,实体可能是“线性回归”、“神经网络”、“梯度下降”。例如:如果“A是B的子类”且“B是C的子类”,则推理出“A是C的子类”。例如:“线性回归”的属性可能包括“定义”、“公式”、“应用场景”。:收集课程的教材、PPT、讲义、视频字幕、作业、考试题等。:识别课程中的核心概念、术语、人物、地点、事件等。

meisongqing的博客 2175

AI大模型老师叶梓:构建知识图谱,从文本到知识的智能转换

知识图谱,也称为语义网络,是一种通过图形结构表示实体及其关系的技术。实体可以是物体、事件、情况或概念,而关系则说明了这些实体之间的联系。知识图谱通常存储在图形数据库中,并可以被可视化为网络图,从而提供了一种直观的方式来探索和分析数据。

人工智能讲师分享前沿技术 1796

AI人工智能领域知识图谱的质量评估指标

知识图谱作为AI领域的重要基础设施,其质量直接影响下游应用的性能。本文旨在系统性地介绍知识图谱质量评估的关键指标,为知识图谱的构建、维护和应用提供指导。本文将首先介绍知识图谱的基本概念,然后详细解析六大核心质量指标,接着探讨评估方法和实际案例,最后展望未来发展趋势。知识图谱:以图结构形式组织和表示的知识库,由实体、属性和关系组成。实体(Entity):知识图谱中的节点,表示现实世界中的对象或概念。关系(Relation):连接两个实体的边,表示它们之间的关联。准确性:知识是否正确无误完整性。

AIGC应用创新大全的博客 1413

Obsidian AI 自动生成知识图谱辅助学习

最近学习中医,发现学习新知识真的太难了。在读到某个药材、经络、方剂的时候,总想到这些内容之前在哪里读过, 然后往前翻,而且时长找不到。于是乎,想到了 Obsidian,想到了知识图谱,想到了 AI 自动生成知识图谱。整体的方案就是:使用 Obsidian 转录数据使用 AI 自动解析成 Wiki 格式使用 Obsidian 的双线连接和图谱来发辅助学习先看一下效果:配合 Obsidian 自带的图谱功能,还可以看到漂亮的知识图谱,大家可以根据自己的需要设置下节点颜色,

xx_nm98的博客 4292

Python数据爬取超详细讲解(零基础入门,老年人都看的懂)

Python数据爬取超详细讲解(零基础入门,老年人都看的懂)

python03011的博客 3754

Zynq UltraScale+ MPSoC-dp14 standalone

EDID HDCP AR# 64652 How to port the DisplayPort 1.4 TX subsystem example to a custom board dp v2.1 example design color format change DisplayPort-DP接口知识

zhuxl24的博客 2671

从零开始的Dify大模型应用开发指南

我们所开发的服务可以通过API或独立页面形式使用。当然,回馈机制、复杂多角色工作流、agent组、可视化、多模态分析以及更丰度的大模型应用开发,Dify均可进行便捷实现,此处不一一列举。

6496

西门子1200,与V90和步科MD60第三方伺服PN通讯

需要注意的是回零方式的选择,因为V90是绝对值编码器,这里回零模式选择模式7,系统自动根据编码器反馈以及组态的机械参数,计算出轴的位置,并且掉电保持。在线访问中,找到对应的网卡,以及下面扫描到的设备,可以在线修改ip地址和profinet名称,注意一定要和组态中的完全一致。以上硬件组态上完成,主要是gsd文件导入后,添加硬件,建立连接,修改ip和profinet名称,添加报文。1- 博图V18内,设备组态,网络视图中,拖入V90以及MD60伺服,并与PLC创建连接。向厂家索要GSD文件,PN的描述文件。

weixin_37596954的博客 2466

大佬,你还在头疼文本信息抽取?这个神器让 AI 帮你自动生成知识图谱!

简单来说,就是把各种概念、实体以及它们之间的关系,用图的形式展现出来。有了它,你就能一眼看清信息之间的联系,再也不用在海量文本里迷失方向了!

m0_59235945的博客 3194

1.47寸ST7789V3彩色TFT LCD嵌入式驱动详解

TFT LCD是嵌入式人机交互(HMI)的核心显示技术,其工作原理依赖于行列驱动、RGB像素寻址与伽马校正等模拟/数字协同机制。ST7789V3作为主流低功耗TFT控制器,支持SPI接口与16位RGB565数据格式,具备高兼容性与轻量级驱动优势。在资源受限的MCU平台(如ARM Cortex-M系列)上,结合RT-Thread设备驱动模型与QSPI硬件加速,可实现高效显存管理、Bresenham图形算法及GB2312中文字模渲染。典型应用场景涵盖便携设备状态屏、工业HMI面板与教育开发套件——本文以1.47

weixin_42599908的博客 125

dolphinscheduler集群服务一键安装启动实现流程剖析

通过以上分析我们基本梳理清楚了整个dolphinscheduler项目的一键安装启动逻辑, 我们现在在通过一张图正好理一下整个实现流程。关于一键停止集群服务及一件查询集群各个角色服务实例运行状态的实现也都在stop-all.sh/status-all.sh及dolphinscheduler-daemon.sh这三个脚本中, 有兴趣自行研究。写这篇文章的核心目的不仅在于给大家分享如何优秀的开源项目的一键安装部署的实现过程。

最爱嫣夜来 1208

【AI大模型应用开发】AI+知识图谱极简入门:手把手带你体验LangChain实现知识图谱创建和查询(附代码和源码分析)

知识图谱是一种结构化的语义知识库,它通过图的形式存储和表示实体(如人、地点、组织等)以及实体之间的关系(如人物关系、地理位置关系等)。知识图谱通常用于增强搜索引擎的语义理解能力,提供更丰富的信息和更准确的搜索结果。1.实体(Entity):知识图谱中的基本单元,代表现实世界中的一个对象或概念。2.关系(Relation):实体之间的联系,如“属于”、“位于”、“创立者”等。3.属性(Attribute):实体所具有的描述性信息,如人的年龄、地点的经纬度等。4.图结构(Graph Structure。

m0_59164304的博客 2329

k230 +canMV+ LVGL控件 仿手表表盘触摸屏滚动、选中后弹窗效果完整示例程序

现在智能手表用的越来越多,其交互方式比较有特点,现在k230开发板上,基于LVGL(Light and Versatile Graphics Library)编写一个嵌入式GUI应用程序,使用LVGL配合触摸屏实现模仿智能手表的表盘滚动效果,实际效果如下:程序使用LVGL图形库和MediaManager程序,创建带有触摸屏交互的GUI应用。程序主要功能包括显示初始化、LVGL初始化、创建GUI界面(包含一个可滚动的按钮列表,每个按钮点击会弹出消息框),以及处理触摸屏输入。

weixin_47446386的博客 1175

基于人工智能的智能知识库解决方案推动知识图谱应用

在人工智能技术的推动下,智能知识库解决方案有效促进了知识图谱的应用。这种方案通过整合丰富的信息资源,构建全面的知识网络,提升了企业在数据管理与决策过程中的效率。本文将探讨AI与知识图谱结合的最佳实践,为企业数字化转型提供有力支持。

liju_yang的博客 815

爬虫法律风险与合规边界

爬虫技术的法律边界正在快速收紧。从2017年上海晟品案开启爬虫入刑先河,到2025年Cloudflare区块链溯源技术将违规行为与企业主体永久绑定,合规已从"可选项"变为"必选项"。技术团队需要建立三层防御体系法律合规层:法律适用判定、授权管理、合同审查、隐私政策;技术控制层:访问控制、数据加密、匿名化、审计日志、监控告警;组织管理层:DPO任命、培训体系、应急响应、合规审计、绩效考核。

从事移动开发八年,csdn博客专家,阿里云特邀专家,华为云云享专家,高级网络信息安全工程师,大数据工程师(高级),python技术开发(高级),HarmonyOS 应用开发者高级认证,现在某学校任教。 1164

【OpenClaw企业级智能体实战】第32篇:政企版OpenClaw安全落地指南——奇安信55页报告深度拆解与实战

2026年Q2,OpenClaw(俗称“龙虾”)安全风险集中爆发,公安部、工信部等监管机构密集发声,23万公网暴露实例、155个高危漏洞让企业“养虾”安全压力骤增。奇安信发布的55页《政企版龙虾安全使用指南》,以“看得清、管得住、用得好”为核心,构建了“端-网-云”三层防护体系。本文深度拆解这份报告的九大安全面与三大趋势,全景扫描奇安信、腾讯、360等头部厂商安全方案,提炼企业最低安全基线与实操配置,通过金融机构虚拟案例演示落地全流程,提供从资产摸底、规范制定到工具部署的完整解决方案。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 576

一文讲透:大模型、RAG、函数调用、Agent、知识库、向量数据库、知识图谱、AGI 到底啥关系?

是不是每天都能刷到这些词:大模型、RAG、Agent、AGI…… 但每次看完都想说:到底谁是谁的谁?今天就用一篇轻松好懂的文章,给大家理一理

m0_48891301的博客 1302

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Spring AI 来了,打造Java生态大模型应用开发新框架!

▼最近直播超级多,预约保你有收获尽管 Python 长期主导 AI 大模型应用开发领域,但 Java 并未熄火!Spring AI 来了,正式告别实验期,迈向广泛应用新阶段!这意味着 Spring 生态体系的广大开发者,迎来 AI 大模型应用开发的新里程。—1—Spring AI 开发框架设计理念Spring AI 是一个 AI 工程师的应用框架,它提供了一个友好的 API 和开发 AI 应用的...

musicml的博客 3815

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

让你的知识库助手更牛逼,只需3步,大模型构建知识图谱助手

知识图谱算是一种降维分析,把一堆文本内容凝聚在一张关系图中,能让你对整个资料有全局把握。了解某个概念(节点)对整个资料的重要性,理解看似不相关的概念之间的联系。 最牛逼的是可以实现图检索增强(GRAG),通过知识图谱改进检索,从而让知识库助手回答得更准。

嘴巴吃糖了 1129

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

AI知识库与传统知识库的区别及其在知识图谱中的应用价值分析

本文将探讨AI知识库与传统知识库的主要区别,并分析其在知识图谱中的应用价值。通过对比两者的技术特点与功能,揭示AI如何增强知识管理的效率与精准性,为企业决策提供更有力的支持。同时,结合实际案例说明AI知识库在构建智慧知识图谱中的重要作用与前景。

liju_yang的博客 920

【通俗易懂】轻松掌握知识图谱与大模型:从入门到应用

*4**__—

2401_85390073的博客 730
上一篇: 实验 | 使用本地大模型从论文PDF中提取结构化信息
下一篇: OpenAI大模型API代码落地实战模拟本地知识库和多轮会话实现
AI大模型_学习君
博客等级 码龄3年 6138粉丝 551原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值