通过反向图片查找提升您的电子商务体验
本指南显示了如何为电子商务网站创建视觉搜索功能,从而允许用户上传产品图片以查找视觉上相似的商品并提高产品发现。尽管这通常很复杂,但最近的技术进步使开发准确且可扩展的视觉搜索算法变得更加容易。本指南探讨了这些新技术,例如多模态嵌入模型,并显示了如何使用这些技术来创建直观的视觉搜索功能。通过根据产品图片和文本描述生成嵌入内容,您可以为电子商务平台添加有效的视觉搜索功能。
请注意:[免责声明]
架构图

[架构图描述]
步骤 1
基于时间的 Amazon EventBridge 调度器调用 AWS Lambda 函数,以使用多模态嵌入和产品元数据填充搜索索引。
步骤 2
Lambda 函数首先检索作为 JSON 文件存储在 Amazon Simple Storage Service(Amazon S3)中的产品提要。
步骤 3
然后,Lambda 函数调用托管在 Amazon Bedrock 上的 Amazon Titan 多模态嵌入 G1 模型 ,为目录中的每个产品创建向量嵌入。这些嵌入是根据产品目录中每个商品的主图片和产品描述创建的。
步骤 4
Lambda 函数最终将这些向量嵌入保留为 k 近邻(k-NN)向量,以及向量存储中的产品元数据,例如 Amazon OpenSearch Service、Amazon DocumentDB 或 Amazon Aurora。该索引用作语义图像搜索的来源。
步骤 5
用户通过上传产品图片通过前端应用程序发起视觉搜索请求。
步骤 6
该应用程序使用 Amazon API Gateway REST API 调用预配置的代理 Lambda 函数来处理视觉搜索请求。
步骤 7
获得更好搜索结果的可选步骤:Lambda 函数首先使用 Amazon Bedrock 上托管的 Anthropic Claude 3.5 Sonnet 模型为输入图像生成字幕。
步骤 8
然后,Lambda 函数调用 Titan 多模态嵌入模型。该模型根据用户上传的输入图像和图像字幕(如果在第 7 步中生成)生成多模态嵌入。
步骤 9
然后,Lambda 函数对向量存储索引执行 k-NN 搜索,以查找第 8 步中生成的嵌入的语义相似结果。
步骤 10
然后对从向量存储中检索到的语义搜索结果进行筛选以消除任何重复的条目。然后,使用搜索索引中的产品元数据丰富筛选后的结果,然后再将结果传递回 API Gateway。
步骤 11
最后,来自 API Gateway 的响应将返回到客户端应用程序,然后该应用程序向最终用户显示搜索结果。
Well-Architected 支柱

当您在云中构建系统时,AWS Well-Architected Framework 可以帮助您了解所做决策的利弊。框架的六大支柱使您能够学习设计和操作可靠、安全、高效、经济高效且可持续的系统的架构最佳实践。使用 AWS 管理控制台中免费提供的 AWS Well-Architected Tool,您可以通过回答每个支柱的一组问题,根据这些最佳实践来检查您的工作负载。
上面的架构图是按照 Well-Architected 最佳实践创建的解决方案示例。要做到完全的良好架构,您应该遵循尽可能多的 Well-Architected 最佳实践。
-
卓越运营
AWS X-Ray 在请求通过 API Gateway 流向 Lambda 和 Amazon S3 等基础服务时对其进行跟踪,从而为应用程序的行为提供宝贵的见解。同时,Amazon CloudWatch 捕获架构中涉及的所有服务的指标和日志。通过使用 X-Ray 对这些组件以及 CloudWatch 收集的指标和日志进行可视化和分析,您可以高效地识别性能瓶颈并对请求进行故障排除。
-
安全性
本指南采用多层方法配置,将范围严格界定的 AWS Identity and Access Management(IAM)策略与 API Gateway 的访问控制和 AWS WAF 的威胁缓解措施相结合。这创建了一个强大的安全框架,可以保护应用程序及其底层资源免受潜在的安全威胁。具体而言,IAM 策略的范围限制为每项服务正常运行所需的最低权限,从而有效地限制对资源的未经授权的访问。此外,API Gateway 实施基于 API 密钥的授权来控制 API 访问权限,并与 AWS WAF 集成以防御 Web 漏洞。
-
可靠性
完全托管的无服务器服务提供高可用性和自动扩缩,以满足不断变化的流量需求。例如,Lambda、Amazon OpenSearch 无服务器、API Gateway 和 Amazon S3 会动态调整其容量,而 Amazon Bedrock 则支持预调配的吞吐量,允许您为特定流量选择适当的模型容量单位。这种组合可确保应用程序能够处理不同的负载而不会出现故障,从而最大限度地减少停机时间。这些服务的高可用性和可扩展性,加上微调 Amazon Bedrock 容量的能力,创建了一个强大、可靠的架构,即使在苛刻的条件下也能持续满足请求。
-
性能效率
Amazon Bedrock 和 Lambda 提供多种功能来优化您的工作负载并提高性能效率。借助 Amazon Bedrock,当按需容量不足时,您可以使用预调配吞吐量模式来满足实时推断的高请求量。此外,Amazon Bedrock 还提供批量推理功能,这种功能非常适合初始和计划的批量嵌入创建。Lambda 提供预调配的并发性,它为一定数量的实例预调配 Lambda 执行环境。这有可能减少冷启动次数并改善 Lambda 的执行时间,从而进一步提高应用程序的性能。
-
成本优化
Amazon Bedrock、Amazon S3 和 Lambda 提供各种功能来优化您的成本。作为一项完全托管的服务,Amazon Bedrock 消除了与部署、扩展和管理基础模型相关的运营和管理成本。它通过按需和预调配吞吐量模式提供灵活的定价选项,使您可以选择最具成本效益的计划。Amazon S3 提供不同的存储层和生命周期策略,因此您可以自动在层级之间移动数据并优化存储成本。对于计算资源,Lambda 受计算类节省计划的覆盖,为 Lambda 的执行提供折扣价格。您可以通过选择合适的内存和处理器配置来进一步优化 Lambda 成本。
-
可持续性
Lambda、API Gateway 和 Amazon S3 可根据应用程序的传入流量动态扩展,从而最大限度地提高资源利用率并限制环境影响。这些服务不是预先调配的,因此可以进行有效的资源分配。Lambda 允许您选择最佳的内存、存储和处理器配置,从而进一步最大限度地提高资源效率。使用 Amazon S3,您可以设置生命周期策略以自动删除过时的对象,从而减少不必要的数据存储。这些服务的可扩展性和灵活性可帮助您最大限度地减少资源浪费,降低总体环境足迹。
免责声明
示例代码;软件库;命令行工具;概念验证;模板;或其他相关技术(包括由我方人员提供的任何前述项)作为 AWS 内容按照《AWS 客户协议》或您与 AWS 之间的相关书面协议(以适用者为准)向您提供。您不应将这些 AWS 内容用在您的生产账户中,或用于生产或其他关键数据。您负责根据特定质量控制规程和标准测试、保护和优化 AWS 内容,例如示例代码,以使其适合生产级应用。部署 AWS 内容可能会因创建或使用 AWS 可收费资源(例如,运行 Amazon EC2 实例或使用 Amazon S3 存储)而产生 AWS 费用。
本指南中提及第三方服务或组织并不意味着 Amazon 或 AWS 与第三方之间存在认可、赞助或从属关系。AWS 的指导是一个技术起点,您可以在部署架构时自定义与第三方服务的集成。