以编程方式使用文档

>Redis(Remote Dictionary Server,远程字典服务器) 是一个开源的内存存储系统, > 用作分布式内存键值数据库、缓存和消息代理,支持可选的持久化。 > 因为它将所有数据存储在内存中,并且由于其设计, Redis 提供低延迟的读写操作, > 使其特别适用于需要缓存的场景。Redis 是最流行的 NoSQL 数据库, > 也是最受欢迎的数据库之一。

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

安装和设置

安装 Python SDK 和 LangChain Redis 集成包:

pip install redis langchain-redis
uv add redis langchain-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 服务器,可以使用 python redis 模块中描述的官方 redis 连接 URL 格式 "from_url()" 方法 Redis.from_url

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

Redis Sentinel 连接 URL

对于 Redis Sentinel 设置 连接方案是 "redis+sentinel"。 这是对官方 IANA 注册协议方案的非官方扩展,因为目前没有针对 Sentinel 的连接 URL。

Example: 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 是 Redis 服务器监控组名称,在 Sentinel 中配置。

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

Redis 集群连接 URL

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

缓存

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

### 标准缓存 标准缓存是生产环境中 Redis 的核心用例 open-source企业级 用户在全球范围内使用的。

from langchain_redis import RedisCache

要将此缓存与您的 LLM 配合使用:

from langchain.globals import set_llm_cache


redis_client = redis.Redis.from_url(...)
set_llm_cache(RedisCache(redis_client))

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

from langchain_redis import RedisSemanticCache

要将此缓存与您的 LLM 配合使用:

from langchain.globals import set_llm_cache


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

向量存储

Redis 包含向量存储集成,支持低延迟检索、元数据过滤、MMR 以及混合全文和向量搜索。

from langchain_redis import RedisVectorStore

有关详细演练,请参阅 Redis 向量存储集成指南.

检索器

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