- Transformer 与 LLM 中的混合专家(MoE)
如上图,左边是传统 Transformer 的结构;右边是基于 Mixture of Experts(MoE) 的 Transformer 改进结构。
两者前半部分基本相同,主要区别出现在 Decoder Block 中的 前馈网络(Feed Forward Network) 部分。
📌 技术原理:
- Transformer 是一种神经网络结构,基于“自注意力机制”(Self-Attention),擅长处理序列数据(如文本)。
- Transformer 的基本结构包括:多头注意力机制 + 前馈网络 + 残差连接 + LayerNorm。
- MoE(Mixture of Experts) 是一种结构改进,它在原始的前馈层(FFN)中插入多个“专家子网络”:
-
- 每个专家网络都是一个小的 MLP。
- 通过一个门控函数(gating function)决定每个 token 激活哪些专家。
- 只激活一小部分专家,节省计算资源。
⚙️ 工作原理:
- 输入 token 被编码后进入 Transformer 层。
- 在 MoE 层,门控机制会判断:哪个 token 更适合哪个“专家”。
- 每个 token 只传给几个(通常是 2 个)专家处理。
- 专家输出加权合并,进入下一层。
- 提高了参数规模,同时大大降低了推理计算量。
✅核心对比总结
| 项目 | 标准 Transformer | Mixture of Experts(MoE) |
|---|---|---|
| FFN | 单一共享 FFN | 多个专家 FFN,动态选择 |
| 计算量 | 所有 token 都计算完整 FFN | 每个 token 只激活一小部分专家 |
| 参数规模 | 参数有限,易扩展受限 | 可大规模扩展参数,仍保计算高效 |
| 应用场景 | 通用场景 | 超大规模语言模型(如 GPT-MoE) |
- 微调 LLM 的 5 种方法
这张图展示了微调大语言模型(LLM)的 5 种常见方法,都是在原模型权重 冻结不变 的前提下,添加少量可训练参数,以实现 高效低成本微调 的技术方案。我们逐一讲解每种方法的原理与差异:
🧠 背景知识:为什么要用这些技术?
传统的 LLM 微调需要训练数百亿参数,非常耗费资源。LoRA 系列方法通过只训练少量附加参数,让微调变得高效、便宜且更易迁移。
✅ 1. LoRA(Low-Rank Adaptation)
🔧 原理:
在不修改原模型参数 WWW 的前提下,用两个小矩阵:
对其进行低秩更新。
🧩 关键点:
- 只训练 A、B 两个小矩阵(参数少,效率高)
- 原始权重 W 保持冻结
- 应用于 Q/K/V/W 的线性层
✅ 2. LoRA-FA(Feature-Aware LoRA)
🔧 原理:
与 LoRA 类似,也是插入两个低秩矩阵 A、B,但加入了特征感知(Feature-Aware)机制。
🧩 特点:
- A、B 会根据输入特征动态调整;
- 更适用于复杂任务中,提升泛化能力;
- 类似条件适应(conditional adaptation)。
✅ 3. VeRA(Vector-based Rank Adaptation)
🔧 原理:
VeRA 使用可训练向量(而不是矩阵)来构造 A、B,从而进一步减少参数量。
🧩 特点:
- A、B 向量通过哈希或随机映射扩展为矩阵;
- 进一步压缩参数;
- 适合边缘设备部署;
- 参数共享机制强。
✅ 4. Delta-LoRA
🔧 原理:
在 LoRA 的基础上,引入原始权重变化的残差(delta)建模:
其中:
🧩 特点:
- 不仅训练 LoRA 部分,还拟合权重变化;
- 综合了显式残差与隐式低秩;
- 精度提升但略增加训练成本。
✅ 5. LoRA+(LoRA Plus)
🔧 原理:
几乎与原始 LoRA 一样,但 更新规则改进,为矩阵 B 提供更大的学习率(因为它影响更大)。
🧩 特点:
- 训练更新时对 A、B 使用不同的学习率;
- 更高效训练、更快收敛;
- 效果通常优于原始 LoRA。
📊 5种方法总结对比表
| 方法 | 参数数量 | 训练速度 | 精度 | 原理特点 |
|---|---|---|---|---|
| LoRA | 少 | 快 | 好 | 低秩矩阵更新 |
| LoRA-FA | 中 | 中 | 较好 | 输入特征感知 |
| VeRA | 极少 | 极快 | 一般 | 向量构造矩阵 |
| Delta-LoRA | 多 | 慢 | 更好 | 加入权重残差 |
| LoRA+ | 少 | 快 | 更好 | 更优更新策略 |
- RAG 与 Agentic RAG 对比
如上图清晰地对比了两种 RAG(Retrieval-Augmented Generation)检索增强生成 方法:
✅ 上半部分:传统 RAG
🤖 下半部分:Agentic RAG(Agent 驱动的增强型 RAG)
🧠 背景科普:什么是 RAG?
RAG 是一种将外部知识库(如文档、数据库)与大语言模型(LLM)结合的技术。它通过“先检索再生成”的方式,让模型不依赖记忆就能回答问题。
✅ 一、Traditional RAG 的原理(上半部分)
步骤流程:
- 文档编码
通过嵌入模型(如 OpenAI Embedding 或 Sentence-BERT)将文档转换为向量。 - 构建向量索引
把这些向量保存到向量数据库(如 FAISS、Pinecone、Weaviate)。 - 用户提问编码
将用户的查询转成向量表示。 - 相似度检索
在向量数据库中查找与 query 向量最相近的文档。 - 拼接上下文
把相似文档与 query 一起作为 prompt 提供给大模型。 - 输入 LLM
大模型结合用户问题和外部知识,生成答案。 - 输出最终结果
🤖 二、Agentic RAG 的原理(下半部分)
特点:像一个思考的智能体(Agent)一样,不断反思、决策、修正和补充信息。
步骤流程:
- 输入初始 query
- Agent 重写问题
让问题更适合检索或回答(增强 clarity & intent)。 - 评估是否需要更多细节?
Agent 自主判断这个问题是否需要进一步搜索。 - 若 不需要 → 直接生成答案(见步骤 9-11)
若 需要 → 继续下一步: - Agent 判断最佳信息来源
比如选择:向量数据库 / API / 实时网页 / 内部文档等。 - 选择合适的 source 进行搜索
- 检索上下文
- 与 updated query 一起输入 LLM
- 模型生成回答**
** - Agent 评估回答是否相关、有用
- 若 YES → 输出最终结果
- 若 NO → 重新开始 → 调整 query,继续反馈闭环
🧩 对比总结:
| 维度 | Traditional RAG | Agentic RAG |
|---|---|---|
| 是否具备自我调节能力 | ❌ 不具备 | ✅ 具备(可判断信息是否充分) |
| query 是否会优化 | ❌ 一次性输入 | ✅ 可动态重写、细化 query |
| 检索来源 | 通常只支持向量数据库 | 可使用向量库、API、互联网等多源 |
| 回答质量控制 | ❌ 无反馈闭环 | ✅ 有判断机制,不满意可反复查找 |
| 使用场景 | 简单问答、静态知识 | 高准确性要求、动态信息检索场景 |
🧠 总结:
Traditional RAG = 静态问答机器人
Agentic RAG = 会思考的搜索助手 + 问答机器人
- 5 种常见的 Agentic AI 设计模式
这张图介绍了五种最流行的代理AI设计模式,它们分别是:反射模式、工具使用模式、React模式、规划模式和多代理模式。以下是每种模式的工作原理:
- 1.反射模式(Reflection Pattern) :
-
- 用户提出问题(Query)。
- LLM(大型语言模型)生成答案(Generate)。
- 系统将生成的答案反射回LLM,以进行迭代改进(Iterate),生成更理想的初始输出。
- 2.工具使用模式(Tool Use Pattern) :
-
- 用户提出问题(Query)。
- LLM进行推理(Reason),并调用相应的工具。
- 工具执行操作并返回结果,供用户查看。
- 3.React模式(ReAct Pattern) :
-
- 用户提出问题(Query)。
- LLM进行推理(Reason)。
- 根据推理结果,代理执行相应的操作(Action),如与数据库交互或调用API,最终将结果返回给用户。
- 4.规划模式(Planning Pattern) :
-
- 用户定义任务(Planner)。
- 系统生成执行这些任务所需的代码或指令。
- 如果不需要执行单个任务,则通过代理(ReAct Agent)执行这些任务,并将结果返回给用户。
- 5.多代理模式(Multi-agent Pattern) :
-
- 用户提出问题(Query)。
- 前端代理(FM agent)将问题分配给不同的代理,如设计代理(DesignTime agent)、开发运维代理(DevOps agent)和技术负责人代理(Tech lead agent)。
- 每个代理执行相应的任务,并将结果整合后返回给用户。
| 模式名称 | 优点 | 缺点 |
|---|---|---|
| 反射模式 | 通过用户反馈实现输出迭代优化,显著提升生成内容准确性 | 需要多次交互迭代,响应时间较长,用户体验可能受影响 |
| 工具使用模式 | 通过调用外部API扩展能力边界,可处理复杂结构化数据场景 | 依赖第三方工具稳定性,错误传递风险较高,需维护多个接口文档 |
| React模式 | 推理与执行闭环设计,适合需要实时数据更新的交互场景 | 流程链路复杂度较高,调试定位问题困难,资源消耗较大 |
| 规划模式 | 支持任务自动分解与代码生成,适合大规模流程自动化场景 | 任务拆解可能偏离预期,需人工校验中间结果,维护成本较高 |
| 多代理模式 | 分布式协同工作机制,具备横向扩展能力,可并行处理异构任务 | 代理间通信成本较高,需额外设计协调机制,系统架构复杂度陡增1 |
- RAG 的 5 种分块方法
上图是《5种 RAG(Retrieval-Augmented Generation)的切分策略(Chunking Strategies)》,用于将文档拆分为更适合大模型处理的“块”,以提高检索增强生成(RAG)的效果。下面是图中五种策略的逐一讲解:
1)Fixed-size chunking(固定长度切分)
- 原理: 将文本按固定长度(如字数或token数)切分,每个chunk长度一致,可能有重叠。
- 例子:
-
- Chunk 1: “Artificial intelligence is transforming technology”
- Chunk 2: “transforming technology and shaping the future”
- 优点: 简单高效,易于实现。
- 缺点: 可能会打断语义结构,不利于理解上下文。
2)Semantic chunking(语义切分)
- 原理: 首先按句子或段落划分,然后基于语义相似度(如余弦相似度)将相近的部分聚成一个chunk。
- 步骤:
-
- 分句或分段。
- 依次合并相似内容直到相似度骤降。
- 开始下一个chunk。
- 优点: chunk 更具语义完整性,有助于更准确的检索。
- 缺点: 计算复杂度较高。
3)Recursive chunking(递归切分)
- 原理: 按主题或段落初步划分后,对超过最大chunk大小的部分继续递归切分。
- 步骤:
-
- 按大段落或主题初步切分。
- 判断是否超过chunk大小限制。
- 若超过,继续细分,直到合适为止。
- 优点: 平衡了结构完整性与大小限制。
- 缺点: 可能出现不均匀的chunk大小。
4)Document structure-based chunking(基于文档结构切分)
- 原理: 利用文档固有结构(如标题、引言、小节、结论)进行切分。
- 步骤:
-
- 根据格式化结构切分:如标题、引言、各节。
- 每部分作为一个chunk。
- 若部分太大,再结合递归切分处理。
- 优点: 保留了清晰的逻辑结构,适合正式文档。
- 缺点: 依赖文档格式标准化,不适用于非结构化文本。
5)LLM-based chunking(基于大模型的切分)
- 原理: 直接将原始文档输入大模型,由其智能生成最合适的语义chunk。
- 步骤:
-
- 输入文档给LLM。
- 让LLM基于语义、结构、自定义规则等生成chunk。
- 优点: 高智能性、灵活性强,能自适应各种内容。
- 缺点: 计算资源消耗大,可能不可控。
🧠总结建议:
| 策略 | 是否推荐用于正式文本 | 是否保留语义完整性 | 实现难度 |
|---|---|---|---|
| Fixed-size chunking | ❌ | ❌ | ⭐ |
| Semantic chunking | ✅ | ✅ | ⭐⭐⭐ |
| Recursive chunking | ✅ | ✅ | ⭐⭐ |
| Structure-based | ✅✅ | ✅✅ | ⭐⭐ |
| LLM-based chunking | ✅✅✅ | ✅✅✅ | ⭐⭐⭐⭐ |
如你正在做文档类RAG项目,推荐 结构化切分 + 递归切分 或 语义切分;若你对效果要求极高、资源充足,可以尝试 LLM-based chunking。
原文地址:https://mp.weixin.qq.com/s/8L7v4Csot9pxQ2hQa3z7sQ