在当今时代,组织们收集和存储着海量的结构化和非结构化数据,如报告、白皮书和研究文档。通过整合这些信息,分析师能够发现并整合来自不同部门的数据,创建基于统一数据集的有价值数据产品。对于许多组织来说,这种集中存储的数据湖架构是一个。虽然数据湖提供了一个集中储存库,但理解这些数据并提取出有价值的见解仍然具有挑战性。最终用户往往难以在数据湖中大量文件中找到相关信息,从而导致效率低下和错失机遇。
为了最大化数据资产的价值,将相关信息以简明易懂的格式呈现给最终用户至关重要。自动文档摘要、自然语言处理(NLP)和由驱动的数据分析为这一挑战提供了创新解决方案。通过生成大型文档的简洁摘要、进行情感分析并识别模式和趋势,最终用户可以迅速掌握信息的要点,而无需仔细浏览大量原始数据,从而简化信息消费,并支持更明智的决策。
这就是的用武之地。Amazon Bedrock是一项完全托管的服务,通过单一 API 提供来自 AI21 Labs、Anthropic、Cohere、Meta、Mistral AI、StabilityAI 和 AWS 等领先 AI公司提供的高性能基础模型(FMs)的选择,并提供广泛的能力,以安全、隐私和负责任的方式构建生成式人工智能应用。本文将展示如何通过、 和 将 Amazon Bedrock与 集成,实现一系列数据丰富化任务的自动化,同时成本效益高且可扩展。
AWS 无服务器数据分析管道参考架构提供了一种全面的无服务器解决方案,用于获取、处理和分析数据。在其核心,这一架构的核心是托管在 (Amazon S3) 的集中数据湖,数据湖分为原始、清洗和策划三个区域。原始区域存储来自不同获取源的未修改数据,清洗区域存储经过验证和规范的数据,而策划区域则包含最终的、丰富的数据产品。
在该参考架构的基础上,本解决方案演示了企业如何利用 Amazon Bedrock 来增强其数据资产,通过自动化数据丰富化的方式。具体来说,展示了在 Amazon Bedrock 中可用的强大基础模型如何用于生成非结构化文档的简洁摘要,使最终用户无需深入分析繁琐内容即可快速掌握信息的核心。
丰富化过程始于文档被引入原始区域,此时将生成一个 Amazon S3 事件,启动 Step Functions 工作流。该无服务器工作流协调 Lambda函数,根据文件类型提取文档文本(文本、PDF、Word)。然后,一个 Lambda 函数构建一个负载,包含文档内容并调用 Amazon BedrockRuntime服务,利用最先进的基础模型生成简洁摘要。这些总结将关键见解封装在一起,并与原始内容存储在策划区域,丰富组织的数据资产,以便进一步分析、可视化和基于证据的决策。通过无缝集成的无服务器 AWS 服务,企业能够自动化数据丰富化,释放出价值数据中的新潜力。
这种架构的无服务器特性提供了固有的好处,包括自动扩展、无缝更新和打补丁、全面的监控能力和强大的安全措施,使组织可以将精力集中在创新上,而不是基础设施管理。
以下示意图展示了解决方案架构:
删除)
让我们按时间顺序逐步了解架构的每个环节。
过程是在原始区域写入对象时启动的。在这个例子中,原始区域是一个前缀,也可以是一个桶。Amazon S3 发出对象创建事件,并与 EventBridge规则匹配。事件会调用 Step Functions 状态机。状态机并行运行每个对象,因此架构具有水平扩展性。
Step Functions 状态机提供了一个工作流,用于处理不同文件类型的文本摘要。文件首先根据文件扩展名和相应的 Lambda函数进行预处理。其次,文件由另一个 Lambda 函数处理,以总结预处理后的内容。如果文件类型不被支持,工作流将报告一个错误。工作流包括以下状态:
IngestTextFile
状态。IngestPDFFile
状态。IngestDocFile
状态。UnsupportedFileType
状态并报错。IngestTextFile
、IngestPDFFile
和 IngestDocFile
– 这些是任务状态,调用各自的 Lambda 函数根据文件类型进行采集(或处理)文件。采集文件后,作业将移动到 SummarizeTextFile
状态。SummarizeTextFile
– 这是另一个任务状态,调用 Lambda 函数对采集的文本文件进行摘要。该函数将源键(对象键)和存储桶名称作为输入参数。这是工作流的最终状态。您可以通过使用 或 等服务,扩展此代码示例以处理不同类型的文件,包括音频、图片和视频文件。
Lambda 使您可以运行代码,而无需配置或管理服务器。本解决方案为每种文件类型创建了一个 Lambda函数。这三个函数是一个更大工作流的一部分,该工作流处理上传到 S3 桶的不同类型的文件(Word 文档、PDF和文本文件)。这些函数旨在从这些文件中提取文本内容,处理任何编码问题,并将提取的文本作为新文本文件存储在相同的 S3桶中,使用不同的前缀。函数的具体操作如下:
python-docx
库迭代其段落提取文本内容cleaned
前缀PyPDF2
库通过迭代其页面提取 PDF 文本内容cleaned
前缀chardet
库检测文本文件的编码cleaned
前缀这三种函数遵循相似的模式:
内容提取到 cleaned
前缀后,Step Functions 状态机会启动 Summarize_text
Lambda函数。该函数在设计为生成存储在 S3 桶中文本文件摘要的工作流中的协调者。当被 Step Functions事件调用时,该函数获取源文件的路径和存储桶位置,使用 Boto3 库读取文本内容,并利用 Amazon Bedrock 上的 AnthropicClaude 3 生成简洁摘要。在获得摘要后,函数将原始文本、生成的摘要、模型详细信息和时间戳封装到 JSON 文件中,再上传回同一 S3桶,提供有组织的存储和进一步处理或分析的便捷性。
Amazon Bedrock 提供了一种简单的方法来构建和扩展生成式 AI 应用。Lambda 函数将内容发送到 AmazonBedrock,并指示其进行摘要。Amazon Bedrock Runtime 服务在此用例中发挥了关键作用,使 Lambda 函数能够与 Anthropic Claude 3 模型无缝集成。函数构建了一个 JSON负载,其中包含提示信息,其中包括存储在环境变量中的预定义提示以及输入文本内容,以及最大采样令牌、温度和 top-p 等参数。这个负载被发送到 AmazonBedrock Runtime 服务,该服务调用 Anthropic Claude 3 模型,生成输入文本的简洁摘要。生成的摘要随后被 Lambda函数接收,并纳入最终的 JSON 文件中。
如果您将此解决方案用于您自己的用例,可以自定义以下参数:
modelId
– 您希望 Amazon Bedrock 运行的模型。我们建议您在测试您的用例和数据时使用不同的模型。Amazon Bedrock 提供了许多模型,每个模型都有自己的优势。模型在上下文窗口方面也有所不同,即一次可以发送多少数据。prompt
– 您希望 Anthropic Claude 3 完成的提示。请根据您的用例自定义提示。您可以在以下部分描述的初始部署步骤中设置该提示。max_tokens_to_sample
– 生成的最大令牌数量,当前设置为 300 以控制成本,但您可能希望增加此值。Temperature
– 引入响应的随机性程度。top_p
– 在核采样中,Anthropic 的 Claude 3 根据每个后续令牌的递减概率顺序计算所有选项的累积分布,并在达到 top_p
指定的特定概率时停止。确定特定用例最佳参数的最佳方法是原型设计和测试。幸运的是,可以快速通过使用以下或 Amazon Bedrock 控制台来完成。有关可用模型和参数的更多详细信息,请参阅。
此示例使用 (AWS SAM) 构建和部署,以简化开发和部署。AWS SAM是构建无服务器应用程序的开源框架。它提供了简洁的语法以表达函数、API、数据库和事件源映射。您只需用几行内容定义所需的应用程序,并使用 YAML对其进行建模。在接下来的部分中,我们将引导您通过使用 AWS SAM 进行示例部署的过程,该过程演示了参考架构。
在此演练中,您应准备以下前提条件:
本演练使用 来部署解决方案。CloudShell是 AWS 提供的基于浏览器的shell环境,使您能够直接从 与管理 AWS 资源。它提供了预先验证的命令行接口和预安装的流行工具和实用程序,如 (AWS CLI)、Python、Node.js 和 git。CloudShell 消除了设置和配置本地开发环境或管理 SSH密钥的需求,因为它通过网络浏览器提供对 AWS 服务和资源的安全访问。您可以运行脚本、运行 AWS CLI 命令,并在不离开 AWS控制台的情况下管理您的云基础设施。CloudShell 免费提供,每个 AWS 区域提供 1 GB的持久存储,以便您存储脚本和配置文件。此工具特别适用于快速的管理任务、故障排除和探索 AWS 服务,而无需额外的设置或本地资源。
完成以下步骤以设置 CloudShell 环境:
删除)
如果这是您首次使用 CloudShell,您可能会看到“欢迎使用 AWS CloudShell”页面。
删除)
删除)
如果这是您第一次使用 CloudShell,初始化环境可能需要几分钟的时间。
显示界面类似于适合部署 AWS SAM 示例代码的命令行界面。
删除)
此代码示例可在 Serverless Land 和 GitHub 上获取。按照 GitHub README 中的说明在 CloudShell控制台中进行部署:
collection
cd step-functions-workflows-collection/s3-sfn-lambda-bedrock
sam build
sam deploy –-guided ```
在引导部署过程中,请使用默认值。还要输入堆栈名称。AWS SAM 将部署示例代码。
删除)
运行以下代码以设置所需的前缀结构:
`bash bucket=$(aws s3 ls | grep sam-app | cut -f 3 -d ' ') && for each in raw cleaned curated; do aws s3api put-object --bucket $bucket --key $each/; done`
删除)
示例应用程序现已部署,您可以开始测试。
## 测试解决方案
在此演示中,我们可以通过将文档上传到 `raw` 前缀来启动工作流。在我们的示例中,我们使用来自 的 PDF文件。下载
Leave a Reply