Amazon Bedrock 和自定义数据室
在一个 东南亚数字经济博客,我们解释了如何使用 Amazon Bedrock 是一项完全托管的服务,可提供来自领先的 AI 初创公司和亚马逊的高性能基础模型 (FM)。
截至 2024 年 XNUMX 月,Amazon Bedrock 包含以下基础模型:
- Amazon Titan
- Anthropic Claude
- 整合命令和嵌入
- AI21 Labs Jurassic
- Meta Llama 2
- Mistral AI
- 稳定性 AI 稳定扩散 XL
该列表会定期更新新的和改进的模型。
除了基础模型之外,AWS 还通过 Bedrock 工具箱中的其他概念丰富了 Amazon Bedrock.和. 最新的功能允许在知识库和代理的帮助下使用带有基础模型的自定义数据。
当然可以, Mendix 希望保持我们的 Amazon Bedrock 连接器 了解所有最新功能并利用新的 Amazon Bedrock 功能。这就是我们发布连接器 2.3.0 版本的原因,其中包含与知识库和代理相关的几个新操作和示例。
- Mendix Amazon Bedrock 连接器和新操作的顺序
在接下来的章节中,我们将演示使用自定义数据定制 FM 的不同方法。
首先,我们将讨论检索增强生成 (RAG),这是一种从不同数据源获取数据并通过使用知识库丰富提示以提供更相关和更准确的响应的技术。我们将演示如何在使用和不使用 Amazon Bedrock Agents 的情况下将此类 Amazon Bedrock 知识库与 FM 结合使用。
接下来介绍提示工程。提示工程涉及制作高质量的提示,以指导生成 AI模型 产生有意义和连贯的回应。你将看到它如何运用在你的 Mendix 应用程序。
如何设置和使用知识库
知识库的核心是数据。我们将向您展示如何将新数据导入数据源,以及如何使用嵌入模型和目标向量数据库。
如果您想跟踪该过程,请确保您可以访问以下内容:
- 亚马逊控制台
- Amazon Bedrock(截至 2024 年 1 月,知识库和代理在 us-east-2 和 us-west-XNUMX 区域可用)
- Amazon S3
确保还将数据文件添加到 S3。支持以下格式:
- 纯文本 (.txt)
- 降价 (.md)
- 超文本标记语言 (.html)
- Microsoft Word 文档 (.doc/.docx)
- 逗号分隔值(.csv)
- Microsoft Excel 电子表格 (.xls/.xlsx)
- 可移植文档格式 (.pdf)
- 登录到您的 AWS 控制台 并导航至 Amazon Bedrock。
2. 在 编曲配置 部分,选择 知识库, 依次 创建知识库.
3. 为您的知识库命名,如上图所示,然后单击 点击下一页。其他字段可保留默认设置。
4. S选举 S3 桶和 a data 文件, 如下所示。
5. S选举 嵌入模型 这 你想用 和n 创建新的矢量数据库, 或使用现有的.
6. 审查并创建新的数据库。
演示如何使用知识库 Mendix 应用程序,我们将使用两个示例:一个带有检索操作,另一个带有检索和生成操作。如果你想继续,你需要一个 Mendix 应用程序和 Mendix Amazon Bedrock 连接器。
作为替代方案,您还可以查看 Amazon Bedrock 展示应用程序,向您展示了如何使用 Amazon Bedrock Connector 试验不同的基础模型,并使用检索增强生成 (RAG) 使用您的数据对其进行自定义。该应用程序还展示了如何构建使用您自己的数据源执行任务的代理。
设置检索操作
要设置检索操作,您需要以下实体。
检索请求需要知识库 ID、查询文本以及与配置对象的关联.
配置对象应该只包含结果的数量。
该操作将返回 RetrieveResponse 类型的对象,其中包含 RetrievalResult 对象列表,其中包含从知识库中检索到的文本块。该列表最多包含 结果数 条目,其中 结果数 是您在配置对象中指定的数字。
测试检索和生成 操作
使用 Amazon Bedrock Connector,您还可以通过设置类似于下面所示的微流,使用检索和生成操作测试您之前设置的知识库:
RetrieveAndGenerateRequest 对象和 RetrieveAndGenerateConfiguration 对象是必需的。SessionConfiguration 对象是可选对象,如果您需要添加 KmsKeyArn 来描述加密会话的密钥,则可以将其添加到请求中。现在,让我们详细了解必需的对象。
如果您想要继续正在进行的会话,则 RetrieveAndGenerateRequest 对象必须包含您想要查询的输入文本和可选的会话 ID。RetrieveAndGenerateConfiguration 对象必须包含您的知识库 ID、您想要使用的模型的 ModelARN 以及一个名为 RetrieveAndGenerateType 的参数,该参数目前只能具有在对象创建期间设置的枚举值“KNOWLEDGE_BASE”。这些对象之间的关联也必须在 RetrieveAndGenerateConfiguration 对象中设置。
RetrieveAndGenerateResponse 对象将使用知识库中的信息返回生成的输出文本,以回答您的查询。响应对象还将有一个与之关联的 Citation 对象列表,您可以从中找到有关检索到的参考资料和输出生成过程中使用的部分的信息。
让我们更进一步
为了更好地利用“检索和生成”和“调用模型”操作,请更详细地构建查询,以便更好地回答您的问题。提示工程是编写提示的艺术,可以产生更好的响应。通过提示工程,您可以限制、集中, 并调整您期望的响应。例如,您可以向用户提示添加额外数据以供模型使用。这将使您能够在知识库和 LLM 中进行更好的查询,以生成对您的用例有利的响应。
检索和生成与 Amazon Bedrock 代理
您可能想知道在您的应用程序中是否应该使用“检索和生成”或“调用代理”。为了让您全面了解这两个操作,让我们来看看这两个操作中发生了什么。
当您将文档添加到知识库并同步它们时,您的文档首先会被拆分成块(当然,如果您已配置分块方法)。然后,这些块会使用嵌入模型进行转换,并写入向量存储。在此过程中,给定的向量索引会映射到每个块,以便模型可以在需要时找到最相关的块。
虽然这些向量表示是一串数字(嵌入),对我们来说可能没有任何意义,但它们对嵌入模型来说却意义重大。所以不要以为它们只是胡言乱语。保存这些嵌入的向量数据库是使用知识库的所有操作的关键组件。您可以查看下图,以查看我们在官方数据库中找到的向量数据库的数据预处理说明 亚马逊基岩文档.
下图说明了“检索”和“检索并生成”操作。当使用“检索”或“检索并生成”操作进行用户查询时,该查询将使用与知识库创建相同的嵌入模型转换为向量。
然后,将分配给用户查询的向量表示与向量数据库中的向量进行比较,以找到具有语义相似性的块。之后,找到具有相似性的块并将其返回给用户。这部分是直到下图中可以看到的红线为止发生的过程,它描述了检索操作。
之后,将转换后的文本与用户查询一起提供给文本模型,以生成用户的响应。整个过程解释了检索和生成操作。
当您想要使用该操作时,并非所有基础模型都可能是 Amazon Bedrock 中的检索和生成操作的功能。但是,我敢肯定,当计划 A 的效果不如我们想象的那样好时,我们大多数人都不得不找到解决问题的方法。因此,作为开发人员,我们还想出了一个解决方法,以便能够将类似的功能用于 Amazon Bedrock 中可用的任何基础模型。
如上所述,检索和生成操作会从您的知识库中检索相关信息。然后,此信息将与用户查询一起提供给文本模型以生成响应。此功能可以复制并分两个独立步骤完成。
首先,使用检索操作从您的知识库中接收相关信息。然后使用调用模型操作进行后续查询,其中包括收到的相关信息以及您的初始问题。使用此方法确实意味着您需要自己为调用模型操作创建 JSON 请求正文。但是,您可以自由使用 Amazon Bedrock 提供的任何基础模型。
现在让我们通过下面的详细插图来了解调用代理有何不同 Amazon Bedrock Agents 文档.
该操作从用户输入开始。首先,将从提示存储中获取预处理、编排、知识库响应生成和后处理步骤中使用的增强提示。
如果您以前使用过调用代理操作,您可能会想“提示存储?我没有创建任何提示,但操作不知何故却在工作……?”。\ 好吧,在这种情况下您是对的,因为 Amazon Bedrock 从一开始就配置了用于这些步骤的默认提示。但是,这些提示完全可以根据您的应用程序的需求进行配置,这是显示 Amazon Bedrock 中代理灵活性的功能之一。然后,如果您想在查询时记住对话的历史记录,则会根据会话获取历史记录,然后向基础模型发出预处理提示(填写检索到的信息和您的查询)。如果查询被接受为有效输入,则图中显示的循环开始。
该操作将进入循环,并使用先前的信息填写配置的编排提示并调用基础模型。根据解析的响应,插图中的“调用操作”部分将启动。此操作将是什么,完全取决于用户的安排。
与检索和生成不同,代理可以使用多个知识库执行不同的操作,甚至可以使用 Lambda 函数编排任务。可能性是无穷无尽的,不仅限于接收输出。可以使用 Amazon Bedrock 代理的功能将操作设置为继续循环,直到找到预期结果或发生预期操作。这些操作究竟是什么……好吧,我想我们会留到以后的博客中再讨论!
使用 Amazon Bedrock 探索 AI 定制 Mendix
在这篇文章中,我们深入探讨了使用 Amazon Bedrock 和自定义数据定制基础模型这一令人兴奋的领域。 Mendix。借助 AWS 推出的新功能,现在比以往任何时候都更容易将自定义数据整合到基础模型中,丰富提示并生成更相关的响应。通过分步指南,我们展示了如何设置知识库、提取数据以及利用 Mendix 应用程序与 Amazon Bedrock 连接器一起使用,以利用这些技术的强大功能。
此外,我们还比较了“检索和生成”和“调用代理”操作,阐明了它们的差异和功能。虽然“检索和生成”提供了一种检索信息和生成响应的简化方法,但“调用代理”提供了更大的灵活性,允许使用多个知识库、lambda 函数等来编排任务。
查询 Amazon Bedrock 展示应用程序,以概览当前可以使用 Amazon Bedrock Connector 执行的所有操作。借助 Amazon Bedrock 和 Mendix,可能性是无穷无尽的。我们只是触及了人工智能定制和集成领域所能实现的初衷。
本博文由 Agapi 共同撰写 卡拉福利杜 和 Ayça Öner。