大家好!在本篇博客中,我将带领大家学习知识图谱以及如何利用大模型和自己的文本数据构建一个。
喜欢本文记得收藏、关注、点赞。
什么是知识图谱?
知识图谱,也被称为语义图,是一种智能结构,以高效的方式存储数据。
数据以节点和边的形式存储。如下图所示,节点代表对象,边表示它们之间的关系。知识图谱所代表的数据模型有时被称为资源描述框架(rdf)。rdf定义了在万维网中相互链接站点的方式。
为什么要使用知识图谱?
在整个数据故事中,只有少数数据点是内在的,可以代表整个数据集。因此,知识图谱仅存储重要的数据点。这显著降低了检索时间复杂度,并减少了空间复杂度。
实施步骤
- 安装和导入包
pip install -q langchain openai pyvis gradio==3.39.0
导入已安装的包:
from langchain.prompts import prompttemplate
from langchain.llms.openai import openai
from langchain.chains import llmchain
from langchain.graphs.networkx_graph import kg_triple_delimiter
from pprint import pprint
from pyvis.network import network
import networkx as nx
import gradio as gr
- 设置 api 密钥
从 open ai 平台仪表板复制 api 密钥,并设置 api 密钥环境变量。
from google.colab import userdata
openai_api_key = userdata.get('openai_api_key')
- 定义提示
定义用于知识三元提取的提示模板。
- 初始化链
使用描述性提示,使用 llmchain 类初始化链。
llm = openai(
api_key=openai_api_key,
temperature=0.9
)
# 使用知识三元提取提示创建 llmchain
chain = llmchain(llm=llm, prompt=knowledge_triple_extraction_prompt)
- 构建知识图谱
从字符串输入加载文本数据,并通过用户定义的函数解析检索到的三元组。
- 可视化构建的知识图谱
使用 pyvis 创建精美的可视化效果,并使用 gradio 框架交互地显示它。
在此过程中,我们使用了一些用户定义的函数来简化任务。
最后,我们通过 gradio 显示 pyvis 生成的 html。
通过简单地将 share=true
添加到 demo.launch(share=true)
方法中,您可以使应用对任何人可见。
这样,我们就通过 gradio 框架展示了我们的知识图谱,使页面可以轻松与任何在线用户共享链接。
注意:您可以通过使用更高级的llms来提高性能。
技术交流&资料
技术要学会分享、交流,不建议闭门造车。一个人可以走的很快、一堆人可以走的更远.
成立了大模型技术交流群,本文完整代码、相关资料、技术交流&答疑,均可加我们的交流群获取,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友。
通俗易懂讲解大模型系列
参考
-
https://medium.com/@mahimairaja/build-knowledge-graph-from-textdata-using-langchain-under-2min-ce0d0d0e44e8
-
https://www.wisecube.ai/blog/20-real-world-industrial-applications-of-knowledge-graphs/?source=post_page-----ce0d0d0e44e8
-
https://colab.research.google.com/drive/1opolykawtvpkhy0vgvdupryypiftsirl?usp=sharing&source=post_page-----ce0d0d0e44e8
发表评论