【下篇】深度解析AI大语言模型(LLM)在企业应用的关键技术与典型架构

技术

Summer

picture.image

picture.image

点击上方

蓝字 关注我们

picture.image

本文共3250字,预计阅读时间9分钟

在上篇中( 【上篇】深度解析AI大语言模型(LLM)在企业应用的关键技术与典型架构) ,我们对大语言模型(LLM)在企业应用中的能力基础、应用场景做了思考与展望,也了解到LLM在复杂的企业级应用环境中并不仅仅是一个简单的API调用,企业信息系统的数据垂直性、流程复杂性、环境的异构性以及对可用性安全性等关键指标要求的不同,决定了LLM在企业应用更是一个系统的软件工程,与构造一个简单的接入LLM的桌面工具有天壤之别。

LLM企业应用典型架构

picture.image

我们设想一个可能的业务用例,来看LLM在企业应用集成的一个典型架构与流程是怎样的:

picture.image

picture.image

假设我们需要给企业的CRM(客户关系管理)构建一个 AI智能销售助理 ,该助理可以与潜在用户进行自然语言的对话,并根据对话过程灵活的决定下一步的动作,在此过程中,可以自主的完成一些销售工作任务,比如介绍产品、给出产品对比报告、登记销售线索等。而这些任务需要与多个企业应用或工具做交互,包括:

  • 与私域知识库系统获得公司产品信息,以回答客户的产品咨询

  • 从互联网搜索竞争对手的产品信息,进行竞品分析与产品对比

  • 通过与CRM系统的接口查询客户信息,或进行潜在销售线索的登记

picture.image

一个可能的应用架构与流程示意如下:

picture.image

本案例参考了微软Azure平台OpenAI能力应用架构并扩展

这里对其中的流程与功能做简单的阐述:

  1. 公司的私域文档通过搜集、识别形成数字化的知识 。可能来自于营销、产品、客服等多个部门;当然这一步对于大部分信息化较高的企业来说,可能已经完成大部分。这些数字化资产可能以多种形式存在,比如存放在关系型/非关系性数据库中,或者各类数字文档(Excel、PDF、TXT等)、企业搜索引擎等。

  2. 通常,文档都需要进行分割,变成更小的文档块 。当然对于Excel/CSV这种本身就已经结构化分割的则可以直接使用。文档分割的目的是为了变成更适合管理、搜索与学习的“知识块”,这个粒度需要根据实际情况控制。

  3. 向量化嵌入 。用通俗的语言来说,就是把这些文档块转换成多维向量(一种由N个浮点数字组成的多维数组)。向量化嵌入的最大好处是可以实现近似语义搜索。向量的转换通常需要借助于专门用于嵌入的第三方或开源语言嵌入模型(Embedding Model)接口,OpenAI、国内的阿里/百度都有专门的向量嵌入模型接口。

picture.image

关于向量数据库与嵌入(embedding),我们将在后续文章单独介绍。目前只需要理解:向量化就是把各种知识(文本/图片/音频视频)转化为一堆数字(一段文字可以转成几百上千个数学浮点数),用来实现相似性搜索。

picture.image

  1. 在向量数据库中存储嵌入向量及原始数据,用于后续搜索 。向量数据库有很多选择,比如开源的Milvus,Pinecone向量数据库,简单的比如Facebook开放的FAISS。

以上步骤是一种前置准备:把私域知识用大模型易于理解和使用的形式存储好。以下则进入AI销售助理的工作流程,这是一个反复循环的过程:

  1. 用户通过交互界面做自然语言“输入” ,形式上可以是文字,语音(需转换),甚至邮件等。比如:

picture.image

能否介绍下你们公司A产品与xx公司B产品的区别?

picture.image

  1. 大语言模型LLM做规划与任务分解 ,生成子任务,每个子任务包括下一步动作及输入信息;这些子任务是为了后续更好的完成任务而准备。有的任务可能比较简单,比如做自我介绍;有的任务可能比较复杂,需要做拆分,并经过多次迭代来完成,比如生成竞品分析:

picture.image

子任务1:查询公司A产品的信息,输入1: A产品基本信息与参数

子任务2:到互联网搜索xx公司B产品,输入2: xx公司B产品介绍与参数

picture.image

  1. 调度子任务执行。 子任务的执行不一定是大模型自身完成,而是需要借助外部的知识或工具完成。

picture.image

子任务1执行:到本地向量库中通过相似算法搜索符合“A产品基本信息与参数“的私域知识,整理成A产品信息。

子任务2执行:调用搜索引擎的API,搜索“xx公司B产品介绍与参数“,获得结构化的返回结果,形成B产品信息。

picture.image

  1. 子任务执行结果暂时“记忆”。 比如将向量搜索的相关产品信息和搜索引擎结果,存储到本地大模型的“记忆”中。

  2. 依据大模型本地“记忆”内的子任务结果信息(比如相关产品信息、竞品信息等)与对话历史等,创建与编排新的提示(Prompt), 并发送到大模型。

  3. 生成本轮响应。 大模型根据提示携带的上下文、对话历史、客户原始问题,进行理解、总结、生成响应结果,最终传递到客户,同时存储到大模型的本地“记忆”,用于下一轮对话。

  4. 接收客户的下一次输入,进入下一轮的工作过程。 在新一轮的工作过程中,会参考之前存储在本地“记忆”的会话与任务历史。

这是展示一次原始任务的工作流程,对于AI销售助理这样的应用场景来说,通过任务循环驱动,借助LLM这样的大脑,最终实现自治甚至自我反思的任务自动化,可以大大提高企业生产效率,降低成本。

LLM企业应用之集成工具

picture.image

以上架构中可以注意到:在企业应用中的LLM本身虽然能作为一个思考的“大脑”,输出核心的决策(比如计划下一步“行动”)或者关键的内容(比如产品参数总结),但其本身并不直接解决前面提到的LLM在企业应用中的几个关键工程问题: 私有知识库、本地记忆、外部工具使用、企业应用集成、任务调度等。 也就是说, 你需要自行构建一个系统服务,一方面连接LLM这个大脑; 另一方面在解决以上工程问题的基础上,借助于LLM,自动化的完成指定的工作任务。

picture.image

picture.image

这其实就是目前在大语言模型应用领域(注意不是LLM本身)的一个备受重视的新兴概念: AI Agent 。OpenAI应用研究主管LilianWeng写过一篇长篇论文来论述AI Agent,并非常看好Agent的应用前景。在文章里她把AI Agent总结为 Agent = LLM + 记忆 + 规划技能 + 工具使用 ,这其实和上文我们描述的架构中需要的能力是可以对应的。

picture.image

简单的说,AI Agent就是在LLM基础上增加Memory,Planning,Tools三大能力:

Memory :所有的任务过程中的上下文记忆(短期记忆)以及存储在向量数据库中可随时检索的外部数据(长期记忆)。

Planning :借助于LLM将大型任务分解出多个子目标与小任务,并设定与调整优先级;并具有自我反思与调整的能力。

Tools :借助外部工具完成行动的能力,比如访问LLM本身不具备的知识(如借助搜索引擎)、访问企业信息系统(如CRM)、或执行特定代码等。

picture.image

picture.image

构建这样一个AI Agent的角色,在大语言模型初期需要完全自行编码完成,不过随着大语言模型的大规模应用,出现了一些面向这些应用场景的开源平台与框架,可以帮助降低大量的代码工作量,内置了必须的功能组件,并帮助屏蔽很多底层技术的差异(比如不同的大模型、不同的向量库、不同搜索引擎等),因此实现起来要简单的多。

目前应用最广泛的构造AI Agent的开源平台与框架是LangChain。 此外,还有一些与LangChain有着类似思想或原语的AI Agent工具,比如AutoGPT,BabyAGI等。

  • Langchain是一个用来解决大模型应用中的上述一系列问题的工程化框架,提供支持大量的开箱即用的组件,也是目前应用最广泛的集成框架。
  • AutoGPT则是在LLM基础上构建的一个全自动化的AI自治代理,能够接受一个任务,自行设计、规划、与调整任务的执行过程,并借助大模型最终完成任务并输出。

从实际应用上看, LangChain是一个更具灵活性和强大的方案,可以根据企业自身的需要,灵活的使用其各种强大的内置组件,大大减少使用LLM与企业应用集成的工程量。 但由于LangChain为了兼容大量的底层差异与应用场景,其本身内部组件设计较为复杂,相对也具备一定的技术门槛。 所以最近官方也推出了一个新的开源项目 LangSmith一个让LangChain更易于使用的工程化平台。 目前还处在内部测试阶段,让我们一起来期待吧!

picture.image

THE END

点击下方关注我,不迷路

点击下方体验AI助手

picture.image

0
0
0
0
关于作者

文章

0

获赞

0

收藏

0

相关资源
字节跳动 XR 技术的探索与实践
火山引擎开发者社区技术大讲堂第二期邀请到了火山引擎 XR 技术负责人和火山引擎创作 CV 技术负责人,为大家分享字节跳动积累的前沿视觉技术及内外部的应用实践,揭秘现代炫酷的视觉效果背后的技术实现。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论