使用大语言模型创建 Graph 数据

Neo4j 是开源的 Graph 数据库,Graph 数据通过三元组进行表示,两个顶点+一条边,从语意上可以理解为:主语、谓语和宾语。GraphDB 能够通过图来表达复杂的结构,非常适合存储知识型数据,本文将通过大语言实现图数据库的创建。

首先,需要安装 LangChain 对应的依赖。

复制代码
langchain==0.3.7
python-dotenv==1.0.1
langchain-google-genai==2.0.4
langserve==0.3.0
langchain-community==0.3.5
dashscope==1.20.12
langgraph==0.2.45
tavily-python==0.5.0
langchain-experimental==0.3.3

初始化模型

本文我们使用 Qwen-Turbo。

复制代码
from langchain_community.chat_models import ChatTongyi
llm = ChatTongyi(model="qwen-turbo")

使用 LLMGraphTransformer 创建

创建的图关系为英文,这是因为 Langchain 提示词是英文,可以自行修改。

复制代码
### 创建 Graph
from langchain_core.documents import Document
from langchain_experimental.graph_transformers import LLMGraphTransformer
from langchain_core.output_parsers import StrOutputParser
from IPython.display import Markdown, display
parser = StrOutputParser()

llm_transformer = LLMGraphTransformer(llm=llm)

content = """
1 、项目编号:遂政采 [2024]G 049 号
2 、项目名称:无人机设备采购项目
3 、项目预算: 1550967.00元 4 、最高限价: 1550967.00元

1 、本项目投标截止时间和开标时间为 2024 年 9 月 11 日 10 点 00 分 (北京
时间)。投标人必须在投标截止时间前将电子投标文件上传至江西省公共资源
交易网,逾期为无效投标。
2 、开标地点:江西省公共资源交易网不见面开标大厅。
"""
with open("out.md", "r", encoding="utf-8") as file:
    markdown_content = file.read()

chain = llm | parser
# display(Markdown(chain.invoke("转换为 Graph 三元组, 请用中文回答,并只返回 Cypher QL, 。 {} " + content)))

documents = [Document(page_content=content)]
graph_documents = llm_transformer.convert_to_graph_documents(documents)
print(f"Nodes:{graph_documents[0].nodes}")
print(f"Relationships:{graph_documents[0].relationships}")
graph.add_graph_documents(graph_documents, include_source=False)

使用 Cypher 创建

Neo4j 提供了使用 Cypher 进行数据创建、查询等,类似于关系数据库中的 SQL。用模型生成 Cypher 语句。

复制代码
### 创建 Graph
from langchain_core.documents import Document
from langchain_experimental.graph_transformers import LLMGraphTransformer
from langchain_core.output_parsers import StrOutputParser
from IPython.display import Markdown, display
parser = StrOutputParser()

llm_transformer = LLMGraphTransformer(llm=llm)

content = """
1 、项目编号:遂政采 [2024]G 049 号
2 、项目名称:无人机设备采购项目
3 、项目预算: 1550967.00元 4 、最高限价: 1550967.00元

1 、本项目投标截止时间和开标时间为 2024 年 9 月 11 日 10 点 00 分 (北京
时间)。投标人必须在投标截止时间前将电子投标文件上传至江西省公共资源
交易网,逾期为无效投标。
2 、开标地点:江西省公共资源交易网不见面开标大厅。
"""
with open("out.md", "r", encoding="utf-8") as file:
    markdown_content = file.read()

chain = llm | parser
display(Markdown(chain.invoke("转换为 Graph 三元组, 请用中文回答,并只返回 Cypher QL, 。 {} " + content)))

总结

本文介绍了如何使用大语言模型创建图数据,同样的方式也可以创建其他类型的数据源,只需要对提示词进行修改即可。

相关推荐
小超同学你好1 小时前
OpenClaw 深度解析与源代码导读 · 第3篇:Gateway——常驻控制面、单端口多协议与进程骨架
人工智能·深度学习·语言模型·gateway
Hello.Reader3 小时前
从零构建大语言模型分词器从零实现 — 从原始文本到 Token ID
人工智能·语言模型·自然语言处理
sp_fyf_20244 小时前
【大语言模型】 揭开指令混合用于大语言模型微调的神秘面纱
人工智能·深度学习·神经网络·机器学习·语言模型·自然语言处理
阿杰学AI4 小时前
AI核心知识121—大语言模型之 基于人类反馈的强化学习 (简洁且通俗易懂版)
人工智能·深度学习·ai·语言模型·强化学习·奖励模型·rm
AIBox3655 小时前
vscode api 配置怎么做:第三方大模型接入 VS Code 的完整方法
ide·人工智能·vscode·gpt·语言模型·编辑器
renhongxia16 小时前
人机智能体合作:承诺理论考虑
大数据·人工智能·深度学习·语言模型·自然语言处理·transformer
茫忙然8 小时前
CTF大语言模型(LLM)提示词注入12种方法
网络·人工智能·语言模型
泽02028 小时前
LLMChat ----- 通过C++语言调用大语言模型所实现的聊天系统
开发语言·c++·语言模型
AI人工智能+9 小时前
文档抽取系统:OCR实现图像文本转换,结合大语言模型的语义理解能力,构建了高效的合同信息抽取系统
语言模型·自然语言处理·ocr·文档抽取
Zzj_tju9 小时前
大语言模型技术指南:长上下文是怎么做出来的?RoPE、位置插值、滑窗注意力与 KV Cache 详解
人工智能·语言模型·自然语言处理