[特殊字符]【实战教程】用大模型LLM查询Neo4j图数据库(附完整代码)
🌟 核心要点速览
✅ 基于LangChain框架实现LLM查询Neo4j ✅ 使用Qwen2.5模型(实测Llama3.1查不出内容) ✅ 包含完整数据准备+代码实现+效果演示 ✅ GitHub/Gitee源码已同步(文末获取)
🛠️ 环境准备
1️⃣ 安装Neo4j图数据库
# Windows安装指南参考: # https://blog.csdn.net/xxx/xxx
2️⃣ 安装APOC插件
🔍 APOC是什么? Neo4j的超级工具包,提供300+扩展函数!
下载方式:
-
GitHub官方源
-
CSDN资源站(文末附链接)
安装步骤:
-
下载APOC插件(.rar)
-
放入Neo4j的
plugins
目录 -
重启Neo4j服务
🎬 数据准备
我们使用电影数据集作为示例:
数据集说明
-
文件:
movies_small.csv
-
包含:电影、导演、演员、类型等关系
📌 关键导入代码
def create_graph():db_file_path = 'file:///movies_small.csv'movies_query = """LOAD CSV WITH HEADERS FROM '%s' AS rowMERGE (m:Movie {id:row.movieId})# ...完整导入逻辑见原文...""" % (db_file_path)graph.query(movies_query)graph.refresh_schema()
🔍 LLM查询实战
核心组件
from langchain_neo4j import GraphCypherQAChain from langchain_ollama import ChatOllama # 初始化大模型(实测Qwen2.5可用) llm = ChatOllama(model="qwen2.5", temperature=0) # 创建查询链 chain = GraphCypherQAChain.from_llm(graph=enhanced_graph, llm=llm,allow_dangerous_requests=True )
🎯 查询示例
问题: "What was the cast of the Casino?"
LLM生成的Cypher:
MATCH (m:Movie {title: 'Casino'})<-[:ACTED_IN]-(a:Person) RETURN a.name
查询结果:
{"result": "The cast included James Woods, Joe Pesci...","context": [{"a.name": "James Woods"}, {"a.name": "Joe Pesci"},...] }
💡 技术亮点
-
自动Cypher生成:LLM自动转换自然语言为数据库查询
-
错误处理:对比了Qwen2.5/Llama3.1/GLM3的表现差异
-
扩展性强:可轻松适配其他图数据库
📚 资源下载
资源类型 | 链接 |
---|---|
完整代码 | GitHub | Gitee |
APOC插件 | CSDN下载 |
电影数据集 | 文末附件 |