关键字: [Amazon Bedrock, Similarity Search, Genai Engine, Data Embeddings, Vector Store, Large Language Models, Amazon Bedrock, Amazon Appsync, Graphql Service, Data Orchestration, Semantic Queries]
本文字数: 1700, 阅读完需: 8 分钟
导读
在一场亚马逊云科技活动上,演讲者阐述了如何借助Amazon Bedrock和亚马逊云科技AppSync构建相似性搜索引擎。具体而言,该过程包括查找并将数据嵌入到向量存储中、获取用户提示并生成嵌入、查询向量存储,并通过基础模型返回结果。演讲重点介绍了Amazon Bedrock如何从各种数据源生成嵌入、亚马逊云科技AppSync如何编排和保护数据访问,以及两者结合可以构建现代语义搜索应用程序,并支持GenAI和检索增强生成。
演讲精华
在这全面的视频教程中,Derek作为云技术专家,详细地指导观众如何利用Amazon Bedrock和Amazon AppSync构建相似性搜索引擎。他清晰的解释和一步一步的演示揭示了各种亚马逊云科技(Amazon Web Services)产品之间的复杂交互,最终构建了一个强大的应用程序,能够检索与用户搜索查询相似的项目。
Derek首先阐释了相似性搜索或语义搜索的概念,这是一种复杂的技术,用于检索与用作提示的搜索字符串相似的项目。他敏锐地认识到”GenAI代理”、“RAG”(Retrieval Augmented Generation)和”相似性搜索”等术语在现代软件开发领域日益重要,强调了它们与手头的任务的相关性。
Derek细致入微地阐述了利用GenAI和RAG构建语义搜索引擎所需的六个基本步骤:
- 识别并将相关数据传输到嵌入模型。这些数据可以来自多种外部来源,包括文档、图像、网址、数据库和专有数据存储库。
- 使用大型语言模型(LLM)从数据生成嵌入,并将生成的浮点数数组存储在向量存储中。这一步骤还可能涉及分块,即将大型数据集分割为更易于索引的较小段。
- 使用嵌入模型将用户输入的提示转换为浮点数数组。
- 将步骤3的结果作为语义查询应用于向量存储。
- 使用步骤4的结果和原始用户提示作为基础模型的输入。
- 向发起原始搜索查询的用户呈现最终结果。
Derek明智地强调了大型语言模型(LLMs)在这一过程中的关键作用,因为它们对于从数据生成嵌入和解释用户提示至关重要。他赞赏Amazon Bedrock提供对大量LLM的API访问,从而使用户能够审慎地选择最适合其特定需求的模型。
然而,Derek的专长不仅局限于LLM领域,他强调了在语义搜索应用程序后端的众多数据源中编排和控制访问权限的重要性。这就是Amazon AppSync(一种托管的GraphQL服务)出场的地方。Derek阐明了AppSync如何让开发者能够以前所未有的轻松方式构建、部署和管理他们的GraphQL模式、解析器和数据源。
Derek解释道,GraphQL是构建代理和RAG的绝佳解决方案,因为它能够跨多个数据源整合数据,同时还能对从每个单独数据源检索的数据进行细粒度控制。此外,AppSync的缓存功能有助于减少响应时间,进一步提高应用程序的整体性能。
为了说明六个步骤与Amazon AppSync之间的相互作用,Derek描绘了在利用AppSync处理用户请求和访问应用程序各种数据源时,该过程将如何展开:
- 数据被转换为嵌入向量。
- 生成的嵌入向量被加载到PostgreSQL数据库中。
- 用户直接与Amazon AppSync端点交互。
- Amazon AppSync通过为每个源定义解析器来控制用户如何连接和调用各种数据源。这就是可以实现缓存以优化应用程序性能的地方。
理论基础奠定之后,Derek转向实际演示,分三个阶段构建了一个相似性搜索应用程序:
- 创建PostgreSQL数据存储,启用向量数据库功能,并从开源数据存储库Kaggle导入包含Amazon产品数据的CSV文件。
- 使用Amazon Bedrock从产品数据生成嵌入向量,并将结果持久化到前一步骤中创建的PostgreSQL向量存储中。
- 部署Amazon AppSync实例,建立与数据源的连接并公开查询。用户后续将调用这些查询来搜索向量数据存储,并检索与指定搜索词相似的产品。
在演示中,Derek利用了强大的集成开发环境Visual Studio Code,以及亚马逊云科技云开发工具包(CDK),这是一个使用熟悉的编程语言定义和供应云应用程序资源的强大框架。
最初的步骤是部署RDS堆栈,它提供了一个Amazon Aurora PostgreSQL实例。然后,Derek连接到数据库控制台,在PostgreSQL中启用向量扩展,并验证其成功执行,为后续阶段奠定基础。
接下来,Derek执行导入数据堆栈,该堆栈检索CSV产品数据并生成相应的嵌入向量。该堆栈利用之前部署的RDS堆栈的输出,并在Fargate模式下提供Amazon Elastic Container Service (ECS)集群来协调各种任务的执行。
第一个任务名为”生成嵌入”,是一个在容器化环境中运行的Python脚本。它使用Amazon Titan模型从包含产品数据的CSV文件中生成嵌入向量。生成的嵌入向量随后输出到一个名为”embeddings.csv”的新CSV文件中。
该任务的第二个组成部分是将嵌入CSV文件导入新创建的PostgreSQL数据库。代码解析嵌入CSV文件,检索数据库连接信息,并执行SQL语句将数据插入数据库,包括嵌入向量列。
在成功部署导入数据堆栈后,Derek验证了产品数据和相应的嵌入向量已经准确地被摄取到PostgreSQL数据库中。
最后一个阶段是部署AppSync堆栈,这个过程需要定义GraphQL模式、数据源和解析器。该模式反映了数据存储的结构,包括产品ID和产品信息,并包含两个查询:“getProductById”和”getProductBySimilaritySearch”。
“getProductBySimilaritySearch”查询调用一个Lambda函数,该函数封装了执行相似性搜索的核心逻辑。Derek仔细检查了支撑这个Lambda函数的Python代码,该代码定义了嵌入向量、建立数据库连接,并构造一个SQL”LIKE”查询来执行相似性搜索。
在成功部署了 AppSync 堆栈后,Derek 导航到 Amazon AppSync 控制台,以验证部署并测试查询。他执行了 “getProductBySimilaritySearch” 查询,搜索词为 “batteries”,并观察到返回的与指定词相似的产品信息。
为了提供一个用户友好的界面,Derek 使用内省这一强大的技术从 GraphQL 模式生成必要的查询,该技术允许在运行时探索模式。然后,他构建了一个简单的 React 应用程序,该应用程序调用 Amazon AppSync 端点并向用户显示搜索结果。
在视频的结尾部分,Derek 简洁地总结了演示的成就:成功构建了一个相似性搜索应用程序,该应用程序查询亚马逊产品数据并返回与指定搜索词相似的项目。他强调了 Amazon AppSync 作为数据门户的关键作用,以及 Amazon Bedrock 为应用程序提供大型语言模型接口的重要性。
Derek 承认,该演示并未涵盖在 Amazon AppSync 中实现缓存或在 Amazon DynamoDB 中跟踪搜索历史记录,这两者可能会提高应用程序的性能和功能。如果观众有兴趣观看后续视频,深入探讨这些进阶功能的实现,他邀请观众在评论区提供反馈。
最后,Derek 鼓励观众订阅亚马逊云科技 Developers 频道,并在视频描述中提供了一系列精心策划的链接,以帮助有兴趣构建自己的相似性搜索应用程序的观众。
总之,这个视频教程提供了一个全面且精心制作的构建相似性搜索应用程序的过程演练。它无缝地集成了各种亚马逊云科技服务,包括 Amazon Bedrock 用于生成嵌入、PostgreSQL 作为向量数据存储,以及 Amazon AppSync 作为 GraphQL 服务来协调数据访问并向客户端应用程序公开查询。Derek 的专业知识和对细节的关注,确保观众对底层概念和实际实现策略有深刻的理解,使他们能够踏上相似性搜索和语义搜索应用程序的旅程。
总结
在这个富有洞见的演讲中,Derek揭示了使用Amazon Bedrock和AppSync构建强大相似性搜索引擎的分步指南。他首先介绍了语义搜索的概念,这是一种检索与用户搜索查询高度相似的项目的技术,是现代GENAI和检索增强生成(RAG)系统的关键组成部分。
这个六步流程包括从各种来源查找和嵌入数据,将用户提示转换为嵌入,查询向量存储,并利用基础模型生成最终结果。值得注意的是,Amazon Bedrock提供了访问大型语言模型(LLM)的能力,这对于创建和解释嵌入至关重要。
接下来,Derek强调了Amazon AppSync的作用,这是一种托管的GRAPHQL服务,可简化数据整合、访问控制和缓存,从而提高语义搜索应用程序的整体效率和安全性。演示演练了实际实现,包括创建Postgres向量存储、使用Bedrock生成嵌入以及部署AppSync实例来公开搜索查询。
总的来说,这个演讲让观众全面了解了构建一个先进的相似性搜索引擎,利用Amazon Bedrock和AppSync的强大功能,在GENAI和RAG应用领域提供准确和相关的结果。
亚马逊云科技(Amazon Web Services)是全球云计算的开创者和引领者。提供200多类广泛而深入的云服务,服务全球245个国家和地区的数百万客户。亚马逊云科技致力于成为企业构建和应用生成式AI的首选,通过生成式AI技术栈,提供用于模型训练和推理的基础设施服务、构建生成式AI应用的大模型等工具、以及开箱即用的生成式AI应用。深耕本地、链接全球 – 在中国,亚马逊云科技通过安全、稳定、可信赖的云服务,助力中国企业加速数字化转型和创新,并深度参与全球化市场。