Google Memorystore for Redis 是一项完全托管的服务,由 Redis 内存数据存储提供支持,可构建提供亚毫秒级数据访问的应用程序缓存。利用 Memorystore for Redis 的 LangChain 集成,扩展您的数据库应用程序以构建 AI 驱动的体验。本笔记本介绍了如何使用
MemorystoreVectorStore 类将向量嵌入存储到 Memorystore for Redis。 在 GitHub 上了解有关该包的更多信息。 先决条件
开始之前
要运行此 notebook,您需要执行以下操作🦜🔗 库安装
该集成位于其自己的langchain-google-memorystore-redis 包中,因此我们需要安装它。
☁ 设置您的 Google Cloud 项目
设置您的 Google Cloud 项目,以便您可以在此 notebook 中利用 Google Cloud 资源。 如果您不知道您的项目 ID,请尝试以下操作:- 运行
gcloud config list。 - 运行
gcloud projects list。 - 查看支持页面:查找项目 ID。
🔐 身份验证
以登录到此 notebook 的 IAM 用户身份向 Google Cloud 进行身份验证,以访问您的 Google Cloud 项目。- 如果您正在使用 Colab 运行此 notebook,请使用下面的单元格并继续。
- 如果您正在使用 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 实例中的空间。
以编程方式连接这些文档到 Claude、VSCode 等,通过 MCP 获取实时答案。