关键字: [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 构建语义搜索引擎所需的六个基本步骤:
Derek 明智地强调了大型语言模型(LLMs) 在这一过程中的关键作用, 因为它们对于从数据生成嵌入和解释用户提示至关重要。他赞赏Amazon Bedrock 提供对大量LLM 的API 访问, 从而使用户能够审慎地选择最适合其特定需求的模型。
然而,Derek 的专长不仅局限于LLM 领域, 他强调了在语义搜索应用程序后端的众多数据源中编排和控制访问权限的重要性。这就是Amazon AppSync( 一种托管的GraphQL 服务) 出场的地方。Derek 阐明了AppSync 如何让开发者能够以前所未有的轻松方式构建、部署和管理他们的GraphQL 模式、解析器和数据源。
Derek 解释道,GraphQL 是构建代理和RAG 的绝佳解决方案, 因为它能够跨多个数据源整合数据, 同时还能对从每个单独数据源检索的数据进行细粒度控制。此外,AppSync 的缓存功能有助于减少响应时间, 进一步提高应用程序的整体性能。
为了说明六个步骤与Amazon AppSync 之间的相互作用,Derek 描绘了在利用AppSync 处理用户请求和访问应用程序各种数据源时, 该过程将如何展开:
1. 数据被转换为嵌入向量。
2. 生成的嵌入向量被加载到PostgreSQL 数据库中。
3. 用户直接与Amazon AppSync 端点交互。
4. Amazon AppSync 通过为每个源定义解析器来控制用户如何连接和调用各种数据源。这就是可以实现缓存以优化应用程序性能的地方。
理论基础奠定之后,Derek 转向实际演示, 分三个阶段构建了一个相似性搜索应用程序:
在演示中,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 应用。深耕本地、链接全球 – 在中国,亚马逊云科技通过安全、稳定、可信赖的云服务,助力中国企业加速数字化转型和创新,并深度参与全球化市场。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70038688/viewspace-3034889/ ,如需转载,请注明出处,否则将追究法律责任。