[Google Memorystore for Redis:提升AI应用的缓存性能]

34 阅读2分钟

引言

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())

常见问题和解决方案

  1. 网络访问问题:由于某些地区的网络限制,开发者可能需要使用 API 代理服务来提高访问稳定性。

  2. 性能优化:在大规模数据操作时,确保 Redis 实例的容量和性能配置足够,以避免瓶颈。

总结和进一步学习资源

Google Memorystore for Redis 提供了一种高效的缓存解决方案,可以极大地提升 AI 应用的性能。您可以通过官方的 GitHub 仓库获取更多信息。

参考资料

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

---END---