LLM术语
Token:模型理解和处理的基本单位
在 AI 领域,Token 是指模型处理的基本数据单位。它可以是单词、字符、短语甚至图像片段、声音片段等。例如,一句话会被分割成多个 Token,每个标点符号也会被视为单独的 Token。
Token 的划分方式会影响模型对数据的理解和处理。例如,中英文的 Token 划分方式就存在差异。对于中文,由于存在多音字和词组的情况,Token 的划分需要更加细致。
为了更好地理解 Token 的概念,让我们来看一个简单的例子。假设我们要将句子今天天气很好
进行 Token 化,那么,该句子的 Token 序列可能有以下几种情况,取决于大模型的分词规则、架构以及数据集:
基于空格的 Token 化:
["今天", "天气", "很好"]
基于字的 Token 化:
["今", "天", "天", "气", "候", "很", "好"]
基于 BERT 的 Token 化:
在 BERT 的 Token 化结果中,
[CLS]
和[SEP]
是特殊的 Token,它们分别表示句子的开始和结束。
["今", "天", "天", "气", "候", "[CLS]", "很", "好", "[SEP]"]
具体的分词效果,可以通过 OpenAI 官方的 Tokenizer 工具查看。https://platform.openai.com/tokenizer
Context Window 上下文窗口:捕捉信息的范围
上下文窗口指的是 AI 模型在生成回答时考虑的 Token 数量。它决定了模型能够捕捉信息的范围。上下文窗口越大,模型能够考虑的信息就越多,生成的回答也就越相关和连贯。
例如,GPT-4 Turbo 拥有 128k 个 Token 的上下文窗口,相当于超过 300 页的文本。这使得 GPT-4 能够生成更具上下文相关性和微妙差别的回复。
如果上面这个例子不够直观的话,可以再看一个例子。
假设一个 LLM 模型的 Context Window 为 5,那么在处理句子 “今天天气很好” 中的「天气」这个 Token 时,模型会同时考虑 “今天” 和 “很好” 这两个 Token 的信息,以此来更好地理解「天气」的含义。
Context Length 上下文长度:模型处理能力的上限
上下文长度是 AI 模型一次能够处理的最大 Token 数量。它决定了模型处理能力的上限。上下文长度越大,模型能够处理的数据量就越大。
例如,ChatGPT 3.5 的上下文长度为 4096 个 Token。这意味着 ChatGPT 3.5 无法接受超过 4096 个 Token 的输入,也无法一次生成超过 4096 个 Token 的输出。
Temperature 温度:控制创造性和确定性之间的平衡
温度是控制 AI 模型生成输出随机性的参数。它决定了模型在生成输出时更倾向于创造性还是保守和确定性。
温度值越高,模型越倾向于生成随机的、意想不到的输出,但也可能导致语法错误或无意义的文本。温度值越低,模型越倾向于生成符合逻辑和常识的输出,但也可能缺乏创造性和趣味性。
例如,在设置较低温度时,语言模型可能会生成以下句子:“今天天气晴朗,适合户外活动。” 而设置较高温度时,模型可能会生成以下句子:“天空像一块巨大的蓝宝石,点缀着棉花糖般的白云。鸟儿在枝头歌唱,微风拂过脸庞,一切都是那么美好。”
Prompt Engineering

纯Prompt技术架构可以看作是最原始、最直观的与大语言模型的交互方式。他在任务效率上也是最高的,有效的Prompt也是可以最大程度的激发模型的好的表现,它是模型效果优化的两条路径-微调和RAG技术,共同的基础。
延展点来讲,Prompt更像是一种激发模型自己内部更好表现的一个指引,因为模型在基于大量数据进行学习时会总结很多in-context-learning的内部规律,而好的Prompt就是可以激发正确的规则去引导模型更好的表现。
在交互上,这也是大语言模型与人类最友好的方式。它就像与一个人对话,你说一句,AI回应一句,简单直接,不需要对模型有什么权重的更新和复杂处理。

Agent
一句话总结,Agent智能体 = 基于大模型的推理结果+结合工具触发下一步行为和交互

在 AI 大模型时代,Agent可以被抽象的理解为具备基于思考结果并可以与环境进行交互的实产品或能力。我们有时候也叫它“代理”、“智能主体”。
Agent构建在大语言模型的推理能力基础上,对大语言模型的 Planning 规划的方案使用工具执行(Action) ,并对执行的过程进行观测(Observation),保证任务的落地执行。

举个例子来方便理解:
想象一个机器人管家。这个机器人能够理解你的指令,比如“请打扫客厅”,并且能够执行这个任务。机器人管家就是一个agent,它能够自主地感知环境(比如识别哪些地方是客厅),做出决策(比如决定打扫的顺序和方法),并执行任务(比如使用吸尘器打扫)。在这个比喻中,机器人管家是一个能够自主行动和做出复杂决策的实体。
Function Calling
Function calling
通常指的是模型调用特定函数的能力,这些函数可以是内置的,也可以是用户自定义的。在执行任务时,模型可能会通过分析问题来决定何时以及如何调用这些函数。例如,一个语言模型在回答数学问题时,可能会使用内部的计算函数来得出答案。Function calling
机制允许模型利用外部工具或内部功能来增强其处理特定任务的能力。
Function Calling
机制主要由以下几个关键组件构成:
函数定义:预先定义可调用的函数,包括名称、参数类型和返回值类型等。
函数调用请求:用户或系统发出的调用请求,包含函数名称及所需参数。
函数执行器:实际执行函数的组件,可能是外部的 API 或本地逻辑处理器。
结果返回:函数执行完毕后,返回结果给 ChatGPT,继续对话

举个例子来理解:想象你正在使用一个智能手机。当你想要拍照时,你会打开相机应用。这个相机应用就是一个Function Calling ,它提供了拍照的功能。你通过点击相机图标来“调用”这个功能,然后你可以拍照、编辑照片等。在这个比喻中,智能手机就是大模型,你想要拍照的行为是大模型判断得到的结论,相机应用就是预定义的函数,而打开相机应用并使用其功能就是基于模型分析结果的Function Calling。
LLM 的 Function Calling 机制极大地扩展了其功能,使其能够在对话中动态调用外部函数,提供实时、个性化和互动的服务。这一机制不仅提升了用户体验,也为开发者提供了强大的工具,帮助他们构建更智能、更强大的对话系统和应用。
Function Calling VS Agent
Function Calling就像是调用一个具体的功能或工具来帮助你完成特定的任务,而Agent则更像是一个能够独立思考和行动的个体,它可以在没有人类直接指导的情况下完成一系列复杂的任务。
在某些高级应用中,Function Calling功能可以视为AI Agent的一种具体行动表现形式,即智能体在执行任务过程中调用外部资源或服务的一种策略。例如,一个具备Function Calling能力的AI Agent在进行对话或解决问题时,能动态地发起函数调用来获取额外的信息或执行特定的操作,从而更好地服务于用户需求。
function_call 更侧重于表示模型直接产生调用函数的具体行为,是模型执行流程中的一个具体步骤或操作。
agent 则是一个更为宽泛的概念,代表的是具有智能行为的整体系统,它包括了感知、推理、决策以及执行等多个环节,而不仅仅是发起函数调用这一动作。
总结来说,function_call 是构建高效、智能Agent的重要组成部分,用于实现Agent对外部世界的操作接口和交互能力,而Agent则是包含了更多复杂逻辑和生命周期管理的完整实体。
RAG
(检索增强生成)
一句话总结,RAG就是给大模型它原本数据集中没有的知识。

RAG(Retrieval-Augmented Generation)技术是一种集成检索与生成双重能力的知识增强方案,旨在应对复杂多变的信息查询和生成挑战。在如今的大模型时代背景下,RAG 巧妙地引入非模型训练所使用的外部数据源,比如截止模型训练时使用的数据之后的更为实时的数据,或者是一些没有公开的内部数据等,为大模型赋予了更准确和更实时的信息检索实力,从而显著提升了信息查询和生成的答案的质量。
RAG架构结合了Embeddings和向量数据库技术。Embeddings是将文字转换为向量编码,这些向量存储在向量数据库中,以便于相似度计算和快速查找。当接收到用户输入时,AI会根据输入向量在数据库中找到最相似的向量,也就是相关的知识片段,随后,这些片段会与大模型的智慧相结合,为用户生成更精确和全面的回答。
Fine-Tuning:深入学习与长期记忆
Fine-tuning(微调)是一种通过特定领域数据对预训练模型进行针对性优化,以提升其在特定任务上的性能的技术。它利用特定领域的数据集对已预训练的大模型进行进一步训练,使模型能够更好地适应和完成特定领域的任务
Fine-tuning的核心原因
定制化功能:微调的核心原因是赋予大模型更加定制化的功能。通用大模型虽然强大,但在特定领域可能表现不佳。通过微调,可以使模型更好地适应特定领域的需求和特征。
领域知识学习:通过引入特定领域的数据集进行微调,大模型可以学习该领域的知识和语言模式,有助于模型在特定任务上取得更好的性能

RAG VS Fine-tuning
知识获取与融合能力:RAG技术为语言模型赋予了无与伦比的知识检索与融合能力,突破了传统Fine-tuning微调方式的局限,使模型的输出质量和知识覆盖面得到了极大的提升。
幻觉减少:RAG系统的设计本质上可以降低其产生幻觉的可能性,因为它基于实际检索到的证据进行响应构建,而Fine-tuning微调虽然可以在一定程度上缓解模型产生幻觉的倾向,但并不能完全消除这一风险
知识库
对于一些垂直领域,或者说企业内部,都不免会遇到需要构建一个符合自身业务特点的垂直或者内部知识库的场景。通过RAG、微调等技术手段,我们可以将通用的大模型转变为对特定行业或者企业内部有着深度理解的“行业专家”,从而更好地服务于特定的业务需求。
离线的知识数据向量化
加载:首先,系统通过文档加载器(Document Loaders)来读取和加载数据或知识库。这可能包括文本文件、PDF、Word文档等格式的文档。
拆分:文本拆分器将大型文档分割成更小的块或段落,这样做的目的是为了让这些小块数据(chunk)能够更容易地被处理和向量化。
向量:对这些拆分后的数据块进行向量化处理,即通过某种算法(如Word2Vec、BERT等)将文本转换为数值向量,这些向量能够捕捉文本的语义信息。
存储:将这些向量化的数据块存储到向量数据库(VectorDB)中。这种数据库专门用于存储和检索向量化的数据,可以高效地进行相似性搜索。

在线知识的检索返回
检索:当用户提出问题时,系统使用检索器根据用户的输入从向量数据库中检索出相关的数据块(Chunk)。检索过程可能涉及到计算用户输入与数据库中向量的相似度,并找出最相关的几个数据块。
生成:检索到的数据块,连同用户的问题一起,作为输入提供给大型语言模型。语言模型根据这些信息生成答案。这个过程会涉及到对检索到的知识进行理解和整合,然后以自然语言的形式回答问题。

向量数据库
向量数据库是一种专门设计用来存储和查询向量数据的系统。这里的向量数据通常是指通过某种算法将原始数据(如文本、语音、图像等)转换成的数值向量形式。
知识库的存储载体往往是向量数据库。在数据存储和检索上,向量数据库以向量空间模型高效存储和检索高维数据,为 AI 大模型和 Agent 智能体提供强有力的数据支持。
向量数据库与传统数据库的区别:
传统数据库主要处理结构化数据,例如关系数据库中存储的表格数据。而向量数据库则更擅长处理非结构化数据,这些数据没有固定的格式或结构,例如文本文档、图像文件和音频记录。
向量数据库的应用场景:
在机器学习和深度学习领域,原始数据经常需要被转换成向量形式以便进行进一步的处理和分析。向量数据库在这方面非常有用,因为它们可以高效地处理这些向量化的数据。
向量数据库的优势:
- 高效存储:向量数据库优化了存储机制,可以有效地存储大量的高维向量数据。
- 高效索引:向量数据库使用特殊的索引结构(如KD树、球树等),可以快速定位和检索向量数据。
- 高效搜索:向量数据库能够执行快速的相似性搜索,找到与查询向量最相似的数据点,这对于推荐系统、图像识别和自然语言处理等应用非常重要。
处理复杂数据的能力:
向量数据库在处理包含数值特征、文本嵌入或图像嵌入等复杂数据时表现出色。这些数据在经过向量化处理后,可以利用向量数据库的搜索能力来实现更准确的匹配和检索。

指令微调
指令微调是一种通过在由(指令,输出)对组成的数据集上进一步训练 LLMs 的过程。其中,指令代表模型的人类指令,输出代表遵循指令的期望输出。这个过程有助于弥合 LLMs 的下一个词预测目标与用户让 LLMs 遵循人类指令的目标之间的差距。 指令微调可以被视为有监督微调(Supervised Fine-Tuning,SFT)的一种特殊形式。但是,它们的目标依然有差别。SFT 是一种使用标记数据对预训练模型进行微调的过程,以便模型能够更好地执行特定任务。而指令微调是一种通过在包括(指令,输出)对的数据集上进一步训练大型语言模型(LLMs)的过程,以增强 LLMs 的能力和可控性。指令微调的特殊之处在于其数据集的结构,即由人类指令和期望的输出组成的配对。这种结构使得指令微调专注于让模型理解和遵循人类指令。 总的来说,指令微调是有监督微调的一种特殊形式,专注于通过理解和遵循人类指令来增强大型语言模型的能力和可控性。虽然它们的目标和方法相似,但指令微调的特殊数据结构和任务关注点使其成为 SFT 的一个独特子集。