使用Amazon MemoryDB进行向量搜索:引入和Langchain集成指南

引言

Amazon MemoryDB 是一款与 Redis OSS 兼容的内存数据库,提供卓越的读写性能和高吞吐量。通过将内存中的数据持久化到多个可用区,MemoryDB 确保了高可用性和快速恢复。本文将介绍如何在 MemoryDB 上使用向量搜索,并与 Langchain 集成,以支持机器学习和生成式 AI 应用。

主要内容

什么是 Amazon MemoryDB?

MemoryDB 是一个兼容 Redis OSS 的内存数据库,旨在以微秒级读取和毫秒级写入的速度提供高性能和高吞吐量。它使用多可用区的事务日志来保证数据的持久化和快速恢复。

向量搜索的功能

MemoryDB 扩展了其功能以支持向量搜索,能够在保持原有功能的同时,支持检索增强生成、异常检测、文档检索和实时推荐等 AI 应用。

关键功能包括:

  • 支持多字段索引
  • 向量相似性搜索(HNSW 或 FLAT 算法)
  • 向量范围搜索
  • 增量索引而不影响性能

设置向量搜索

安装 Redis Python 客户端

首先安装 Python 客户端,以连接到 MemoryDB:

%pip install --upgrade --quiet redis langchain-aws

借助 langchain_aws 库,我们可以轻松集成 MemoryDB:

from langchain_aws.embeddings import BedrockEmbeddings

embeddings = BedrockEmbeddings()

连接 MemoryDB

支持的 Redis URL 模式有:

  • redis:// - 未加密连接
  • rediss:// - TLS 加密连接

示例数据

以下是将用于演示的示例数据:

metadata = [
    {"user": "john", "age": 18, "job": "engineer", "credit_score": "high"},
    {"user": "derrick", "age": 45, "job": "doctor", "credit_score": "low"},
    # 更多数据...
]
texts = ["foo", "foo", "foo", "bar", "bar"]
index_name = "users"

创建 MemoryDB 向量存储

使用以下方式初始化 MemoryDB 向量存储:

from langchain_aws.vectorstores.inmemorydb import InMemoryVectorStore

vds = InMemoryVectorStore.from_texts(
    embeddings,
    redis_url="rediss://cluster_endpoint:6379/ssl=True ssl_cert_reqs=none" # 使用API代理服务提高访问稳定性
)

vds.index_name # 应输出 "users"

查询

支持多种查询方式:

results = vds.similarity_search("foo")
print(results[0].page_content)

还可以设置得分以返回相似度:

results = vds.similarity_search_with_score("foo", k=5)
for result in results:
    print(f"Content: {result[0].page_content} --- Score: {result[1]}")

常见问题和解决方案

  1. 网络限制问题:在某些地区,可能需要设置 API 代理服务以提高访问稳定性。
  2. 性能问题:通过增量索引功能,MemoryDB 可以保持高性能。
  3. 数据持久化:确保在 Redis URL 中正确配置 TLS 以实现安全连接。

总结和进一步学习资源

Amazon MemoryDB 提供了强大的向量搜索功能,支持 Redis 的现有应用。通过简单的设置和与 Langchain 的集成,开发者可以快速构建复杂的 AI 应用。

进一步学习:

参考资料

  1. Amazon MemoryDB 官方文档
  2. Redis-py 文档

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

—END—

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值