大模型基础:基本概念、Prompt、RAG、Agent及多模态

随着大模型的迅猛发展,LLM 作为人工智能的核心力量,正以前所未有的方式重塑着我们的生活、学习和工作。无论是智能语音助手、自动驾驶汽车,还是智能决策系统,大模型都是幕后英雄,让这些看似不可思议的事情变为可能。本文将从以下5个方面介绍大模型相关内容:

1. LLM基础知识

2. Prompt Engineering

3. RAG的应用

4. Agent的应用

5. 多模态模型

1. LLM基础知识

1.1 LLM基本概念

从字面意思来讲,LLM 是 Large Language Model 这三个单词的首字母缩写,意为大语言模型。大型语言模型(LLM)是一种基于深度学习技术的自然语言处理工具,能理解和生成文本。通过大量语料库训练,LLM 在翻译、写作、对话等任务中展现出卓越的能力。常见的应用包括自动问答、生成文本、文本摘要等。由于其多模态特性,LLM 还可用于图像和音频处理,为多领域带来创新可能。

1.2 LLM的发展历史

在 LLM 的发展过程中有哪些重要的里程碑事件的话,2017年 Vaswani 等人提出Transformer架构绝对是能算得上之一。GPT(Generative Pretrained Transformer)和 BERT(Bidirectional Encoder Representations from Transformers)这两个词中的 T 就是 Transformer 架构。Transformer 架构是一种基于自注意力机制的神经网络结构,它完全颠覆了之前以循环神经网络(RNN)为主导的序列建模范式。Transformer 架构的出现,实现了并行计算和高效的上下文捕获,极大地提高了自然语言处理的性能。可以说,先有Transformer,后有 GPT 以及 BERT。

一些最具代表性的大模型框架的发展时间表:

1.3 LLM中的xxB是什么

GPT3 在训练时使用了175B的参数。这里的 B 是 Billion 的缩写,175B就是1750亿个参数。参数数量,简单来说,每个参数就像是一个可以微调的设置,模型通过调整这些参数来更好地理解和生成语言。这个数字越大,通常意味着模型的表示能力越强,因为它可以捕捉到更复杂的数据模式。但同时,这也意味着模型需要更多的数据和计算资源来训练。要注意的是,参数多并不总是好事。如果参数过多,而训练数据不足,模型可能会过拟合, 也就是说它在训练数据上表现得很好,但在未见过的数据上就不怎么样了。所以,参数数量和训练数据的平衡非常重要。

2. Prompt Engineering

2.1 Prompt概念

Prompt是一种通过设计特定的提示词或句子,引导模型生成更符合用户意图的输出的方法。例如,我们可以为模型添加一些关于期望回答的提示信息,以帮助模型更好地理解问答的结构和规则。

Prompt的组成包四个元素:

  • Instruction(指令,必需):告诉模型该怎么做,如何使用外部信息(如果提供),如何处理查询并构建 Out。

  • Context(上下文信息,可选):充当模型的附加知识来源。这些可以手动插入到提示中,通过矢量数据库 (Vector Database) 检索(检索增强)获得,或通过其他方式(API、计算等)引入。

  • Input Data(需要处理的数据,可选):通常(但不总是)是由人类用户(即提示者)In 到系统中的查询。

  • Output Indicator(要输出的类型或格式,可选):标记要生成的文本的开头。

代码示例:

`prompt = """ Answer the question based on the context below. If the question cannot be answered using the information provided answer with "I don't know".```Context: Large Language Models (LLMs) are the latest models used in NLP. Their superior performance over smaller models has made them incredibly useful for developers building NLP enabled applications. These models can be accessed via Hugging Face's `transformers` library, via OpenAI using the `openai` library, and via Cohere using the `cohere` library.```Question: Which libraries and model providers offer LLMs?``Answer: """`  

2.2 Prompt编写原则

1. 关键要素

  • 明确目标:清晰定义任务,以便模型理解。

  • 具体指导:给予模型明确的指导和约束。

  • 简介明了:使用简练、清晰的语言表达Prompt。

  • 适当引导:通过示例或问题边界引导模型。

  • 迭代优化:根据输出结果,持续调整和优化Prompt。

2. 有效做法

  • 强调,可以适当的重复命令和操作。

  • 给模型一个出路,如果模型可能无法完成,告诉它说“不知道”,别让它乱“联想”。

  • 尽量具体,它还是孩子,少留解读空间。

2.3 Prompt类型

2.3.1 Zero-Shot Prompting

直接向模型提出问题,不需要任何案例,模型就能回答你的问题,基于模型训练的时候提供的大量数据,能做初步的判断。

(1) Zero-Shot Prompting 技术依赖于预训练的语言模型。

(2) 为了获得最佳性能,它需要大量的样本数据进行微调。像 ChatGPT 就是一个例子,它的样本数量是过千亿。

(3) 由于Zero-Shot Prompting 技术的灵活性和通用性,它的输出有时可能不够准确,或不符合预期。这可能需要对模型进行进一步的微调或添加更多的提示文本来纠正。

2.3.2 Few-Shot Prompting

向模型提出问题,同时给出少量案例,模型根据给定的案例调整输出的回答。

缺点:依赖于案例的质量,案例如果给的不恰当,模型也会学到不恰当的描述和回答。

2.3.3 Chain of Thought(CoT)思维链

Jason Wei等人(2022)引入的思维链(CoT)提示,通过中间推理步骤实现复杂的推理能力。可以将其与少样本提示相结合,以获得更好的结果,以便在回答之前进行推理的更复杂的任务。

有两种方式增加GPT的推理能力,或者CoT能力:

(1) 第一种:增加案例,如下所示,第一次回答错误,给一个计算过程的案例,GPT可以通过案例学会简单推理。

(2) 第二种:增加关键句,Let’s think step by step,测试人员测了很多类似的句子,最后发现这句话是效果最好的,这个时候不加案例,GPT也具备一定的推理能力。

根据 Wei 等人的论文表明,它仅在大于等于 100B 参数的模型中使用才会有效。如果使用的是小样本模型,这个方法不会生效。

2.3.4 Self-Consistency 自洽

是对CoT的一个补充,让模型生成多个思维链,然后取最多数答案的作为最终结果。其实重复运算多次,取概率最高的那一个,需要借助脚本辅助完成这个功能。

(1) 从语言模型中生成多个不同的“推理路径(reasoning paths)”,这些路径可能因模型的随机性或不同的参数设置(如temperature、top_p等)而有所不同。有助于模型更全面地考虑问题,并可能导致更准确或更可靠的最终答案。

(2) 对上一步生成的多个推理路径进行“边缘化(marginalize out)”以得到一个最终的、一致的答案。边缘化在这里意味着从多个可能的推理路径中找出最常见或最一致的答案。

2.3.5 Tree of Thoughts(ToT) 思维树

Tree of Thoughts(ToT)框架,用于改进语言模型(LMs)的推理能力。该框架是对流行的“Chain of Thought”方法的一种泛化,允许模型在解决问题的过程中进行更多的探索和策略性前瞻。

ToT允许模型自我评估不同的选择,以决定下一步的行动,并在必要时进行前瞻或回溯,以做出全局性的选择。

在24点游戏中,使用链式思考提示的GPT-4仅解决了4%的任务,而使用ToT方法的成功率达到了74%。

2.3.6 ReAct框架

Yao等人(2022)引入了一个框架,其中LLMs以交错的方式生成推理轨迹和任务特定操作,并且允许LLMs与外部工具交互来获取额外信息,从而给出更可靠和实际的回应。ReAct的灵感来自于“行为”和“推理”之间的协同作用,正是这种协同作用使得人类能够学习新任务并做出决策或推理。

下图展示ReAct的一个示例,举例执行问题回答所涉及的不同步骤。

实现流程如下:

(1)用Prompt实现一个样例,比如上面的模板:Thought:xxx ==> Action: Search[xxx];

(2)LLMs会根据模板相同的逻辑,结合CoT思维链方式一步一步思考,并获取外部知识;

(3)最后Action: Finish获取最终结果后结束。

3. RAG的应用

3.1 RAG概念

RAG(Retrieval Augmented Generation)检索增强生成,即大模型LLM在回答问题或生成文本时,会先从大量的文档中检索出相关信息,然后基于这些检索出的信息进行回答或生成文本,从而可以提高回答的质量,而不是任由LLM来发挥。RAG技术使得开发者没有必要为每个特定的任务重新训练整个大模型,只需要外挂上相关知识库就可以,即可为模型提供额外的信息输入,提高回答的准确性。RAG技术工作流程如下图所示。

3.2 RAG能解决LLM的哪些问题

即使在LLM有较强的解决问题的能力,仍然需要RAG技术的配合,因为能够帮助解决LLM存在的以下几个问题。

(1)模型幻觉问题:LLM文本生成的底层原理是基于概率进行生成的,在没有已知事实作为支撑的情况下,不可避免的会出现一本正经的胡说八道的情况。而这种幻觉问题的区分是比较困难的,因为它要求使用者自身具备相应领域的知识。

(2)知识的局限性:模型自身的知识完全源于它的训练数据,而现有的主流大模型(ChatGPT、文心一言、通义千问…)的训练集基本都是构建于网络公开的数据,对于一些实时性的、非公开的或离线的数据是无法获取到的,这部分知识也就无从具备。

(3)数据安全问题:开源的大模型是没有企业内部数据和用户数据的,如果企业想在保证数据安全的前提下使用LLM,一种比较好的解决办法就是把数据放在本地,企业数据的业务计算全部放在本地完成。而在线的LLM只是完成一个归纳总结的作用。

3.3 RAG架构

RAG的架构如图中所示,简单来讲,RAG就是通过检索获取相关的知识并将其融入Prompt,让大模型能够参考相应的知识从而给出合理回答。因此,可以将RAG的核心理解为“检索+生成”,前者主要是利用向量数据库的高效存储和检索能力,召回目标知识;后者则是利用大模型和Prompt工程,将召回的知识合理利用,生成目标答案。

完整的RAG应用流程主要包含两个阶段:

(1)数据准备阶段:数据提取–>文本分割–>向量化(embedding)–>数据入库;

(2)应用阶段:用户提问–>数据检索(检索)–>注入Prompt(增强)–>LLM生成答案(生成)。

下面我们详细介绍一下各环节的技术细节和注意事项:

3.3.1 数据准备阶段

数据准备一般是一个离线的过程,主要是将私域数据向量化后构建索引并存入数据库的过程。主要包括:数据提取、文本分割、向量化、数据入库等环节。

· 数据提取

o 数据加载:包括多格式数据加载、不同数据源获取等,根据数据自身情况,将数据处理为同一个范式。

o 数据处理:包括数据过滤、压缩、格式化等。

o 元数据获取:提取数据中关键信息,例如文件名、Title、时间等。

· 文本分割

文本分割主要考虑两个因素:

(1) embedding模型的Tokens限制情况;

(2) 语义完整性对整体的检索效果的影响。

一些常见的文本分割方式如下:

o 句分割:以”句”的粒度进行切分,保留一个句子的完整语义。常见切分符包括:句号、感叹号、问号、换行符等。

o 固定长度分割:根据embedding模型的token长度限制,将文本分割为固定长度(例如256/512个tokens),这种切分方式会损失很多语义信息,一般通过在头尾增加一定冗余量来缓解。

· 向量化(Embedding)

向量化是一个将文本数据转化为向量矩阵的过程,该过程会直接影响到后续检索的效果。目前常见的Embedding模型基本能满足大部分需求,但对于特殊场景(例如涉及一些罕见专有词或字等)或者想进一步优化效果,则可以选择开源Embedding模型微调或直接训练适合自己场景的Embedding模型。

· 数据入库

数据向量化后构建索引,并写入数据库的过程可以概述为数据入库过程,适用于RAG场景的数据库包括:FAISS、Chromadb、Milvus、ES等。一般可以根据业务场景、硬件、性能需求等多因素综合考虑,选择合适的数据库。

3.3.2 应用阶段

在应用阶段,我们根据用户的提问,通过高效的检索方法,召回与提问最相关的知识,并融入Prompt;大模型参考当前提问和相关知识,生成相应的答案。关键环节包括:数据检索、注入Prompt等。

· 数据检索

常见的数据检索方法包括:相似性检索、全文检索等,根据检索效果,一般可以选择多种检索方式融合,提升召回率。

o 相似性检索:即计算查询向量与所有存储向量的相似性得分,返回得分高的记录。常见的相似性计算方法包括:余弦相似性、欧氏距离、曼哈顿距离等。

o 全文检索:全文检索是一种比较经典的检索方式,在数据存入时,通过关键词构建倒排索引;在检索时,通过关键词进行全文检索,找到对应的记录,比如ES。

· 注入Prompt

Prompt作为大模型的直接输入,是影响模型输出准确率的关键因素之一。在RAG场景中,Prompt一般包括任务描述、背景知识(检索得到)、任务指令(一般是用户提问)等,根据任务场景和大模型性能,也可以在Prompt中适当加入其他指令优化大模型的输出。

· LLM生成

在这个阶段,我们将经过检索增强的提示内容输入到大语言模型(LLM)中,以生成所需的输出。这个过程是RAG的核心,它利用LLM的强大生成能力,结合前两个阶段的信息,从而生成准确、丰富且与上下文相关的输出。

4. Agent的应用

4.1 Agent概念

在大语言模型LLM领域中,Agent是一个人工智能系统的设计理念,它旨在模拟人类或其他智能体的行为和决策过程。Agent被设计为能够在特定环境中运作,能够感知环境状态,处理信息,制定策略,执行行动,并根据反馈调整其行为。

Agent 的本质是教大模型一些思考方法论,就好像人们已经有了知识,但可能缺乏思考的方法。因此,Agent 通过一个框架传授方法论,这个框架具有一些具体模块,支持整个结构的运行。

4.2 Agent关键组件

Open AI 的 Lilian Weng 在个人博客发表的一篇文章:LLM Powered Autonomous Agents描述了 Agent 系统的全貌:

LLM Powered Autonomous Agents系统

Agent:核心,理解为可以处理一些复杂操作的“代理”服务,其核心驱动力是大模型;

Tools:提供给 Agent 的工具,例如计算、搜索网络、代码执行等;

Memory:由数据库或者其他存储上保存交流的历史记录,防止交流过程中遗忘之前的信息;

Planning:LLM的一些能力,包括反射、目标分解、反思、思维链。

4.2.1 Planning

一个复杂的任务通常涉及多个步骤,Agent需要知道这些步骤并提前计划,类型包括:

  • 子目标和任务分解

  • 反思与改进

(1)子目标和任务分解: Agent将大型任务分解为更小、更易管理的子目标,使得能够有效地处理复杂任务。其技术研究包括:

> 思维链(CoT;Wei等人,2022年)已成为增强模型在复杂任务上性能的标准提示技术。模型被指示“一步一步思考”,利用更多测试时间计算将困难任务分解为更小、更简单的步骤。CoT将大任务转化为多个可管理的任务,并揭示了模型思考过程的解释。

> 思想树(ToT;Yao等人,2023年)通过在每一步探索多种推理可能性扩展了CoT。它首先将问题分解为多个思维步骤,并在每一步生成多个思想,创建一个树状结构。搜索过程可以是广度优先搜索(BFS)或深度优先搜索(DFS),每个状态由分类器(通过Prompt)或多数投票评估。

(2)反思与改进: Agent可以对过去的行为进行自我校准和自我反思,从错误中学习并改进未来步骤,从而提高最终结果的质量。其技术研究包括:

> ReAct(Yao等人,2023年)通过将“Acting行为”和“Reasoning推理”组合,在LLM中集成推理和行动。前者使LLM能够与外部环境交互(例如Wikipedia搜索API),而后者提示LLM生成自然语言中的推理轨迹。

ReAct提示模板包含LLM思考的明确步骤,大致格式为:

Thought: ...``Action: ...``Observation: ...``... (Repeated many times)

ReAct模式推理轨迹

上面是一个例子。问题是:除了Apple Remote之外,还有什么设备可以控制 Apple Remote 最初设计用于交互的程序吗?

然后 ReAct 就会一步步拆开,第一个 Thought:需要查找 Apple Remote原生的交互程序;然后进行一个 Action,去 google 找这个问题答案。然后进行下一个 Thought:Apple remote 是一个控制媒体的程序,需要查找其他可以控制媒体中心的程序,然后继续下一个 Action:找不到;然后继续 Thought:找其他相关的;然后找到了。把找到的信息填入到最后一个 Thought,得到最终答案。

所以 ReAct 是通过外部工具和反复查找匹配得到最终答案的过程。

这样似乎给我们打开了一个新的解决问题的路径。利用 LLM 的拆解问题的能力,在中间过程投喂信息。人工参与确认是否正确,直至找到人类认可的答案。

4.2.2 Memory

Memory可以定义为获取、存储、保持和随后检索信息的过程。Memory类型如下:

(1) 短期Memory:认为所有在上下文学习(见Prompt Engineering)中利用的都是模型的短期Memory来学习;是短暂和有限的,因为它受到Transformer上下文窗口长度的限制。

(2) 长期Memory:这为Agent提供了在长时间内保留和回溯(无限)信息的能力,通常利用外部向量存储和快速检索实现。

4.2.3 Tools

Agent可以调用外部API获取模型权重中缺失的额外信息(通常在预训练后难以更改),包括当前信息、代码执行能力、访问专有信息源等。

Tools使用意味着Agent能够识别和利用外部资源(如API、数据库或其他模型)来增强其解决问题的能力。这可能包括学习如何调用适当的API获取额外信息、从数据库中检索相关数据或组合多个模型的输出以生成更全面的答案。通过这种方式,Tools使用使Agent能够适应不断变化的环境和任务需求,提高其灵活性和效率。

我们熟悉的ChatGPT插件和OpenAI API函数调用是LLM与工具增强的好例子。这些工具允许LLM访问额外的信息源和计算能力,从而扩大其解决问题的能力范围。

Agent应用案例-ChatDev虚拟软件开发公司

5. 多模态模型

5.1 多模态定义

什么是多模态呢?简单来说,多模态就像是一个多才多艺的艺术家,能够同时使用多种艺术形式来创作作品。在AI领域,多模态模型能够同时处理和理解多种类型的数据,比如文字、图像、声音和视频。

5.2 为什么需要多模态

为什么我们需要能够处理多种数据类型的AI模型呢?原因很简单:我们的世界是多模态的。我们交流和感知世界不仅仅通过语言,还包括视觉、听觉等多种方式。多模态模型能够更全面地理解和模拟人类的交流和感知方式,使得AI能够更自然地与人类互动。

5.3 多模态的作用和特点

多模态模型就像是我们的大脑,能够同时处理和理解来自眼睛(视觉信息)、耳朵(听觉信息)和其他感官的数据。作用主要体现在以下几个方面:

1. 信息整合:能够将不同类型的信息整合在一起,提高理解和分析的准确性。

2. 增强表现力:通过结合多种数据源,模型可以表现出更强的感知和认知能力。

3. 提高鲁棒性:多模态模型可以在某种类型数据缺失或不完整的情况下,依靠其他数据类型来弥补,从而提高整体性能。

与单一模态的模型相比,多模态模型具有以下特点:

1. 源数据处理:能够同时处理图像、文字、声音等多种数据类型。

2. 更强的泛化能力:在不同的应用场景下表现更好,因为它们能够整合更多的信息。

5.4 多模态模型的应用案例

‍‍多模态模型在很多领域有着广泛的应用。以下是几个典型的例子:

1. 医疗诊断:通过结合病人的影像数据(如X光片)、文字数据(病历)和生理数据(心电图),多模态模型可以提供更准确的诊断结果。

2. 自动驾驶:多模态模型可以结合摄像头图像、雷达数据和GPS信息,帮助自动驾驶汽车更好地理解周围环境,提高安全性。

3. 智能客服:通过整合语音识别、自然语言处理和情感分析,多模态模型可以提供更自然、更人性化的客服服务。‍

多模态大模型是人工智能领域的重要进展,它们通过整合多种类型的数据,显著提升了模型的表现力和鲁棒性。这不仅使得人工智能系统能够更好地理解复杂的现实世界,也为未来的技术发展带来了无限可能。无论是在医疗、交通还是日常生活中,多模态大模型正逐步改变我们的生活方式。

读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用

对于0基础小白入门:

如果你是零基础小白,想快速入门大模型是可以考虑的。

一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。

包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

👉AI大模型学习路线汇总👈

大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

👉大模型实战案例👈

光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉大模型视频和PDF合集👈

观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述
在这里插入图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

👉获取方式:

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值