蘑菇加速器苹果版
  • 3

使用 Amazon Bedrock 丰富您的无服务器数据湖 大数据博客

用 Amazon Bedrock 丰富无服务器数据湖

关键要点

组织收集并存储大量结构化和非结构化数据,中央数据湖架构可以帮助分析师整合这些数据,但从中提取有价值的信息仍存在挑战。自动文档摘要、自然语言处理NLP和生成式人工智能为解决信息获取难题提供了创新方案。本文介绍了如何通过 Amazon Bedrock 集成 AWS 无服务器数据分析管道,以高效和可扩展的方式实现数据丰富化。

在当今时代,组织们收集和存储着海量的结构化和非结构化数据,如报告、白皮书和研究文档。通过整合这些信息,分析师能够发现并整合来自不同部门的数据,创建基于统一数据集的有价值数据产品。对于许多组织来说,这种集中存储的数据湖架构是一个数据湖架构。虽然数据湖提供了一个集中储存库,但理解这些数据并提取出有价值的见解仍然具有挑战性。最终用户往往难以在数据湖中大量文件中找到相关信息,从而导致效率低下和错失机遇。

为了最大化数据资产的价值,将相关信息以简明易懂的格式呈现给最终用户至关重要。自动文档摘要、自然语言处理NLP和由生成式人工智能驱动的数据分析为这一挑战提供了创新解决方案。通过生成大型文档的简洁摘要、进行情感分析并识别模式和趋势,最终用户可以迅速掌握信息的要点,而无需仔细浏览大量原始数据,从而简化信息消费,并支持更明智的决策。

这就是Amazon Bedrock的用武之地。Amazon Bedrock 是一项完全托管的服务,通过单一 API 提供来自 AI21 Labs、Anthropic、Cohere、Meta、Mistral AI、Stability AI 和 AWS 等领先 AI 公司提供的高性能基础模型FMs的选择,并提供广泛的能力,以安全、隐私和负责任的方式构建生成式人工智能应用。本文将展示如何通过Amazon EventBridge、AWS Step Functions 和 AWS Lambda 将 Amazon Bedrock与 AWS 无服务器数据分析管道架构集成,实现一系列数据丰富化任务的自动化,同时成本效益高且可扩展。

解决方案概述

AWS 无服务器数据分析管道参考架构提供了一种全面的无服务器解决方案,用于获取、处理和分析数据。在其核心,这一架构的核心是托管在 Amazon Simple Storage Service (Amazon S3) 的集中数据湖,数据湖分为原始、清洗和策划三个区域。原始区域存储来自不同获取源的未修改数据,清洗区域存储经过验证和规范的数据,而策划区域则包含最终的、丰富的数据产品。

在该参考架构的基础上,本解决方案演示了企业如何利用 Amazon Bedrock 来增强其数据资产,通过自动化数据丰富化的方式。具体来说,展示了在 Amazon Bedrock 中可用的强大基础模型如何用于生成非结构化文档的简洁摘要,使最终用户无需深入分析繁琐内容即可快速掌握信息的核心。

丰富化过程始于文档被引入原始区域,此时将生成一个 Amazon S3 事件,启动 Step Functions 工作流。该无服务器工作流协调 Lambda 函数,根据文件类型提取文档文本文本、PDF、Word。然后,一个 Lambda 函数构建一个负载,包含文档内容并调用 Amazon Bedrock Runtime 服务,利用最先进的基础模型生成简洁摘要。这些总结将关键见解封装在一起,并与原始内容存储在策划区域,丰富组织的数据资产,以便进一步分析、可视化和基于证据的决策。通过无缝集成的无服务器 AWS 服务,企业能够自动化数据丰富化,释放出价值数据中的新潜力。

这种架构的无服务器特性提供了固有的好处,包括自动扩展、无缝更新和打补丁、全面的监控能力和强大的安全措施,使组织可以将精力集中在创新上,而不是基础设施管理。

以下示意图展示了解决方案架构:

让我们按时间顺序逐步了解架构的每个环节。

启动

过程是在原始区域写入对象时启动的。在这个例子中,原始区域是一个前缀,也可以是一个桶。Amazon S3 发出对象创建事件,并与 EventBridge 规则匹配。事件会调用 Step Functions 状态机。状态机并行运行每个对象,因此架构具有水平扩展性。

工作流

Step Functions 状态机提供了一个工作流,用于处理不同文件类型的文本摘要。文件首先根据文件扩展名和相应的 Lambda 函数进行预处理。其次,文件由另一个 Lambda 函数处理,以总结预处理后的内容。如果文件类型不被支持,工作流将报告一个错误。工作流包括以下状态:

CheckFileType 工作流以选择状态开始,以检查上传对象的文件扩展名。根据文件扩展名,它将工作流路由到不同的路径:如果文件扩展名为 txt,则转到 IngestTextFile 状态。如果文件扩展名为 pdf,则转到 IngestPDFFile 状态。如果文件扩展名为 docx,则转到 IngestDocFile 状态。如果文件扩展名不符合上述选项,则转到 UnsupportedFileType 状态并报错。IngestTextFile、IngestPDFFile 和 IngestDocFile 这些是任务状态,调用各自的 Lambda 函数根据文件类型进行采集或处理文件。采集文件后,作业将移动到 SummarizeTextFile 状态。SummarizeTextFile 这是另一个任务状态,调用 Lambda 函数对采集的文本文件进行摘要。该函数将源键对象键和存储桶名称作为输入参数。这是工作流的最终状态。

您可以通过使用 Amazon Transcribe 或 Amazon Rekognition 等服务,扩展此代码示例以处理不同类型的文件,包括音频、图片和视频文件。

预处理

Lambda 使您可以运行代码,而无需配置或管理服务器。本解决方案为每种文件类型创建了一个 Lambda 函数。这三个函数是一个更大工作流的一部分,该工作流处理上传到 S3 桶的不同类型的文件Word 文档、PDF 和文本文件。这些函数旨在从这些文件中提取文本内容,处理任何编码问题,并将提取的文本作为新文本文件存储在相同的 S3 桶中,使用不同的前缀。函数的具体操作如下:

Word 文档处理函数:从 S3 桶下载 Word 文档docx文件使用 pythondocx 库迭代其段落提取文本内容将提取的文本作为新文本文件txt存储在相同的 S3 桶中,并使用 cleaned 前缀PDF 处理函数:从 S3 桶下载 PDF 文件使用 PyPDF2 库通过迭代其页面提取 PDF 文本内容将提取的文本作为新文本文件txt存储在相同的 S3 桶中,并使用 cleaned 前缀文本文件处理函数:从 S3 桶下载文本文件使用 chardet 库检测文本文件的编码使用检测到的编码解码文本内容如果无法检测,则使用 UTF8将解码的文本内容编码为 UTF8将 UTF8 编码的文本存储为新文本文件txt在相同的 S3 桶中,并用 cleaned 前缀

这三种函数遵循相似的模式:

从 S3 桶下载源文件。处理文件以提取或转换文本内容。将提取和转换的文本作为新文本文件存储在相同的 S3 桶中,使用不同的前缀。返回指示操作成功和输出文本文件位置的响应。

处理

内容提取到 cleaned 前缀后,Step Functions 状态机会启动 Summarizetext Lambda 函数。该函数在设计为生成存储在 S3 桶中文本文件摘要的工作流中的协调者。当被 Step Functions 事件调用时,该函数获取源文件的路径和存储桶位置,使用 Boto3 库读取文本内容,并利用 Amazon Bedrock 上的 Anthropic Claude 3 生成简洁摘要。在获得摘要后,函数将原始文本、生成的摘要、模型详细信息和时间戳封装到 JSON 文件中,再上传回同一 S3 桶,提供有组织的存储和进一步处理或分析的便捷性。

总结

Amazon Bedrock 提供了一种简单的方法来构建和扩展生成式 AI 应用。Lambda 函数将内容发送到 Amazon Bedrock,并指示其进行摘要。Amazon Bedrock Runtime 服务在此用例中发挥了关键作用,使 Lambda 函数能够与 Anthropic Claude 3 模型无缝集成。函数构建了一个 JSON 负载,其中包含提示信息,其中包括存储在环境变量中的预定义提示以及输入文本内容,以及最大采样令牌、温度和 topp 等参数。这个负载被发送到 Amazon Bedrock Runtime 服务,该服务调用 Anthropic Claude 3 模型,生成输入文本的简洁摘要。生成的摘要随后被 Lambda 函数接收,并纳入最终的 JSON 文件中。

如果您将此解决方案用于您自己的用例,可以自定义以下参数:

modelId 您希望 Amazon Bedrock 运行的模型。我们建议您在测试您的用例和数据时使用不同的模型。Amazon Bedrock 提供了许多模型,每个模型都有自己的优势。模型在上下文窗口方面也有所不同,即一次可以发送多少数据。prompt 您希望 Anthropic Claude 3 完成的提示。请根据您的用例自定义提示。您可以在以下部分描述的初始部署步骤中设置该提示。maxtokenstosample 生成的最大令牌数量,当前设置为 300 以控制成本,但您可能希望增加此值。Temperature 引入响应的随机性程度。topp 在核采样中,Anthropic 的 Claude 3 根据每个后续令牌的递减概率顺序计算所有选项的累积分布,并在达到 topp 指定的特定概率时停止。

确定特定用例最佳参数的最佳方法是原型设计和测试。幸运的是,可以快速通过使用以下代码示例或 Amazon Bedrock 控制台来完成。有关可用模型和参数的更多详细信息,请参阅Anthropic Claude 文本补全 API。

AWS SAM 模板

此示例使用 AWS 无服务器应用程序模型 (AWS SAM) 构建和部署,以简化开发和部署。AWS SAM 是构建无服务器应用程序的开源框架。它提供了简洁的语法以表达函数、API、数据库和事件源映射。您只需用几行内容定义所需的应用程序,并使用 YAML 对其进行建模。在接下来的部分中,我们将引导您通过使用 AWS SAM 进行示例部署的过程,该过程演示了参考架构。

先决条件

在此演练中,您应准备以下前提条件:

一个 AWS 账户访问 Amazon Bedrock 上的 Anthropic Claude 3

设置环境

本演练使用 AWS CloudShell 来部署解决方案。CloudShell 是 AWS 提供的基于浏览器的shell环境,使您能够直接从 AWS 管理控制台 与管理 AWS 资源。它提供了预先验证的命令行接口和预安装的流行工具和实用程序,如 AWS 命令行界面 (AWS CLI)、Python、Nodejs 和 git。CloudShell 消除了设置和配置本地开发环境或管理 SSH 密钥的需求,因为它通过网络浏览器提供对 AWS 服务和资源的安全访问。您可以运行脚本、运行 AWS CLI 命令,并在不离开 AWS 控制台的情况下管理您的云基础设施。CloudShell 免费提供,每个 AWS 区域提供 1 GB 的持久存储,以便您存储脚本和配置文件。此工具特别适用于快速的管理任务、故障排除和探索 AWS 服务,而无需额外的设置或本地资源。

完成以下步骤以设置 CloudShell 环境:

蘑菇加速器官网正版安装打开 CloudShell 控制台。

如果这是您首次使用 CloudShell,您可能会看到“欢迎使用 AWS CloudShell”页面。

选择在您的区域打开环境的选项根据您账户的主要区域,可能会列出不同的区域。

如果这是您第一次使用 CloudShell,初始化环境可能需要几分钟的时间。

使用 Amazon Bedrock 丰富您的无服务器数据湖 大数据博客

显示界面类似于适合部署 AWS SAM 示例代码的命令行界面。

下载并部署解决方案

此代码示例可在 Serverless Land 和 GitHub 上获取。按照 GitHub README 中的说明在 CloudShell 控制台中进行部署:

bashgit clone https//githubcom/awssamples/stepfunctionsworkflowscollection

cd stepfunctionsworkflowscollection/s3sfnlambdabedrock

sam build

sam deploy guided

在引导部署过程中,请使用默认值。还要输入堆栈名称。AWS SAM 将部署示例代码。

运行以下代码以设置所需的前缀结构:

bashbucket=(aws s3 ls grep samapp cut f 3 d ) ampamp for each in raw cleaned curated do aws s3api putobject bucket bucket key each/ done

示例应用程序现已部署,您可以开始测试。

测试解决方案

在此演示中,我们可以通过将文档上传到 raw 前缀来启动工作流。在我们的示例中,我们使用来自 AWS Prescriptive Guidance portal 的 PDF 文件。下载