Redis(Remote Dictionary Server)是一种开源的内存存储,用作分布式的内存键值数据库、缓存和消息代理,具备可选的持久化功能。
得益于其将所有数据保存在内存中以及设计上的优势,Redis 提供了低延迟的读写操作,非常适合需要缓存的使用场景。
作为目前最流行的 NoSQL 数据库之一,Redis 在全球范围内得到了广泛应用。
本文将详细介绍如何在 LangChain 生态系统中使用 Redis。我们将重点讲解安装与设置,然后介绍一些具体的 Redis 包装器。
安装与设置
安装 Python SDK
首先,我们需要安装 Redis 的 Python SDK:
pip install redis
使用 Docker 本地运行 Redis
为了在本地运行 Redis,推荐使用 Docker:
docker run --name langchain-redis -d -p 6379:6379 redis redis-server --save 60 1 --loglevel warning
要停止容器:
docker stop langchain-redis
要重新启动容器:
docker start langchain-redis
连接 Redis
我们需要一个 Redis URL 连接字符串来连接到数据库,支持独立 Redis 服务器或带有复制和 Redis Sentinel 的高可用性设置。
独立 Redis 连接 URL
对于独立 Redis 服务器,可以使用官方的 Redis 连接 URL 格式,如 Python Redis 模块的 from_url()
方法:
redis_url = "redis://:secret-pass@localhost:6379/0"
Redis Sentinel 连接 URL
对于 Redis Sentinel 设置,连接方案是 redis+sentinel
。这个非官方的扩展方案适用于没有官方的 Sentinel 连接 URL 可用的情况。
redis_url = "redis+sentinel://:secret-pass@sentinel-host:26379/mymaster/0"
该格式是 redis+sentinel://[[username]:[password]]@[host-or-ip]:[port]/[service-name]/[db-number]
。
注意,当前 URL 格式限制连接字符串只能包含一个 Sentinel 主机。
Redis 集群连接 URL
目前对于所有需要 "redis_url" 参数的方法,Redis 集群尚不支持。
使用 Redis 集群唯一的方法是通过接受预先配置的 Redis 客户端的 LangChain 类,例如 RedisCache
(如下所示)。
缓存
缓存包装器允许 Redis 被用作远程的低延迟内存缓存,用于 LLM 提示和响应。
标准缓存
标准缓存是 Redis 在生产环境中的主要使用场景。
from langchain.cache import RedisCache from langchain.globals import set_llm_cache import redis redis_client = redis.Redis.from_url(redis_url) set_llm_cache(RedisCache(redis_client))
语义缓存
语义缓存允许用户基于用户输入和之前缓存结果之间的语义相似性检索缓存提示。在底层,它将 Redis 作为缓存和向量存储使用。
from langchain.cache import RedisSemanticCache from langchain.globals import set_llm_cache import redis from tests.integration_tests.vectorstores.fake_embeddings import FakeEmbeddings redis_url = "redis://localhost:6379" set_llm_cache(RedisSemanticCache( embedding=FakeEmbeddings(), redis_url=redis_url ))
向量存储
向量存储包装器将 Redis 转变为低延迟向量数据库,用于语义搜索或 LLM 内容检索。
from langchain_community.vectorstores import Redis
内存
Redis 可用于持久化 LLM 对话。
总结与进一步学习资源
Redis 作为一种高性能缓存和持久化解决方案,在多个场景下表现出色。
本文介绍了如何安装和设置 Redis,并应用于缓存和内存持久化。通过结合一些具体的示例和官方文档,希望你能更好地掌握 Redis 的使用。
参考资料