Skip to main content
Open on GitHub

Redis

Redis (Remote Dictionary Server) 是一个开源的内存存储, 用作分布式内存键值数据库、缓存和消息代理,并可选择性持久化。 由于它将所有数据保存在内存中以及其设计,Redis 提供了低延迟的读写, 使其特别适合需要缓存的用例。Redis 是最受欢迎的 NoSQL 数据库, 也是最受欢迎的数据库之一。

本页面介绍了如何在 LangChain 中使用 Redis 生态系统。 它分为两部分:安装和设置,然后是特定 Redis 包装器的参考。

安装和设置

安装 Python SDK:

pip install 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 URL 连接字符串来连接数据库,支持独立的 Redis 服务器或具有复制和 Redis Sentinel 的高可用性设置。

Redis 独立连接 URL

对于独立的 Redis 服务器,官方 redis 连接 URL 格式可按照 Python redis 模块的 "from_url()" 方法中所述使用 Redis.from_url

示例:redis_url = "redis://:secret-pass@localhost:6379/0"

Redis Sentinel 连接 URL

对于 Redis sentinel 设置,连接方案是 "redis+sentinel"。 这是对官方 IANA 注册协议方案的非官方扩展,因为目前没有可用的 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] 其中 "service-name" 默认为 "mymaster","db-number" 默认为 0,除非另行设置。 service-name 是 Sentinel 中配置的 Redis 服务器监控组名称。

当前的 URL 格式限制连接字符串只支持一个 sentinel 主机(不能提供列表),并且 Redis 服务器和 sentinel 必须设置相同的密码(如果使用)。

Redis Cluster 连接 URL

目前并非所有需要 "redis_url" 参数的方法都支持 Redis Cluster。 使用 Redis Cluster 的唯一方法是使用接受预配置 Redis 客户端的 LangChain 类,例如 RedisCache (示例如下)。

缓存

Cache 包装器允许将 Redis 用作 LLM 提示和响应的远程、低延迟内存缓存。

标准缓存

标准缓存是 Redis 在生产环境中处理用例的核心功能,全球 开源企业 用户均广泛使用。

from langchain.cache import RedisCache
API Reference:RedisCache

要将此缓存与您的 LLMs 一起使用:

from langchain.globals import set_llm_cache
import redis

redis_client = redis.Redis.from_url(...)
set_llm_cache(RedisCache(redis_client))
API Reference:set_llm_cache

语义缓存

语义缓存允许用户根据用户输入和先前缓存结果之间的语义相似性来检索缓存的提示。它在底层将 Redis 同时用作缓存和向量存储。

from langchain.cache import RedisSemanticCache
API Reference:RedisSemanticCache

要将此缓存与您的 LLMs 一起使用:

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
))
API Reference:set_llm_cache

向量存储

向量存储包装器将 Redis 转换为低延迟的 向量数据库,用于语义搜索或 LLM 内容检索。

from langchain_community.vectorstores import Redis
API Reference:Redis

有关 Redis 向量存储包装器的更详细的演练,请参阅 此笔记本

检索器

Redis 向量存储检索器包装器将向量存储类泛化,以执行 低延迟文档检索。要创建检索器,只需 在基础向量存储类上调用 .as_retriever() 即可。

内存

Redis 可用于持久化 LLM 对话。

向量存储检索器内存

有关 VectorStoreRetrieverMemory 包装器的更详细的演练,请参阅 此笔记本

聊天消息历史记录内存

有关使用 Redis 缓存对话消息历史记录的详细示例,请参阅 此笔记本