LangChain: LLM 应用聚焦的两大方向,RAG 和 Agents
发布时间:2024年06月06日
图一:RAG 结构图
在当前这个时间点(2023.9.6)打开langchain.com的主站,你会发现不同于之前的 docs 关于应用场景的 8 种介绍,Use-Cases 部分明确的分为了 RAG 和 Agents 两部分,说明这两个月以来,业界对落地的思考慢慢收敛到了这两部分,尤其是 RAG(RetrievalAugmentedGeneration),其实算是一个比较新的词,接下来我们分别从这两个维度来看下最近 LLM 落地的进展。
·RAG,Retrieval-Augmented
Generation, 众所周知本次 llm 浪潮主打的就是一个 Generation,生成,而 Retrieval-augmented 就是指除了 llm 本身已经学到的知识之外,通过外挂其他数据源的方式来增强 LLM 的能力,这其中就包括了外部向量数据库、外部知识图谱、甚至直接把现有的 ES 接入,或者干脆把现有的生产环境下的搜索引擎接入等方式。接入的方式也大同小异,首先检索外挂数据源中与用户给出的上下文相关的内容,合并之后做 embedding 给到所用的 llm ,最后由 llm 根据模型自己的认知,做出回答。说到底就是一个 map-reduce 的过程,当然 langchain 里面也进一步细化,增加了比如 refine 这种机制,思路一致,实现方式略有区别。详细的介绍可以去翻一下之前写的相关记录。
·Agents, 如果说 RAG 是通过外挂知识达到让 llm 在垂直领域应用落地的目的,Agents 就是让 llm 学会现实世界中的各种“规则”,比如互联网的各种 API,比如 web 上的各种按钮交互怎么做等等,几年前有个哥们供职于国内做 App 测试服务的头部企业,提出了一个很灵魂拷问的问题,能不能把机器学习应用于 App
自动测试?当时的情况是 BERT 刚刚出来,Transformer
的魔法还没有蔓延到 CV 领域,所以这哥们提的问题相当于需要单独拎出来几个模型,分别把图像识别、意图识别、用于模拟用户行为的代码生成等等单独做一遍,然后再通过某种方式的胶水代码粘在一起,可以想想,效果很差,今时不同往日,突然想到这个问题可以拿出来重新做一遍了。
说回来 RAG,词儿很新,后面代表的事情其实是近一年来业内一直在探索的事情。接下来我们还是画个图来看一下整个 RAG 场景是怎样做到 LLM 和外部数据结合的(图一),这张图显示了 LLM 是如何利用外挂信息库的方式来完成自身能力增强或落地的,这个外挂的信息库不限于向量数据库、传统搜索引擎甚至 DBMS 也可以,正是各种不同的应用场景决定了不同的数据源,根据下图中来自
langchain 官网的图片,截至目前,langchain 已经支持了:
·154 种数据源的 loader
·47 种不同的向量存储方式
·37 种数据
embedding 方式
·65 个不同大模型的支持
LLM 大模型外挂涉及到的组件数量
具体的数字无需关注,需要看到的是 LLM 大模型外挂数据技术涉及到的组件数量正在以惊人的速度爆发,组件越多,LLM 能力落地的触角也就越深入。
再看下 Agents
「Turn your LLMs into reasoning engines」,reasoning engines 推理引擎,这什么意思呢?翻译一下其实两层含义,第一个,LLMs 会去阅读你提供的 APIs 的说明文档,学会这些 APIs 的实现的目的、使用方式、组合方式,根据你提出的总体要求,按照它自己关于这些
APIs 的理解来拆解成不同的小任务,小任务都完成最后凑成一个大任务完成,到你这交差。需要注意的是,这里的
APIs 不仅仅是指我们传统认为的,网络空间中的 APIs,还可以是操控物理世界里面的开关、机械臂等等实物的「APIs」;第二个含义,由于目前跟 LLMs 交互的实现方式其实是类似 HTTP 协议这种,「无状态」的交互,所以每次交互的上下文是需要通过在类似「chat_history」这样的变量里面保存的,每次交互都把上下文内容带上。
综上,所谓的 reasoning engines 就是基于 LLMs 的理解任务、拆解任务、执行任务的集合。这个思路经过 OpenAI 的两位重要技术人物, Andrej Karpathy 和 Lilian Weng 在近期不遗余力的鼓吹之后,成功变成了 LLMs 落地的另一篇超蓝海。下面是来自 Lilian Weng 的一张图解:
Overview of a LLM-powered autonomous
agent system
接下来将分别从 RAG/Agents 两个方向分别找典型例子实验、记录一下。
出自:https://zhuanlan.zhihu.com/p/654662274
Zenen AI 是一款可让您与 AI 助手进行自然语音对话的应用程序。Zenen AI 可以用类似人类的声音与您交谈,并理解您的问题和请求。