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"。只要没有可用于 Sentinel 的连接 URL,这就是对官方 IANA 注册协议方案的非官方扩展。
示例: 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
(如下例所示)。
缓存
缓存包装器允许将 Redis 用作 LLM 提示和响应的远程、低延迟、内存缓存。
标准缓存
标准缓存是 开源 和 企业 用户在全球生产环境中使用的 Redis 的核心用例。
from langchain.cache import RedisCache
要将此缓存与您的 LLM 一起使用
from langchain.globals import set_llm_cache
import redis
redis_client = redis.Redis.from_url(...)
set_llm_cache(RedisCache(redis_client))
语义缓存
语义缓存允许用户根据用户输入和先前缓存结果之间的语义相似性来检索缓存的提示。在底层,它将 Redis 混合用作缓存和向量存储。
from langchain.cache import 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
))
向量存储
向量存储包装器将 Redis 变成一个低延迟的 向量数据库,用于语义搜索或 LLM 内容检索。
from langchain_community.vectorstores import Redis
有关 Redis 向量存储包装器的更详细的演练,请参阅此笔记本。
检索器
Redis 向量存储检索器包装器概括了向量存储类以执行低延迟文档检索。要创建检索器,只需在基本向量存储类上调用 .as_retriever()
即可。
内存
Redis 可用于持久化 LLM 对话。
向量存储检索器内存
有关 VectorStoreRetrieverMemory
包装器的更详细的演练,请参阅 此笔记本。
聊天消息历史记录内存
有关使用 Redis 缓存对话消息历史记录的详细示例,请参阅此笔记本。