跳到主要内容
Open on GitHub

Redis

Redis (远程字典服务器) 是一个开源内存存储,用作分布式内存键值数据库、缓存和消息代理,并具有可选的持久性。由于它将所有数据保存在内存中,并且由于其设计,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 集群连接 URL

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

缓存

缓存包装器允许将 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://:6379"

set_llm_cache(RedisSemanticCache(
embedding=FakeEmbeddings(),
redis_url=redis_url
))
API 参考:set_llm_cache

向量存储

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

from langchain_community.vectorstores import Redis
API 参考:Redis

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

检索器

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

内存

Redis 可用于持久化 LLM 对话。

向量存储检索器内存

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

聊天消息历史内存

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