Neo4j + Deepseek构建电影知识图谱智能问答 完整实例分享
一、前述
传统的问答系统要么基于关键词匹配(答非所问),要么基于向量检索(缺乏逻辑推理能力)。
而知识图谱+大模型的组合,正好解决了这个问题:
- Neo4j 存储结构化知识,能回答"关系的逻辑"
- DeepSeek 负责自然语言理解和生成,能看懂问句、组织答案
- LangChain 在中间做"翻译官",把自然语言转成 Cypher 查询语句
本文带你从零搭建这样一个系统。全文代码均可直接运行。
二、环境准备
2.1 安装 LangChain 相关依赖
pip
install
--upgrade
--quiet
langchain langchain-community langchain-openai neo4j
2.2 安装 Neo4j 图数据库
- 访问 Neo4j 部署中心
- 下载
neo4j-community-5.26.4版本 - 解压到任意目录(例如
D:\neo4j)
2.3 安装 APOC 插件(增强 Neo4j 功能)
APOC 是 Neo4j 的扩展工具包,提供了大量实用函数。
- 从 APOC 发布页 下载
apoc-5.26.6-core.jar - 将该文件复制到 Neo4j 安装目录下的
plugins文件夹 - 修改 Neo4j 配置文件
\conf\neo4j.conf,在末尾添加以下两行:
dbms.security.procedures.unrestricted
=
apoc.*
dbms.security.procedures.allowlist
=
apoc.*
2.4 启动 Neo4j
打开命令行,进入 Neo4j 安装目录的 \bin 文件夹,运行:
neo4j console
看到 Started 字样说明启动成功,浏览器访问 http://localhost:7474 即可查看。
三、核心代码实现
3.1 导入依赖并配置环境变量
import getpassimport osfrom langchain.chains importGraphCypherQAChainfrom langchain_openai importChatOpenAIfrom langchain_community.graphs importNeo4jGraphos.environ["OPENAI_API_KEY"]="您的DeepSeek API 秘钥"os.environ["NEO4J_URI"]="bolt://localhost:7687"os.environ["NEO4J_USERNAME"]="neo4j"os.environ["NEO4J_PASSWORD"]="您的Neo4j密码"
3.2 初始化 LLM(大语言模型)
这里使用 DeepSeek 作为底层大模型,因为它便宜、快,且代码理解能力很强。
llm =ChatOpenAI( model='deepseek-chat', base_url="https://api.deepseek.com/v1")
3.3 连接 Neo4j 并构建知识图谱
llm =ChatOpenAI( model='deepseek-chat', base_url="https://api.deepseek.com/v1")graph =Neo4jGraph()# Import movie informationmovies_query ="""LOAD CSV WITH HEADERS FROM 'https://raw.githubusercontent.com/tomasonjo/blog-datasets/main/movies/movies_small.csv' AS rowMERGE (m:Movie {id:row.movieId})SET m.released = date(row.released), m.title = row.title, m.imdbRating = toFloat(row.imdbRating)FOREACH (director in split(row.director, '|') | MERGE (p:Person {name:trim(director)}) MERGE (p)-[:DIRECTED]->(m))FOREACH (actor in split(row.actors, '|') | MERGE (p:Person {name:trim(actor)}) MERGE (p)-[:ACTED_IN]->(m))FOREACH (genre in split(row.genres, '|') | MERGE (g:Genre {name:trim(genre)}) MERGE (m)-[:IN_GENRE]->(g))"""#用Loadcsv 在线下载并构建电影知识图谱数据graph.query(movies_query)graph.refresh_schema()#刷新schema
3.4 构建问答链并提问
chain =GraphCypherQAChain.from_llm(graph=graph,allow_dangerous_requests=True,llm=llm, verbose=True)response = chain.invoke({"query":"电影《Casino》的演员阵容是怎样的?"})#提问print(response)#回答
四、运行结果
程序执行过程中,LangChain 会自动将自然语言转换为 Cypher 查询语句:
生成的 Cypher 查询:
MATCH
(
p
:
Person
)
-
[
:
ACTED_IN
]
->
(
m
:
Movie
{
title
:
'Casino'
}
)
RETURN
p
.
name
从 Neo4j 中查到的原始数据:
[
{
'p.name'
:
'James Woods'
}
,
{
'p.name'
:
'Joe Pesci'
}
,
{
'p.name'
:
'Robert De Niro'
}
,
{
'p.name'
:
'Sharon Stone'
}
]
最终输出的自然语言答案:
电影《Casino》的演员阵容包括詹姆斯·伍兹(James Woods)、乔·佩西(Joe Pesci)、罗伯特·德尼罗(Robert De Niro)和莎朗·斯通(Sharon Stone)。
五、完整代码
import getpassimport osfrom langchain.chains importGraphCypherQAChainfrom langchain_openai importChatOpenAIfrom langchain_community.graphs importNeo4jGraphos.environ["OPENAI_API_KEY"]="您的DeepSeek API 秘钥"os.environ["NEO4J_URI"]="bolt://localhost:7687"os.environ["NEO4J_USERNAME"]="neo4j"os.environ["NEO4J_PASSWORD"]="您的Neo4j密码"llm =ChatOpenAI( model='deepseek-chat', base_url="https://api.deepseek.com/v1")graph =Neo4jGraph()# Import movie informationmovies_query ="""LOAD CSV WITH HEADERS FROM 'https://raw.githubusercontent.com/tomasonjo/blog-datasets/main/movies/movies_small.csv' AS rowMERGE (m:Movie {id:row.movieId})SET m.released = date(row.released), m.title = row.title, m.imdbRating = toFloat(row.imdbRating)FOREACH (director in split(row.director, '|') | MERGE (p:Person {name:trim(director)}) MERGE (p)-[:DIRECTED]->(m))FOREACH (actor in split(row.actors, '|') | MERGE (p:Person {name:trim(actor)}) MERGE (p)-[:ACTED_IN]->(m))FOREACH (genre in split(row.genres, '|') | MERGE (g:Genre {name:trim(genre)}) MERGE (m)-[:IN_GENRE]->(g))"""#用Loadcsv 在线下载并构建电影知识图谱数据graph.query(movies_query)graph.refresh_schema()#刷新schemachain =GraphCypherQAChain.from_llm(graph=graph,allow_dangerous_requests=True,llm=llm, verbose=True)response = chain.invoke({"query":"电影《Casino》的演员阵容是怎样的?"})#提问print(response)#回答
六、总结
通过以上不到 50 行核心代码,我们实现了:
| 组件 | 作用 |
|---|---|
| Neo4j | 存储电影、人物、类型等实体及关系 |
| DeepSeek | 理解自然语言问题 + 生成流畅答案 |
| LangChain | 自动将问题转成 Cypher 查询,连接 NLU 和 DB |
这个方案的亮点在于:你不需要写任何 Cypher 语句,只需用自然语言提问,系统自动完成查询和回答。
学AI大模型的正确顺序,千万不要搞错了
🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!
有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!
就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋

📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇
学习路线:
✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经
以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!
我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

所有评论(0)