向量搜索 入门和 LangChain 集成指南。
什么是 Amazon MemoryDB?
MemoryDB 兼容流行的开源数据存储 Redis OSS,使您能够使用他们今天已经使用的相同灵活且友好的 Redis OSS 数据结构、API 和命令快速构建应用程序。使用 MemoryDB,您的所有数据都存储在内存中,这使您能够实现微秒级读取和个位数毫秒级写入延迟以及高吞吐量。MemoryDB 还使用跨多个可用区(AZ)的多 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:// - 连接到使用 TLS 加密的 Redis 集群
有关附加连接参数的更多信息,请参阅 redis-py 文档。
示例数据
首先,我们将描述一些示例数据,以便演示 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 允许用户定义相似文档的最低分数
删除索引
要删除您的条目,您必须通过它们的键来引用它们。
官方原文:src/oss/python/integrations/vectorstores/memorydb.mdx · 非官方翻译,译文由 AI 生成,以英文原文为准。
Last modified on November 3, 2026