Skip to main content
在 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

对于独立Redisserver,官方的 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 注册协议方案的非官方扩展,只要没有连接 url 即可 适用于 Sentinel。

例: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 集群连接 url

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

缓存

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

标准缓存

标准缓存是全球开源和企业用户在生产中的Redis基本用例。

from langchain.cache import RedisCache
API 参考:RedisCache

要将此缓存用于 LLM,请执行以下作:

from langchain.globals import set_llm_cache
import redis

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

语义缓存

语义缓存允许用户根据用户输入与以前缓存的结果之间的语义相似性检索缓存的提示。在后台,它将 Redis 混合为缓存和矢量存储。

from langchain.cache import RedisSemanticCache
API 参考:RedisSemanticCache

要将此缓存用于 LLM,请执行以下作:

from langchain.globals import set_llm_cache
import redis

# use any embedding provider...
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 参考:set_llm_cache

矢量存储

vectorstore 包装器将 Redis 转变为低延迟矢量数据库,用于语义搜索或 LLM 内容检索。

from langchain_community.vectorstores import Redis
API 参考:Redis

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

Retriever

Redis 向量存储检索器包装器概括了要执行的 vectorstore 类 低延迟文档检索。要创建检索器,只需 叫.as_retriever()在基 VectorStore 类上。

存储

Redis 可用于持久保存 LLM 对话。

Vector Store Retriever 内存

有关VectorStoreRetrieverMemorywrapper 中,请参阅此笔记本

聊天消息历史记录内存

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