备注前言:概念都是个人理解,如有错误欢迎指出。
LLM (大语言模型)
- 含义:LLM是一个参数量巨大的数学模型(统计概率模型);本质上是词语接龙不断去预测下一个字。
- 诞生:分为两个阶段
- 训练
- 推理
- 涌现: 当参数达到一定规模时,AI 会突然获得原本不具备的复杂逻辑推理、代码理解等高级能力。
备注注意:大模型本身没有记忆。
Context Window(上下文窗口)
- 含义:AI 一次能处理的最大 Token 数,也就是你能够输入的最大token数。
Token(词元)
- 含义:AI 能理解的最小文本单位(约 ¾ 个英文单词),介于单词与字符之间,同时也是大模型计费和上下文长度的计量单位
Token 和 字、 词 有什么区别?
很多人以为Token = 单词,但其实不完全是。因为Token的划分是基于算法的。
| 文本 | Token数 | 备注 |
|---|---|---|
| cat | 1 | 常见词,一个词一个Token |
| ChatGPT | 3 | Chat + G + PT |
| 你好 | 约 2~3 | 中文比英文会消耗更多的Token |
Tokenizer(分词器)
- 作用:把文本切割成一块一块的碎片,每一块就叫做一个 Token(词元)。
Embedding(嵌入)
- 作用:把文本/图片转成数字向量,用于相似度计算,同时也是RAG的基础。embedding模型属于LLM模型中的一部分。
为什么要引入高维数据向量?
- 主要是为了从更多的维度描述单词。
备注例如:维度1表示颜色;维度2表示形状;苹果和西瓜在向量坐标中虽然编号不同;但是空间位置很相近。
Function Call(方法调用)
- 含义:Agent 调用外部工具/API 执行动作
- 作用:允许模型在需要时调用预定义的函数来获取数据或执行操作。
- 缺点:
- Function Call的平台依赖性强,没有一个统一的标准,不能做到即插即用。
- 一般是本地程序调用,外界无法使用;也因此MCP应运而生。
MCP(模型上下文协议)
- 官方文档:https://modelcontextprotocol.io
- 调试工具 Inspector:npx @modelcontextprotocol/inspector
什么是MCP?
- 含义:Agent 连接外部工具/数据源的标准化协议。
- 作用:主要是为增强AI的能力,作为使用者通过MCP我们可以轻松接入别人已经写好的服务。
核心架构
- Host(主机):用户使用的 AI Agent,管理多个Client。
- Client(客户端):Host的内部组件,与Sever一对一连接,负责将模型的工具调用请求翻译为标准协议消息。注意:Host 每连接一个 Server 就会创建一个 Client
- Server(服务器):包一层标准协议,暴露某个具体工具或数据源的能力,注意:不直接大模型对话,通过Client传递对话。
底层通信统一使用 JSON-RPC 2.0 消息格式。
三大核心原语
| 原语 | 定义 | 典型场景 |
|---|---|---|
| Tools(工具) | 可执行的动作,模型可主动调用,会产生副作用(如写数据、发消息) | 发送邮件、创建工单、执行数据库查询、操作文件 |
| Resources(资源) | 只读数据,供模型读取上下文,不涉及执行 | 日志文件内容、数据库表快照、API 文档 |
| Prompts(提示词模板) | 预先写好的可复用提示词模板,用户或应用可以直接调用 | “帮我总结这份合同的关键条款”、“分析这段代码的性能问题” |
传输方式
支持两种传输方式一种stdio,一种Streamable HTTP
- stdio(标准输入输出):本地工具,Host 以子进程方式启动 Server
- Streamable HTTP:远程生产环境,Server 作为 HTTPS 服务部署
提示Function Calling和MCP的区别?
Function Calling 是模型调用工具的底层机制,MCP其实就是在上加了一层标准化协议罢了,规定协议后就可以让多个AI Agent共同调用了。
注意:MCP只是一个标准协议,并不提供特定的服务,你可以按照要求编写自己的MCP服务。
Skills (技能)
Skills 在技术上是一个 Markdown 文件(SKILL.md),写着该任务的完整执行指南。它由人类编写,然后被智能体在执行任务时自动读取和遵循。
-
含义: Agent 可调用的专项能力模块
-
核心思想:将人类的专业知识封装成技能包,让 AI 在需要时自行加载和使用。
提示行为规范 + 专业知识 + 使用时机的组合
-
组成:其实就是一个文件夹(相当于打包好的提示词工程);里面必须有一个 SKILL.md 文件(包含说明和元数据),可选其他资源文件(如脚本、示例、参考文档)。
-
使用:Skills 的关键是渐进式披露,分三层加载:
- 技能发现 :AI 先读取所有技能的元数据(name 和 description),判断任务是否相关,注意:这些元数据始终在系统提示中。
- 加载核心指令 : 如果相关,AI 自动读取 SKILL.md 的正文内容,获取详细指导。
- 加载资源文件 :按需读取,执行脚本。
备注Skills和MCP的区别?
核心:Skills 用于知识复用,MCP 用于能力扩展。
简单来讲:
Skills相当于懒加载,是按需加载自动决定上下文。
MCP是启动就加载,每次请求都会占用上下文。
大模型的幻觉
1.什么是幻觉?
其实就是大模型生成不合理或完全虚构的内容,简单来说就是大模型瞎编。
2.为什么会出现幻觉?
- 一方面,跟模型的训练时间有关,比如模型的训练数据中可能包含错误或过时的信息。
- 另一方面,大语言模型本质上是 预测下一个词的概率 模型,它们倾向于生成流畅而未必准确的内容。
RAG(检索增强生成)
- 含义:先从知识库检索,获取信息后添加到提示词,然后再让模型生成。
- 作用:减少大模型的幻觉和知识截止日期。
一个完整的 RAG 系统由两条流水线组成:离线索引流水线(将文档预处理存入向量库)和在线查询流水线(接收用户问题、检索、生成)。
具体实现步骤如下:
- 离线索引流水线
- 文档收集和切割
- 向量转换和存储
- 在线查询流水线
- 文档过滤和检索
- 查询增强和关联
核心工作流程:
- 用户提问
- 问题向量化
- 向量检索
- LLM生成
- 返回结果
数据预处理与文档切分(Chunking)
在离线索引流水线中,我们要把文档预处理进向量数据库,因此我们需要对数据进行预处理,还要进行文档切分。(因embedding模型有token限制)
复杂文档解析
数据要保证语义完整,但是对于复杂文档如PDF、Word、图片等,普通的文本提取极易造成语义错乱。因此一般使用解析器,转成结构化的 Markdown。
文档切分策略(重点)
文档切分是 RAG 效果的基础,切分粒度直接影响检索质量。块太大会引入噪声,块太小会丢失上下文。常用策略如下:
| 切分策略 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| 固定大小切分 | 通用文本 | 实现简单,速度快 | 可能切断语义完整的句子 |
| 递归字符切分 | 结构化文本(Markdown、代码) | 优先按段落、句子等语义边界切分 | 实现略复杂,需设定合理的分隔符列表 |
| 语义切分 (Semantic) | 长文档、书籍 | 利用 Embedding 计算相邻句子的相似度,自动寻找语义转折点切分 | 计算成本高,预处理速度慢 |
| 父子文档检索 (Small-to-Big) | 全面覆盖场景 | 用"小块"进行高精度向量检索,命中后返回对应的"大块"(父文档)给 LLM,兼顾了检索精度和上下文完整性。 | 数据库设计和维护成本翻倍 |
注意:实践中常在切分时加入重叠,即相邻块之间共享若干字符,防止重要信息在边界处被截断。典型配置:块大小 512 tokens,重叠 50~100 tokens。
备注注意:RAG进行向量转换的Embedding模型和LLM的Embedding的模型并不一致。LLM的Embedding模型是随着训练一起出来的,而RAG进行向量转换的Embedding模型是需要单独去训练的。
差异:
- RAG Embedding:对整段文本做语义压缩,输出一个向量。
- LLM Embedding:对每个 token 编码,再通过 Transformer 整体理解整句话。
AI Agent(智能体)
- 含义:Agent = LLM (大脑) + Planning (规划) + Tool use (执行) + Memory (记忆)。
- 分类:
- 反应式智能体
- 目标导向智能体
- 实用性智能体
- 有限规划智能体
- 自主规划智能体
- 多智能体系统(多个智能体协同工作)
AI Agent 构成
一个典型的 AI Agent 由三个关键部分协同工作。
1.大型语言模型 (LLM)
- 功能:理解用户的目标,然后进行分析做出决策,是决策者相当于大脑。
2.工具 (Tools) - 可执行的动作
- 功能:一个个具体的函数或 API,让 Agent 能够与外部世界互动。比如读取文件、调用高德地图API获得位置信息等
3.记忆 (Memory) - 对话与经验的存储
- 功能
- 短期记忆:保存当前对话的历史、工具调用的结果等,让 Agent 记得之前说过什么、做过什么。就好比你跟朋友聊天,不需要每句话都重新自我介绍。
- 长期记忆:可以存储更持久的信息(例如用户偏好、历史任务结果),供未来任务参考。就像你有一本专属于你的用户档案。
警告这里要和大模型的上下文窗口区分开来。
短期记忆:直接对应大模型的上下文窗口,相当于当前的工作台。
长期记忆:是存储在数据库或者向量数据库中,需要时检索出来塞进大模型的上下文窗口中,相当于外部存储数据。
总结:AI Agent 的记忆核心在于 管理大模型上下文窗口。
总结:简答来说大脑负责思考,工具负责行动,记忆保证连贯,三者缺一不可。
AI Agent的工作流程
AI Agent 通常遵循一个名为 ReAct = Reasoning(推理)+ Acting(行动) 的经典思维范式。
- 含义:Reasoning + Acting 交替进行,边想边干,是 Agent 的核心范式。
具体流程如下:
- Thought (思考): 模型描述当前要做什么,为什么要这么做。
- Action (行动): 模型选择一个工具(如:
Google Search)。 - Observation (观察): 模型读取工具返回的结果。
- Repeat (循环): 重复上述步骤,直到得出最终答案。
这个 思考 → 行动 → 观察 → 再思考 的循环,就是 AI Agent 自主完成复杂任务的核心动力机制。
另外具体到实际项目中的流程如下:
- 用户输入
- 记忆增强:从Memory和RAG中取出数据,补充上下文和专业知识信息
- LLM推理
- Agent进行规划:进行决策,拆解任务、判断分几步完成、调用哪些工具等
- 执行工具:本地函数调用、MCP、API调用等
- 输出结果:汇总工具返回数据与模型推理结果,整理后返回用户,同时写入记忆存档。
CoT(思维链)
- 含义:引导模型产生中间推理过程,提升复杂推理能力。(思维链的实现主要是通过prompt实现,比如可以给出答题示例,然后再问问题,从而引导大模型推理)
- 核心思想:强制要求模型在输出最终答案前,先显式地输出中间的推理步骤
Agent Loop(智能体循环)
- 含义:是一种思考→行动→观察→再思考的迭代机制,核心就是React。
向量数据库
向量数据库(Vector Database)是一种专门用于存储、索引和检索高维向量数据的数据库系统。
你可以把它理解为:把意思相近的东西存在一起,并能快速找到和这个最像的那些东西。
与传统数据库的不同之处:传统数据库通过精确匹配来查询(WHERE name = ‘张三’),向量数据库通过相似度来查询。
为什么需要向量数据库
传统数据库擅长处理结构化数据,但是无法理解语义。比如你听歌时的推荐系统,会推荐符合你喜好的歌曲,这时候需要理解语义,而非字面意义上的匹配。
总结:向量数据库解决了传统数据库处理的语义相似性搜索问题。
核心概念:向量与嵌入
什么向量
在数学上,向量就是一组有序的数字。
|
|
在机器学习中,这组数字代表某个对象的语义特征,维度通常在 128 到 4096 之间。
什么是嵌入
嵌入(Embedding)是将现实世界的对象(文字、图片、音频等)转换成向量的过程和结果。这个转换由嵌入模型完成,其核心思想是:语义相近的对象,其向量在空间中的距离也更近。
应用
- RAG
- 个性化推荐系统
- 去重
- 图片
- 人脸
常见问题
| 问题 | 说明 | 解决方案 |
|---|---|---|
| 嵌入模型要统一 | 插入和查询必须用同一个模型 | 在配置文件中固定模型版本 |
| 维度不匹配 | 换了embedding模型但没重建集合 | 换模型时删除重建集合 |
| 文本过长 | 大多数embedding模型有 token 限制(512~8192) | 超长文本先分块(chunking) |
| 相似度不准确 | 文本没有分块,语义被稀释 | 按段落或固定长度切分文档 |
| 冷启动慢 | 数据量大时首次加载索引耗时 | 提前预热,或使用持久索引 |