向量搜索简介及 LangChain 集成指南。
什么是 Amazon MemoryDB?
MemoryDB 与流行的开源数据存储 Redis OSS 兼容,让您能够使用已熟悉的 Redis OSS 灵活友好的数据结构、API 和命令快速构建应用程序。使用 MemoryDB,所有数据都存储在内存中,从而实现微秒级读取延迟、个位数毫秒级写入延迟和高吞吐量。MemoryDB 还通过多可用区事务日志将数据持久化存储在多个可用区(AZ),以实现快速故障切换、数据库恢复和节点重启。MemoryDB 的向量搜索
MemoryDB 的向量搜索扩展了 MemoryDB 的功能。向量搜索可与现有的 MemoryDB 功能结合使用。不使用向量搜索的应用程序不受其影响。向量搜索在所有 MemoryDB 可用的地区均可使用。您可以使用现有的 MemoryDB 数据或 Redis OSS API 构建机器学习和生成式 AI 用例,例如检索增强生成、异常检测、文档检索和实时推荐。- 在 Redis 哈希和
JSON中对多个字段进行索引 - 向量相似度搜索(使用
HNSW(ANN)或FLAT(KNN)) - 向量范围搜索(例如查找查询向量半径范围内的所有向量)
- 增量索引,无性能损失
设置
安装 Redis Python 客户端
Redis-py 是一个可用于连接 MemoryDB 的 Python 客户端
MemoryDB 连接
有效的 Redis URL 格式:redis://— 连接到 Redis 集群,未加密rediss://— 连接到 Redis 集群,使用 TLS 加密
示例数据
首先,我们将描述一些示例数据,以便展示 Redis 向量存储的各种属性。创建 MemoryDB 向量存储
可以使用以下方法初始化 InMemoryVectorStore 实例:InMemoryVectorStore.__init__— 直接初始化InMemoryVectorStore.from_documents— 从LangChain.docstore.Document对象列表初始化InMemoryVectorStore.from_texts— 从文本列表(可选带元数据)初始化InMemoryVectorStore.from_existing_index— 从现有 MemoryDB 索引初始化
查询
根据使用场景,有多种方式查询InMemoryVectorStore 实现:
similarity_search:查找与给定向量最相似的向量。similarity_search_with_score:查找最相似的向量并返回向量距离。similarity_search_limit_score:查找最相似的向量,并将结果数量限制在score_threshold以内。similarity_search_with_relevance_scores:查找最相似的向量并返回向量相似度。max_marginal_relevance_search:在优化多样性的同时查找与给定向量最相似的向量。
MemoryDB 作为检索器
下面介绍将向量存储用作检索器的不同选项。 我们可以使用三种不同的搜索方法进行检索。默认情况下,使用语义相似度搜索。similarity_distance_threshold 检索器,允许用户指定向量距离
similarity_score_threshold 允许用户定义相似文档的最低分数
删除索引
要删除条目,您必须通过键来指定它们。通过 MCP 将这些文档连接到 Claude、VSCode 等工具,获取实时解答。

