以下是关于 RAG 架构图和实现案例的相关内容:
RAG 是当今大多数现代人工智能应用程序的标准架构。以 Sana 的企业搜索用例为例,其工作原理如下:
在生产中,AI 应用程序具有更复杂的流程,包含数十甚至数百个检索步骤,通常具有“提示链”,不同类型的任务并行执行多个“提示链”,然后将结果综合在一起生成最终输出。
随着 RAG 的发展,出现了自适应的检索(也被称作主动检索),其核心思想与 LLM Agent 相似。根据判断依据可分为 Prompt-base 和 Tuning-base:
此外,系统的内存是 LMM 的上下文窗口,存在架构限制,窗口越大推理越慢,同时模型会失焦,降低推理的准确度。前沿模型研发团队都力争做到吞吐量、速度还有准确度的最佳平衡。大模型应用领域常用的方法是 RAG,例如 Perplexity、面向企业知识库的 Glean 以及面向个人知识库的 Maimo 等应用。
设置基线:RAG是当今大多数现代人工智能应用程序的标准架构。让我们以Sana的企业搜索用例为例,了解它在幕后的工作原理。该过程始于应用程序加载和转换无结构文件(如PDF、幻灯片、文本文件)跨越企业数据孤岛,如Google Drive和Notion,转换为LLM可查询格式,通常通过像[Unstructured](https://menlovc.com/portfolio/unstructured/)*这样的数据预处理引擎进行。这些文件现在被"分块"成更小的文本块,以实现更精确的检索,并作为向量嵌入和存储在像[Pinecone](https://menlovc.com/portfolio/pinecone/)*这样的数据库中。当用户向AI应用程序提出问题时(例如,"总结我与公司X会议的所有笔记"),系统会检索语义上最相关的上下文块,并将其折叠到"元提示"中,与检索到的信息一起馈送给LLM。然后,LLM会从检索到的上下文中合成一个整洁的带有项目符号的答复返回给用户。当然,该图仅说明了一个带有一个LLM调用的单一检索步骤。在生产中,AI应用程序具有更复杂的应用程序流程,包含数十甚至数百个检索步骤。这些应用程序通常具有"提示链",其中一个检索步骤的输入馈送到下一步,并且不同类型的任务并行执行多个"提示链"。然后将结果综合在一起,以生成最终输出。[Eve](https://menlovc.com/portfolio/eve/)*法律研究的共同驾驭员,例如,可能会将针对《第七篇》的研究查询分解为专注于预定子主题的独立提示链,如雇主背景、就业历史、《第七篇》、相关案例法和原告案件支持证据。LLMs然后运行每个提示链,为每个生成中间输出,并综合各输出编写最终备忘录。
随着RAG的发展,逐步超越被动的检索的方式,出现了自适应的检索(也被称作主动检索),这一方面也是受益于LLM的强大能力。在核心思想上与LLM Agent相似。RAG系统可以主动判断的检索时机,以及判断时候结束整个流程,输出最终的结果。根据判断的依据,又可以分成和Prompt-base和Tuning-basePrompt-base.通过Prompt Engineering的方式让LLM对流程进行控制。一个典型的实现案例是FLARE。它的核心思想是LM应该仅在缺乏所需知识时进行检索,以避免被动检索增强的LM中出现不必要或不适当的检索。FLARE迭代地生成下一个临时句子,并检查是否包含低概率标记。如果是这样,系统将检索相关文档并重新生成句子。Tuning-base.对LLM进行微调使其生成特殊的token,以此来触发检索或生成。这种思想可以追溯到Toolformer中,通过生成特俗的内容,来辅助调用工具。在RAG系统中则是用于控制检索和生成两个步骤。一个典型的案例是Self-RAG。具体而言,1.给定一个输入提示,和前面的生成结果,首先预测特殊token“Retrieve"判断是否通过检索段落对继续的生成进行增强是有帮助。2.如果有帮助,调用检索模型。模型会生成一个critique token来评估检索段的相关性,下一个响应片段,和一个批判令牌来评估响应片段中的信息是否得到了检索段的支持.3.最后,一个新的批判令牌评估响应的整体效用。模型会并行处理这些内容,并选择最佳结果作为最终的输出。
系统的内存就是LMM的上下文窗口(Context Window),一次推理运算最多能接受的Tokens数量,现在Google Gemini 1.5 Pro实验版已经把这个数字提升到了一千万,一次性输入二十本书和一个小时的电影;当然这里也存在架构的限制,窗口越大推理越慢,同时模型会失焦,降低推理的准确度。但充满挑战也就意味着机会无穷,前沿模型研发团队都力争做到吞吐量、速度还有准确度的最佳平衡。在模型之外,还有操作系统的其它系统部件,例如I/O-用语音、视觉等模态感知;还有文件系统,让模型具备无限记忆的能力,毕竟模型不是数据库,它的内存是辅助计算的。这一年多以来,大模型应用领域最常用的方法就是RAG(R etrieval Augmented Generation),这是一种检索增强生成的方法,让模型用大家自定义的数据生成结果,这样就能处理无尽的私有数据,把模型当成高效的推理机器来使用。配图2.04:Emerging LLM App StackLLM和LMM是构建软件的强大的新工具,Andrej的这个类比,会让大家找到一些熟知的感觉。其实在去年五月a16z整理过一个指南《Emerging Architectures for LLM Applications》,这是一份详细的LLM应用堆栈的参考架构,里面提到了AI初创公司和大科技公司中最常见的系统、工具和设计模式。上文提到的Perplexity就是RAG的最佳应用,还有面向企业知识库的Glean也一样,以及我自己正在做的面向个人知识库的Maimo,其实所有聚焦到客户流程和需求的具体应用,或多或少都搭建在这个技术栈之上。本文不讨论技术实现方法,我将稍纵即逝的概念串接起来,帮大家整理解题思路!智能代理(AI Agent)