一、前述

传统的问答系统要么基于关键词匹配(答非所问),要么基于向量检索(缺乏逻辑推理能力)。

而知识图谱+大模型的组合,正好解决了这个问题:

  • Neo4j 存储结构化知识,能回答"关系的逻辑"
  • DeepSeek 负责自然语言理解和生成,能看懂问句、组织答案
  • LangChain 在中间做"翻译官",把自然语言转成 Cypher 查询语句

本文带你从零搭建这样一个系统。全文代码均可直接运行。


二、环境准备

2.1 安装 LangChain 相关依赖

pip 
install
--upgrade
--quiet
 langchain langchain-community langchain-openai neo4j

2.2 安装 Neo4j 图数据库

  1. 访问 Neo4j 部署中心
  2. 下载 neo4j-community-5.26.4 版本
  3. 解压到任意目录(例如 D:\neo4j

2.3 安装 APOC 插件(增强 Neo4j 功能)

APOC 是 Neo4j 的扩展工具包,提供了大量实用函数。

  1. 从 APOC 发布页 下载 apoc-5.26.6-core.jar
  2. 将该文件复制到 Neo4j 安装目录下的 plugins 文件夹
  3. 修改 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%免费

在这里插入图片描述