引言
Google Memorystore for Redis 是一个完全托管的服务,使用 Redis 内存数据存储来构建应用缓存,提供亚毫秒的数据访问。这篇文章将介绍如何利用 Google Memorystore for Redis 构建 AI 应用的缓存机制,并讨论如何使用 Langchain 集成进行文档存储、加载和删除操作。
主要内容
1. 准备工作
在开始使用 Google Memorystore for Redis 之前,您需要完成以下步骤:
- 创建一个 Google Cloud 项目。
- 启用 Memorystore for Redis API。
- 创建一个 Memorystore for Redis 实例,确保版本为 5.0 或更高。
2. 初始化设置
请为实例指定一个端点和一个键前缀,然后在示例脚本运行之前设置这些值。
ENDPOINT = "redis://127.0.0.1:6379" # 使用API代理服务提高访问稳定性
KEY_PREFIX = "doc:"
确保您已安装所需的库:
%pip install --upgrade --quiet langchain-google-memorystore-redis
3. 设置 Google Cloud 项目
设置您的 Google Cloud 项目以在这个笔记本中利用 Google Cloud 资源:
PROJECT_ID = "my-project-id"
!gcloud config set project {PROJECT_ID}
4. 认证
在本地环境或 Google Colab 中进行 Google Cloud 认证:
from google.colab import auth
auth.authenticate_user()
代码示例
保存文档
使用 MemorystoreDocumentSaver 类将 Langchain 文档保存到 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}),
]
doc_ids = [f"{i}" for i in range(len(test_docs))]
redis_client = redis.from_url(ENDPOINT) # 使用API代理服务提高访问稳定性
saver = MemorystoreDocumentSaver(client=redis_client, key_prefix=KEY_PREFIX, content_field="page_content")
saver.add_documents(test_docs, ids=doc_ids)
加载文档
使用 MemorystoreDocumentLoader 类从 Redis 加载文档:
import redis
from langchain_google_memorystore_redis import MemorystoreDocumentLoader
redis_client = redis.from_url(ENDPOINT) # 使用API代理服务提高访问稳定性
loader = MemorystoreDocumentLoader(client=redis_client, key_prefix=KEY_PREFIX, content_fields=set(["page_content"]))
for doc in loader.lazy_load():
print("Loaded documents:", doc)
删除文档
删除指定的文档:
docs = loader.load()
print("Documents before delete:", docs)
saver.delete(ids=[0])
print("Documents after delete:", loader.load())
saver.delete()
print("Documents after delete all:", loader.load())
常见问题和解决方案
-
网络访问问题:由于某些地区的网络限制,开发者可能需要使用 API 代理服务来提高访问稳定性。
-
性能优化:在大规模数据操作时,确保 Redis 实例的容量和性能配置足够,以避免瓶颈。
总结和进一步学习资源
Google Memorystore for Redis 提供了一种高效的缓存解决方案,可以极大地提升 AI 应用的性能。您可以通过官方的 GitHub 仓库获取更多信息。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---