构建企业级生成式AI解决方案的深度解析
关键要点
本文提供了在大规模企业环境中实施生成式AI解决方案的基本原则、方法论和最佳实践的全面指南。它涵盖了Gen AI架构的关键组件,如向量数据库、嵌入和提示工程,并提供了实际应用的实用见解。文章详细探讨了提示工程技术,讨论了如何优化提示以构建有效的生成式AI解决方案。它介绍了检索增强生成(RAG),解释了如何将数据摄取与数据检索解耦以提升系统性能。还包括一个使用Python代码的实用示例,演示了如何使用LangChain、Chroma数据库和OpenAI API集成实现RAG,为开发人员提供实践指导。
引言
去年,我们看到OpenAI通过向全球消费者推出ChatGPT彻底改变了技术格局。该工具在短时间内迅速获得了大量用户,甚至超过了流行的社交媒体平台。由生成式AI(一种深度学习技术)驱动的ChatGPT不仅影响消费者,也被许多企业采用,以瞄准以前被认为是不可能挑战的潜在业务用例。
企业中的生成式AI概述
BCG最近对全球1406名CXO进行的调查显示,生成式AI是89%的CXO考虑在2024年投资的三大技术之一(仅次于网络安全和云计算)。各种规模的企业要么正在构建内部的Gen-AI产品,要么投资从外部提供商那里将Gen-AI产品线添加到企业资产列表中。
随着Gen-AI在企业环境中的大规模采用,一个架构良好的参考架构对于帮助工程团队和架构师确定构建安全合规的Gen-AI解决方案的路线图和构建块至关重要。这些解决方案不仅推动创新,还提升了利益相关者的满意度。
在我们深入探讨之前,我们需要理解什么是生成式AI?要理解生成式AI,我们首先需要了解它所处的环境。这个环境始于人工智能(AI),它指的是计算机系统试图模拟人类行为并在没有明确编程的情况下执行任务的学科。机器学习(ML)是AI的一部分,它基于大量的历史数据集运行,并根据它在该数据中识别的模式进行预测。例如,ML可以根据过去的数据预测人们在特定季节更喜欢住在酒店还是通过AirBNB住在出租屋中。深度学习是一种ML类型,通过使用类似于人脑的人工深度神经网络,为计算机的认知能力做出贡献。它涉及多层数据处理,其中每一层都细化前一层的输出,最终生成预测性内容。生成式AI是深度学习技术的子集,它使用各种机器学习算法和人工神经网络来生成新内容,如文本、音频、视频或图像,而无需人工干预,基于它在训练过程中获得的知识。
安全合规的Gen-AI解决方案的重要性
随着Gen-AI成为新兴技术,越来越多的跨行业企业急于采用该技术,但没有足够关注实践负责任AI、可解释AI以及解决方案的合规性和安全性的必要性。因此,我们看到了客户隐私问题或生成内容中的偏见。Gen-AI采用的快速增长需要缓慢而稳定的方法,因为能力越大,责任越大。在我们进一步探索这个领域之前,我想分享几个例子来说明为什么。
组织必须负责任地架构基于Gen-AI的系统,并考虑合规性,否则他们可能面临失去公众对其品牌价值的信任的风险。组织需要在构建、实施和定期增强Gen-AI系统以及管理其操作和生成内容时遵循深思熟虑和全面的方法。
企业环境中生成式AI的常见应用和好处
技术导向的组织可以通过提高生产力和代码质量来利用Gen-AI在软件开发中的真正力量。Gen-AI驱动的自动完成和代码推荐功能帮助开发人员和工程师更高效地编写代码,而代码文档和从任何语言的自然语言注释生成代码可以简化开发过程。技术负责人可以通过利用Gen-AI进行重复的手动同行评审、错误修复和代码质量改进来节省大量的开发工作。这导致更快的开发和发布周期以及更高质量的软件。此外,用于软件工程的对话式AI支持自然语言交互,从而改善团队成员之间的协作和沟通。产品经理和所有者可以使用生成式AI来管理产品生命周期、构思、产品路线图规划以及用户故事创建和编写高质量的验收标准。
内容摘要是生成式AI主导的另一个领域。它可以自动总结有意义的产品评论、文章、长篇报告、会议记录和电子邮件,节省分析师的时间和精力。生成式AI还通过基于从非结构化文本和数据中提取的关键见解构建知识图谱,帮助做出明智的决策和识别趋势。
在客户支持中,生成式AI为虚拟聊天机器人提供动力,为客户提供个性化协助,从而提升整体用户体验。例如,在医疗保健行业的面向患者的应用程序中,聊天机器人可以通过提供 empathetic 答案更加以患者为导向。这将帮助组织获得更多的客户满意度。企业智能搜索引擎利用生成式AI快速准确地提供相关信息。由生成式AI驱动的推荐系统分析用户行为,提供定制化建议,从而提高客户参与度和满意度。此外,生成式AI支持端到端的联络中心体验,自动化工作流程并降低运营成本。现场代理可以使用摘要功能快速理解流程或程序,并可以快速指导客户。
生成式AI在内容辅助方面也取得了显著进展。它可以帮助生成电子商务平台的产品描述、关键词和元数据,创建引人入胜的营销内容,并协助内容写作任务。它还可以通过使用自然语言处理(NLP)来理解和解释用户需求,为营销和品牌目的生成图像。
在知识研究和数据挖掘领域,生成式AI用于特定领域的研究、客户情感分析、趋势分析和生成跨职能见解。它还在欺诈检测中发挥着关键作用,利用其分析大量数据和检测指示欺诈活动的模式的能力。
因此,我们可以看到生成式AI通过实现智能自动化和增强决策过程正在彻底改变行业。其在软件开发、摘要、对话式AI、内容辅助和知识研究方面的多样化应用显示了其在企业环境中的真正潜力。如果企业能够快速采用生成式AI,他们将在各自行业中获得竞争优势并推动创新。
生成式AI的企业用例
可以看出,生成式AI通过提升产品的客户体验或提高员工的生产力,为任何组织带来了显著的商业价值。正在采用Gen-AI解决方案的企业正在发现创建新业务流程以推动创新的真正潜力。Gen-AI产品或代理的Co-Pilot功能能够进行一系列思维过程,以基于外部知识(如API或服务的结果)做出决策以完成决策任务。跨行业有无数应用。
下图显示了使用Gen-AI大规模实现的一些可能能力。
生成式AI企业架构的核心组件
生成式AI企业架构的核心组件有许多不同的构建块。在本节中,我们将快速介绍一些组件,如向量数据库、提示工程和大型语言模型(LLM)。在AI或机器学习世界中,数据以多维数字格式表示,称为嵌入或向量。向量数据库对于存储和检索表示数据各个方面的向量至关重要,从而实现高效的处理和分析。提示工程专注于设计有效的提示以指导AI模型的输出,确保从LLM获得相关和准确的响应。大型语言模型作为生成式AI的骨干,利用各种算法(如Transformer或GAN等)和预训练大量数据集来生成复杂且连贯的数字内容,形式为文本、音频或视频。这些组件共同工作,以扩展企业环境中生成式AI解决方案的性能和功能。我们将在以下部分中进一步探讨。
向量数据库
如果您有数据科学或机器学习背景,或以前曾与ML系统合作过,您很可能了解嵌入或向量。简单来说,嵌入用于确定不同实体或数据之间的相似性或接近度,无论是文本、单词、图形、数字资产还是任何信息片段。为了使机器理解各种内容,它被转换为数字格式。这种数字表示由另一个深度学习模型计算,该模型确定该内容的维度。
以下部分显示了由“text-embedding-ada-002-v2”模型为输入文本“Solutioning with Generative AI”生成的典型嵌入,其维度为1536。
|
|
传统数据库在存储高维向量数据以及其他数据类型时遇到挑战,尽管有一些例外情况我们将在接下来讨论。这些数据库还面临可扩展性问题。此外,它们仅在输入查询与索引中存储的文本完全匹配时返回结果。为了克服这些挑战,出现了一种前沿的数据库概念,能够高效存储这些高维向量数据。这种创新解决方案利用诸如K-th最近邻(K-NN)或近似最近邻(A-NN)等算法来索引和检索相关数据,优化最短距离。这些纯向量数据库在存储时维护相关和连接数据的索引,从而在应用程序需求增加时有效扩展。
向量数据库和嵌入的概念在设计和开发企业生成式AI应用程序中起着至关重要的作用。例如,在现有私有数据的QnA用例或构建聊天机器人时,向量数据库为LLM提供上下文记忆支持。对于构建企业搜索或推荐系统,使用向量数据库是因为它具有强大的语义搜索能力。
工程团队在构建下一个AI应用程序时有两种主要类型的向量数据库实现可用:纯向量数据库和集成在NoSQL或关系数据库中的向量数据库。
纯向量数据库:纯向量数据库专门设计用于高效存储和管理向量嵌入,以及少量元数据。它独立于生成嵌入的数据源运行,这意味着您可以使用任何类型的深度学习模型生成具有不同维度的嵌入,但仍然可以高效地将它们存储在数据库中,而无需对向量进行任何额外的更改或调整。开源产品如Weaviate、Milvus、Chroma数据库是纯向量数据库。流行的基于SAAS的向量数据库Pinecone也是开发社区在构建AI应用程序(如企业搜索、推荐系统或欺诈检测系统)时的热门选择。
集成向量数据库:另一方面,集成在高性能NoSQL或关系数据库中的向量数据库提供了额外的功能。这种集成方法允许在存储原始数据的同时存储、索引和查询嵌入。通过将向量数据库功能和语义搜索能力集成到现有数据库基础设施中,无需在单独的纯向量数据库中复制数据。这种集成还促进了多模态数据操作,并确保了更高的数据一致性、可扩展性和性能。然而,这种类型的数据库只能支持相似的向量类型,具有相同的维度大小,这些向量由相同类型的LLM生成。例如,pgVector扩展将PostGres数据库转换为向量数据库,但您不能存储具有不同大小(如512或1536)的向量数据在一起。Redis企业版带有向量搜索功能,将Redis noSQL数据库转换为向量数据库。最新版本的MongoDB也支持向量搜索功能。
提示工程
提示工程是遵循特定指南和原则 crafting 简洁文本或短语的艺术。这些提示作为大型语言模型(LLM)的指令,指导LLM生成准确和相关的输出。这个过程很重要,因为构建不良的提示可能导致LLM产生幻觉或无关的响应。因此,必须仔细设计提示以有效指导模型。
提示工程的目的是确保给LLM的输入清晰、相关且在上下文上适当。通过遵循提示工程的原则,开发人员可以最大化LLM的潜力并提高其性能。例如,如果意图是生成长文本的摘要,则应制定提示以指示LLM将信息压缩成简洁且连贯的摘要。
此外,提示工程帮助使LLM能够基于输入短语的意图展示各种能力。这些能力包括总结大量文本、澄清主题、转换输入文本或扩展提供的信息。通过提供结构良好的提示,开发人员可以增强LLM理解和准确响应复杂查询和请求的能力。
任何构建良好的提示的典型结构将具有以下构建块,以确保它提供足够的上下文,让模型有时间思考以生成高质量的输出:
- 指令和任务:提供清晰的指令并指定LLM应完成的任务。
- 上下文和示例:提供输入上下文和外部信息,以便模型可以执行任务。
- 角色(可选):如果LLM需要遵循特定角色来完成任务,则需要提及。
- 语气(可选):提及写作风格,例如,您可以要求LLM以专业英语生成响应。
- 边界(可选):提醒模型在生成输出时检查的防护栏和约束。
- 输出格式(可选):如果我们希望LLM以特定格式生成输出,例如json或xml等,提示中应提及。
总之,提示工程在确保LLM为其应执行的任务生成有意义且在上下文上适当的输出方面起着至关重要的作用。通过遵循提示工程的原则,开发人员可以在广泛的应用中提高LLM的有效性和效率,从总结文本到提供详细的解释和见解。
有各种提示工程技术或模式可用,可以在开发Gen-AI解决方案时利用。这些模式或高级技术缩短了工程团队的开发工作,并简化了可靠性和性能。
-
零样本提示:零样本提示指的是要求模型执行某些任务但不提供任何示例的提示类型。模型将基于先前的训练生成内容。它用于简单直接的NLP任务,例如发送自动电子邮件回复、简单文本摘要。
-
少样本提示:在少样本提示模式中,在输入上下文中向LLM提供几个示例和清晰的指令,以便模型可以从示例中学习并根据提供的样本生成类型的响应。当任务复杂且零样本提示无法产生所需结果时,使用此提示模式。
-
思维链:思维链(CoT)提示模式适用于需要LLM展示复杂推理能力的用例。在这种方法中,模型在提供最终答案之前显示其逐步的思维过程。这种方法可以与少样本提示结合使用,其中提供几个示例来指导模型,以便在需要推理的复杂任务上获得更好的结果。
-
ReAct:在这种模式中,LLM被提供访问外部工具或系统。LLM访问这些工具以获取它需要的数据,以执行基于推理能力它预期完成的任务。ReAct用于需要LLM生成顺序思维过程并根据该过程通过访问外部源检索它需要的数据并生成最终更可靠和事实响应的用例。ReAct模式与思维链提示模式结合应用,其中LLM需要用于更多决策任务。
-
思维树提示:在思维树模式中,LLM使用类似人类的方法通过推理解决复杂任务。它评估思维过程的不同分支,然后比较结果以选择最优解决方案。
LLM Ops
LLMOps,顾名思义,指的是操作平台,其中大型语言模型(另一个术语是基础模型)可用,并且推理通过API模式暴露,供应用程序与整个工作流的AI或认知部分交互。LLMOps被描述为任何Gen-AI应用程序的另一个核心构建块。这是数据科学家、工程团队和产品团队协作构建、训练、部署机器学习模型并维护数据管道以及模型变得可用于与其他应用层集成的协作环境。
LLMOps平台可以为任何企业设置三种不同的方法:
封闭模型库:在封闭模型库中,LLM产品由大型AI提供商(如Microsoft、Google、OpenAI、Anthropic或StableDiffusion等)严格管理。这些科技巨头负责自己的模型训练和维护。他们管理模型的基础设施和架构,以及运行整个LLMOps系统的可扩展性要求。模型通过API模式可用,其中应用程序团队创建API密钥并将模型集成到应用程序中进行推理。这种GenAI Ops的好处是企业无需担心维护任何类型的基础设施、在需求增加时扩展平台、升级模型或评估模型的行为。然而,在封闭模型方法中,企业完全依赖这些科技巨头,并且对用于训练或升级LLM训练的数据类型和质量没有控制权,有时当基础设施遇到需求激增时,模型可能会遇到速率限制因素。
开源模型库:在这种方法中,您通过HugginFace或kaggle利用开源社区管理的大型语言模型构建自己的模型库。在这种方法中,企业负责管理整个AI基础设施,无论是在本地还是在云上。他们需要配置开源模型,一旦成功部署,模型的推理通过API暴露,供其他企业组件集成到自己的应用程序中。模型的内部架构、参数大小、部署方法和预训练数据集由开源社区公开可用以进行定制,因此企业可以完全控制访问、实施 moderation 层和控制授权,但与此同时,总拥有成本也增加了。
混合方法:如今,混合方法相当流行,主要云公司如AWS或Azure和GCP通过提供无服务器库主导了这个领域,任何组织都可以从可用存储库部署开源模型或使用这些公司的封闭模型。Amazon Bedrock和Google Vertex是流行的混合Gen-AI平台,您可以在其中进行BYOM(自带模型)或通过bedrock控制台使用封闭模型,如Amazon Titan,或通过Vertex使用Google Gemini。混合方法为企业提供了灵活性,可以控制访问,同时可以通过在共享基础设施上运行以成本效益的方式利用高质量的开源模型访问。
Gen-AI架构框架介绍——检索增强生成(RAG)
RAG是企业世界中构建生成式AI应用程序的流行框架。在我们上面探讨的大多数用例中,有一个共同点。在大多数情况下,大型语言模型需要访问外部数据,如组织的私有业务数据或关于业务流程和程序的文章,或用于软件开发访问源代码。如您所知,大型语言模型使用从互联网上公开抓取的数据进行训练。因此,如果询问任何组织的私有数据,它将无法回答并会表现出幻觉。当大型语言模型不知道任何查询的答案或输入上下文和指令不清晰时,就会发生幻觉。在这种情况下,它倾向于生成无效和无关的响应。
RAG,顾名思义,试图通过帮助LLM访问外部知识和数据来解决这个问题。支持RAG框架的各种组件是:
- 检索:此活动的主要目标是根据输入查询从向量数据库中获取最相关和相似的内容或块。
- 增强:在此活动中,创建一个构建良好的提示,以便在调用LLM时,它确切知道需要生成什么输出,以及输入上下文是什么。
- 生成:这是LLM发挥作用的地方。当模型提供良好和足够的上下文(由“检索”提供)并具有清晰的步骤概述(由“增强”步骤提供)时,它将为用户生成高价值的响应。
我们已经将数据摄取组件与检索部分解耦,以使架构更具可扩展性,但是可以将数据摄取和检索结合在一起用于数据量低的用例。
数据摄取工作流
在此工作流中,来自各种数据源(如PDF报告、HTML文章或任何对话记录数据)的内容使用适当的分块策略(例如固定