Google Memorystore for Redis 是一种完全托管的服务,由 Redis 内存数据存储提供支持,用于构建提供亚毫秒级数据访问的应用程序缓存。通过 Memorystore for Redis 的 LangChain 集成,扩展您的数据库应用以构建 AI 驱动的体验。本笔记本介绍如何使用
MemorystoreVectorStore 类通过 Memorystore for Redis 存储向量嵌入。
在 GitHub 上了解更多关于该包的信息。
前提条件
开始之前
要运行此笔记本,您需要完成以下操作:🦜🔗 库安装
集成位于其自己的langchain-google-memorystore-redis 包中,因此我们需要安装它。
☁ 设置您的 Google Cloud 项目
设置您的 Google Cloud 项目,以便在此笔记本中使用 Google Cloud 资源。 如果您不知道项目 ID,请尝试以下方法:- 运行
gcloud config list。 - 运行
gcloud projects list。 - 查看支持页面:找到项目 ID。
🔐 身份验证
以登录此笔记本的 IAM 用户身份向 Google Cloud 进行身份验证,以便访问您的 Google Cloud 项目。- 如果您使用 Colab 运行此笔记本,请使用以下单元格并继续。
- 如果您使用 Vertex AI Workbench,请查看此处的设置说明。
基本用法
初始化向量索引
准备文档
在与向量存储交互之前,文本需要处理和数值表示。这涉及:- 加载文本:
TextLoader从文件(例如 “state_of_the_union.txt”)获取文本数据。 - 文本分割:
CharacterTextSplitter将文本分割成较小的块以用于嵌入模型。
将文档添加到向量存储
文本准备和嵌入生成之后,以下方法将它们插入 Redis 向量存储。方法 1:直接插入的类方法
此方法使用from_documents 类方法将嵌入创建和插入合并为一步:
方法 2:基于实例的插入
此方法在处理新的或现有的 RedisVectorStore 时提供更大的灵活性:- [可选] 创建 RedisVectorStore 实例:实例化 RedisVectorStore 对象进行自定义。如果您已有实例,请继续下一步。
- 添加带元数据的文本:向实例提供原始文本和元数据。嵌入生成和插入向量存储将自动处理。
执行相似度搜索(KNN)
向量存储填充完毕后,可以搜索与查询语义相似的文本。以下是使用默认设置进行 KNN(K 近邻)搜索的方法:- 制定查询:用自然语言问题表达搜索意图(例如,“总统对 Ketanji Brown Jackson 说了什么”)。
- 检索相似结果:
similarity_search方法在向量存储中找到与查询含义最接近的项目。
执行基于范围的相似度搜索
范围查询通过指定期望的相似度阈值以及查询文本,提供更多控制:- 制定查询:用自然语言问题定义搜索意图。
- 设置相似度阈值:
distance_threshold参数确定匹配被认为相关的紧密程度。 - 检索结果:
similarity_search_with_score方法从向量存储中找到落在指定相似度阈值内的项目。
执行最大边际相关性(MMR)搜索
MMR 查询旨在找到既与查询相关又彼此多样化的结果,减少搜索结果中的冗余。- 制定查询:用自然语言问题定义搜索意图。
- 平衡相关性和多样性:
lambda_mult参数控制严格相关性和促进结果多样性之间的权衡。 - 检索 MMR 结果:
max_marginal_relevance_search方法返回根据 lambda 设置优化相关性和多样性组合的项目。
将向量存储用作检索器
为了与其他 LangChain 组件无缝集成,可以将向量存储转换为检索器。这提供了几个优势:- LangChain 兼容性:许多 LangChain 工具和方法设计为直接与检索器交互。
- 易于使用:
as_retriever()方法将向量存储转换为简化查询的格式。
清理
从向量存储删除文档
有时需要从向量存储中删除文档(及其关联的向量)。delete 方法提供此功能。
删除向量索引
在某些情况下,可能需要删除现有的向量索引。常见原因包括:- 索引配置更改:如果需要修改索引参数,通常需要删除并重新创建索引。
- 存储管理:删除未使用的索引可以帮助释放 Redis 实例中的空间。
Connect these docs to Claude, VSCode, and more via MCP for real-time answers.

