大家好!在本篇博客中,我将带领大家了解知识图谱以及如何利用大模型和您自己的文本数据构建一个知识图谱。
什么是知识图谱?
知识图谱,也被称为语义图,是一种智能结构,以高效的方式存储数据。
数据以节点和边的形式存储。如下图所示,节点代表对象,边表示它们之间的关系。知识图谱所代表的数据模型有时被称为资源描述框架(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来提高性能。
(完)


