随着无服务器架构的流行,开发者越来越希望在不增加数据库管理复杂性的情况下,构建强大的应用程序。Upstash 正好提供了这样的解决方案。其无服务器数据库和消息平台不仅支持 HTTP 通信,还能完美运行在不支持 TCP 连接的平台上,如边缘计算平台。
在与 LangChain 的集成方面,Upstash 提供了两种主要服务:Upstash Vector 和 Upstash Redis。Upstash Vector 用于向量嵌入数据库,而 Upstash Redis 则被用作缓存和内存存储服务。
Upstash Vector 的核心功能
Upstash Vector 是一个无服务器的向量数据库,支持向量的存储和查询。其安装和集成过程如下。
安装及配置
首先,在 Upstash 控制台上创建一个新的无服务器向量数据库,并根据模型选择适合的距离度量和维度。
pip install upstash-vector
创建 UpstashVectorStore
对象,同时传入从 Upstash 控制台获取的凭据,并需要一个将文本转换为向量嵌入的 Embeddings
对象:
from langchain_community.vectorstores.upstash import UpstashVectorStore
import os
os.environ["UPSTASH_VECTOR_REST_URL"] = "<UPSTASH_VECTOR_REST_URL>"
os.environ["UPSTASH_VECTOR_REST_TOKEN"] = "<UPSTASH_VECTOR_REST_TOKEN>"
store = UpstashVectorStore(
embedding=True # 自动处理文本的嵌入
)
使用命名空间
命名空间可以帮助在索引中分区数据,以提高查询速度。当处理大量数据时尤其有用。
store = UpstashVectorStore(
embedding=True,
namespace="my_namespace"
)
插入与查询向量
向量可以通过文本查询或其他向量进行查询。下例展示了通过文本进行相似性搜索:
result = store.similarity_search(
"The United States of America",
k=5
)
也可以通过向量进行查询:
vector = embeddings.embed_query("Hello world")
result = store.similarity_search_by_vector(
vector,
k=5
)
Upstash Redis 的集成
Upstash Redis 可以用作 LLM 提示和响应的缓存。安装及设置如下:
pip install upstash-redis
配置 LangChain 使用 Upstash Redis 进行缓存:
import langchain
from upstash_redis import Redis
URL = "<UPSTASH_REDIS_REST_URL>"
TOKEN = "<UPSTASH_REDIS_REST_TOKEN>"
langchain.llm_cache = UpstashRedisCache(redis_=Redis(url=URL, token=TOKEN))
此外,Upstash Redis 也支持作为聊天信息存储,具体使用方式如下:
from langchain_community.chat_message_histories import (
UpstashRedisChatMessageHistory,
)
利用 Upstash 的这些服务,开发者可以轻松实现高效、无服务器的数据库和消息平台集成,以支持广泛的应用场景。如果遇到问题欢迎在评论区交流。
—END—