【RAG】【embeddings42】Amazon SageMaker 嵌入端点集成案例
案例目标
本案例展示如何通过 LlamaIndex 与 Amazon SageMaker 嵌入端点进行交互,实现文本向量化功能。Amazon SageMaker 端点是一种完全托管的资源,支持部署机器学习模型,对新数据进行预测。
通过本案例,您将学习如何:
- 配置和连接到 Amazon SageMaker 嵌入端点
- 使用 SageMakerEmbedding 类生成文本嵌入向量
- 处理单个和批量文本的向量化请求
- 验证嵌入向量的维度和数值
技术栈与核心依赖
llama-index-embeddings-sagemaker-endpoint Amazon SageMaker AWS SDK (boto3) Python 3.7+
核心组件说明
- SageMakerEmbedding- LlamaIndex 中用于与 Amazon SageMaker 嵌入端点交互的类
- SageMaker Endpoint- Amazon 提供的完全托管的机器学习模型部署服务
- AWS Credentials- 用于访问 AWS 服务的身份验证信息
环境配置
1. 安装依赖
pip install llama-index-embeddings-sagemaker-endpoint
pip install llama-index
2. 准备 SageMaker 嵌入端点
在使用本案例之前,您需要:
- 在 AWS 控制台中创建一个 SageMaker 嵌入端点
- 获取端点名称和区域信息
- 配置适当的 AWS 访问凭证
3. 配置 AWS 凭证
您可以通过以下两种方式配置 AWS 凭证:
方式一:使用 AWS 配置文件
from llama_index.embeddings.sagemaker_endpoint import SageMakerEmbedding
ENDPOINT_NAME = "<-YOUR-ENDPOINT-NAME->"
PROFILE_NAME = "<-YOUR-PROFILE-NAME->"
embed_model = SageMakerEmbedding(
endpoint_name=ENDPOINT_NAME, profile_name=PROFILE_NAME
)
方式二:直接传递凭证参数
from llama_index.embeddings.sagemaker_endpoint import SageMakerEmbedding
ENDPOINT_NAME = "<-YOUR-ENDPOINT-NAME->"
AWS_ACCESS_KEY_ID = "<-YOUR-AWS-ACCESS-KEY-ID->"
AWS_SECRET_ACCESS_KEY = "<-YOUR-AWS-SECRET-ACCESS-KEY->"
AWS_SESSION_TOKEN = "<-YOUR-AWS-SESSION-TOKEN->"
REGION_NAME = "<-YOUR-ENDPOINT-REGION-NAME->"
embed_model = SageMakerEmbedding(
endpoint_name=ENDPOINT_NAME,
aws_access_key_id=AWS_ACCESS_KEY_ID,
aws_secret_access_key=AWS_SECRET_ACCESS_KEY,
aws_session_token=AWS_SESSION_TOKEN,
region_name=REGION_NAME,
)
案例实现
1. 导入必要模块
from llama_index.embeddings.sagemaker_endpoint import SageMakerEmbedding
2. 初始化 SageMaker 嵌入模型
# 使用凭证参数初始化
embed_model = SageMakerEmbedding(
endpoint_name=ENDPOINT_NAME,
aws_access_key_id=AWS_ACCESS_KEY_ID,
aws_secret_access_key=AWS_SECRET_ACCESS_KEY,
aws_session_token=AWS_SESSION_TOKEN,
region_name=REGION_NAME,
)
注意:请将 ENDPOINT_NAME、AWS_ACCESS_KEY_ID 等占位符替换为您的实际值。
3. 生成单个文本的嵌入
embeddings = embed_model.get_text_embedding(
"An Amazon SageMaker endpoint is a fully managed resource that enables the deployment of machine learning models, specifically LLM (Large Language Models), for making predictions on new data."
)
4. 检查嵌入结果
# 查看嵌入向量的前5个值
embeddings[:5]
# 输出示例: [0.021565623581409454, 0.019147753715515137, -0.056700449436903, -0.022435730323195457, -0.03930153697729111]
5. 生成批量文本的嵌入
embeddings = embed_model.get_text_embedding_batch(
[
"An Amazon SageMaker endpoint is a fully managed resource that enables the deployment of machine learning models",
"Sagemaker is integrated with llamaIndex",
]
)
# 检查结果数量
len(embeddings)
# 输出: 2
案例效果
本案例成功实现了以下功能:
- 成功连接到 Amazon SageMaker 嵌入端点
- 生成了高质量的文本嵌入向量
- 展示了单个和批量文本的向量化处理
- 验证了嵌入向量的维度和数值范围
输出示例
# 单个文本嵌入向量的前5个值
[0.021565623581409454, 0.019147753715515137, -0.056700449436903, -0.022435730323195457, -0.03930153697729111]
# 批量文本嵌入结果数量
2
案例实现思路
本案例的实现遵循以下思路:
- 环境准备:安装必要的依赖库,配置 AWS 凭证
- 模型初始化:使用 SageMakerEmbedding 类初始化嵌入模型,指定端点名称和凭证
- 单文本处理:使用 get_text_embedding 方法对单个文本进行向量化
- 批量文本处理:使用 get_text_embedding_batch 方法对多个文本进行批量向量化
- 结果验证:检查嵌入向量的维度和数值,确保结果正确
关键点
- Amazon SageMaker 提供完全托管的机器学习模型部署服务,简化了模型部署和扩展
- 支持两种凭证配置方式:AWS 配置文件和直接传递凭证参数
- API 设计简洁,与 LlamaIndex 框架无缝集成
- 支持单个和批量文本处理,提高处理效率
扩展建议
基于本案例,您可以进行以下扩展:
- 向量存储:将生成的嵌入向量存储到向量数据库(如 Amazon OpenSearch Service)中,构建语义搜索系统
- 相似度计算:使用生成的向量计算文本之间的相似度,实现文档聚类或推荐系统
- 异步处理:对于大规模文本处理,可以使用异步方法提高处理效率
- 缓存机制:实现嵌入向量缓存,避免重复计算相同文本的向量
- 模型优化:根据特定需求,使用 SageMaker 模型优化功能(如模型量化、蒸馏)提高性能
- 端点扩展:使用 SageMaker 多模型端点功能,在一个端点部署多个嵌入模型
- 监控与日志:集成 Amazon CloudWatch 监控端点性能,使用 SageMaker 模型监控跟踪模型质量
总结
本案例成功展示了如何使用 LlamaIndex 集成 Amazon SageMaker 嵌入端点,实现文本向量化功能。Amazon SageMaker 端点作为一种完全托管的资源,使机器学习模型的部署和扩展变得更加简单。
通过本案例,您学会了:
- 如何配置和连接到 Amazon SageMaker 嵌入端点
- 如何使用 SageMakerEmbedding 类初始化嵌入模型
- 如何对单个和批量文本进行向量化处理
- 如何验证嵌入向量的维度和数值
这些技能为构建更复杂的 AI 应用程序(如语义搜索、问答系统、文档检索等)奠定了基础,同时充分利用了 Amazon SageMaker 的托管服务优势。
