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 的唯一方法是使用 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://127.0.0.1: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 快取對話訊息歷史記錄的詳細範例,請參閱此筆記本。