从 TensorFlow 基础到 AI Agent 体系

全链路知识梳理

  Part 1: 深度学习基础  

Part 1: 深度学习基础

1.1 TensorFlow 简介

TensorFlow 是 Google 开发的开源深度学习框架,采用数据流图(Data Flow Graph)的方式执行计算。节点代表数学运算,边代表多维数据数组(张量)在节点之间流动。

TensorFlow vs PyTorch 对比

特性

TensorFlow

PyTorch

开发方

Google

Meta(Facebook)

计算图

静态图(2.x支持动态图)

动态图(Eager Mode)

部署

TF Serving / TF Lite / TF.js 生态完善

TorchServe

调试

较难(2.x改善)

原生Python调试

社区

工业界主流

学术界主流

入门

曲线较陡

更Pythonic

1.2 张量(Tensor)概念

张量是 TensorFlow 中最核心的数据结构,可以理解为多维数组。标量是0维张量,向量是1维张量,矩阵是2维张量,更高维度统称张量。

张量维度对照表

维度

名称

例子

形状

0-D

标量(scalar)

温度值 36.5

()

1-D

向量(vector)

[1, 2, 3]

(3,)

2-D

矩阵(matrix)

灰度图像

(28, 28)

3-D

3D张量

RGB图像

(28, 28, 3)

4-D

4D张量

批量图像

(32, 28, 28, 3)

5-D

5D张量

视频批量

(8, 30, 224, 224, 3)

1.3 自动求导 GradientTape

tf.GradientTape 是 TensorFlow 2.x 的自动微分工具,用于记录运算并自动计算梯度。只有 tf.Variable 类型的张量才会被默认追踪梯度。

Variable vs Constant 对比

特性

tf.Variable

tf.constant

可变性

值可变(assign)

不可变

梯度追踪

默认被追踪

需要watch()

用途

模型参数(权重/偏置)

超参数/常量

创建方式

tf.Variable()

tf.constant()

1.4 神经网络核心组件

1.4.1 激活函数

激活函数为神经网络引入非线性,使其能够学习复杂的映射关系。没有激活函数,多层网络退化为单层线性变换。

激活函数

公式(简)

值域

特点

典型用途

ReLU

max(0, x)

[0, +inf)

计算快,缓解梯度消失

隐藏层默认选择

Sigmoid

1/(1+e^(-x))

(0, 1)

输出概率,易梯度消失

二分类输出层

Tanh

(e^x - e^(-x))/(e^x + e^(-x))

(-1, 1)

零均值,梯度消失

RNN隐藏层

Softmax

e^xi / sum(e^xj)

(0, 1)总和为1

输出概率分布

多分类输出层

GELU

x * Phi(x)

约(-0.17, +inf)

平滑,Transformer常用

BERT/GPT

LeakyReLU

max(ax, x)

(-inf, +inf)

解决神经元死亡

GAN

1.4.2 梯度消失与梯度爆炸

深层网络训练中常见的问题。梯度消失使底层参数几乎不更新,梯度爆炸使参数更新过大导致训练不稳定。

问题

原因

解决方案

梯度消失

Sigmoid/Tanh导数小于1,多层连乘趋近于0

ReLU激活 / 残差连接 / 合理初始化(He/Xavier)

梯度爆炸

权重初始化过大,梯度连乘指数增长

梯度裁剪(clip) / BatchNorm / 合理初始化

1.4.3 损失函数

  学表达。

损失函数

公式(简)

适用场景

特点

MSE(均方误差)

mean((y-y_pred)^2)

回归问题

对大误差惩罚大

Cross-Entropy(交叉熵)

-sum(y * log(y_pred))

分类问题

衡量概率分布差异

[速记] 回归用MSE,分类用交叉熵 —— 回归看距离,分类看概率

1.4.4 优化器

优化器决定如何根据梯度更新模型参数,不同的优化策略影响收敛速度和最终效果。

优化器

核心思想

优点

缺点

推荐场景

SGD

沿负梯度方向更新

简单稳定

收敛慢

小数据集

Momentum

加入动量项

加速收敛

需调动量参数

CV任务

RMSprop

自适应学习率(平方和)

适合非平稳目标

可能学习率过低

RNN

Adam

动量+自适应学习率

快速收敛,少调参

可能不收敛

NLP/通用默认

AdamW

Adam+解耦权重衰减

正则化更好

略复杂

Transformer/大模型

1.4.5 正则化

正则化技术用于防止模型过拟合,提升泛化能力。

方法

原理

使用方式

直观理解

Dropout

训练时随机丢弃神经元

Dense后加Dropout层

团队不依赖单个人

BatchNorm

对每批数据标准化

卷积/全连接后加BN层

统一考试标准

L2正则化

损失函数加权重平方和

kernel_regularizer

不让权重太大

EarlyStopping

验证集性能不提升时停止

callback设置patience

见好就收

1.5 卷积神经网络(CNN)

为什么用CNN而不是全连接网络?

  • 参数共享:同一个卷积核扫描整个图像,大幅减少参数
  • 局部连接:每个神经元只关注局部区域,符合视觉感知特性
  • 平移不变性:目标出现在任何位置都能被检测到

CNN核心组件

组件

作用

关键参数

卷积层(Conv)

提取局部特征

kernel_size, filters, stride

池化层(Pool)

降维,增强鲁棒性

pool_size, stride

全连接层(FC)

整合特征做分类

units

激活函数

引入非线性

ReLU

特征层次结构

  • 浅层卷积:提取边缘、纹理等低级特征
  • 中层卷积:提取部件、形状等中级特征
  • 深层卷积:提取对象、语义等高级特征

1.6 循环神经网络(RNN & LSTM)

为什么需要RNN?

传统神经网络假设输入之间相互独立,但序列数据(文本、语音、时间序列)中前后元素存在依赖关系。RNN通过隐藏状态在时间步之间传递信息,捕获序列中的时序依赖。

LSTM三大门控

门控

作用

类比理解

遗忘门(Forget Gate)

决定丢弃哪些旧信息

整理书包:扔掉不用的旧笔记

输入门(Input Gate)

决定存入哪些新信息

整理书包:放入新发的讲义

输出门(Output Gate)

决定输出哪些信息

考试作答:从记忆中提取相关内容

LSTM vs GRU

特性

LSTM

GRU

门控数量

3个(遗忘+输入+输出)

2个(重置+更新)

参数量

较多

较少(约为LSTM的75%)

性能

复杂任务表现略好

简单任务效率更高

训练速度

较慢

较快

适用场景

长序列、复杂依赖

中等序列、资源受限

1.7 词嵌入(Embedding)

什么是Embedding?

Embedding是将离散的符号(如单词、物品ID)映射到连续的低维向量空间的技术。在这个空间中,语义相近的词距离也近。

水果类比

想象每种水果用一个向量表示:[甜度, 大小, 颜色红度, 价格]

  • 苹果 = [0.8, 0.5, 0.9, 0.4]
  • 梨   = [0.7, 0.5, 0.3, 0.4]
  • 苹果和梨的向量很接近,因为它们很相似

NLP例子

  • "国王" - "男人" + "女人" = "女王"
  • "巴黎" - "法国" + "中国" = "北京"
  • 这种"词向量运算"能力是Embedding的核心魅力

One-Hot vs Embedding

特性

One-Hot

Embedding

维度

词典大小(几万维)

固定低维(通常128-768)

稀疏性

极度稀疏(只有一个1)

稠密

语义信息

无(任意两词距离相同)

有(相似词距离近)

可扩展性

差(加词就变维度)

好(固定维度)

1.8 编码器-解码器(Encoder-Decoder)

翻译官类比

Encoder-Decoder 就像一个翻译官:先用Encoder(理解阶段)通读原句并理解其含义,将信息压缩成一个中间表示(context vector),然后用Decoder(表达阶段)逐词生成翻译结果。

典型应用

应用

Encoder输入

Decoder输出

机器翻译

源语言句子

目标语言句子

文本摘要

长文章

短摘要

图像描述

图像特征

描述文字

对话系统

用户输入

系统回复

瓶颈问题(Bottleneck)

传统Encoder-Decoder将整个输入序列压缩为一个固定长度的向量,信息容易丢失。Attention机制通过让Decoder在每一步都能"回看"Encoder的所有输出来解决这个问题,这也是Transformer的核心思想来源。

  Part 2: Transformer  

Part 2: Transformer 架构

2.1 一句话总结

Transformer 是一种基于自注意力(Self-Attention)机制的深度学习架构,完全抛弃了RNN的循环结构和CNN的局部感受野,实现了序列建模的并行化和长距离依赖捕获。它是 GPT、BERT 等大模型的基石。

2.2 架构概览

Transformer 由 Encoder(编码器) 和 Decoder(解码器) 两部分组成:

  • Encoder:由N个相同的层堆叠,每层包含 Multi-Head Self-Attention + FFN,用于理解输入
  • Decoder:由N个相同的层堆叠,比Encoder多一个 Cross-Attention 层,用于生成输出

三种变体

变体

使用组件

代表模型

适用任务

Encoder-Only

仅Encoder

BERT, RoBERTa

理解类:分类、NER、问答

Decoder-Only

仅Decoder

GPT系列, LLaMA

生成类:对话、续写

Encoder-Decoder

完整架构

T5, BART

序列转换:翻译、摘要

2.3 自注意力机制(Self-Attention)

Q/K/V 概念

符号

全称

含义

类比

Q(Query)

查询

当前位置想了解什么

我在找什么信息

K(Key)

每个位置提供什么线索

每本书的书名标签

V(Value)

每个位置的实际内容

每本书的具体内容

Self-Attention 计算五步

  • 1. 将输入分别乘以W_Q, W_K, W_V得到Q, K, V矩阵
  • 2. 计算注意力分数: scores = Q * K^T
  • 3. 缩放: scores = scores / sqrt(d_k)
  • 4. Softmax归一化: weights = softmax(scores)
  • 5. 加权求和: output = weights * V

核心公式

Attention(Q, K, V) = softmax(Q * K^T / sqrt(d_k)) * V

[速记] Self-Attention速记:Q问K答V得结果,除以根号d防极端,softmax归一做权重

2.4 为什么要除以 sqrt(d_k)?

当维度 d_k 较大时,Q*K^T 的点积结果数值也会很大,导致 softmax 函数进入梯度极小的饱和区。除以 sqrt(d_k) 相当于对点积做标准化,使 softmax 的梯度保持在合理范围,避免梯度消失导致注意力分布过于尖锐(one-hot)。

2.5 多头注意力(Multi-Head Attention)

将 Q, K, V 分别投影到 h 个不同的子空间,在每个子空间独立计算注意力,然后将结果拼接并线性变换。这使模型能同时关注不同位置的不同表示子空间的信息。

侦探类比

想象 h 个侦探,每个侦探有自己的调查角度:

  • 侦探1关注语法关系(主谓宾)
  • 侦探2关注语义关系(同义词)
  • 侦探3关注位置关系(相邻词)
  • 最后汇总所有侦探的发现,得到全面的理解

2.6 位置编码(Positional Encoding)

由于Transformer没有循环结构,无法天然感知序列中元素的位置顺序。位置编码为每个位置生成一个固定向量,与词嵌入相加,注入位置信息。

  • 使用正弦/余弦函数: PE(pos, 2i) = sin(pos / 10000^(2i/d))
  • 优势:可以推广到训练时未见过的序列长度

2.7 残差连接与层归一化

  • 残差连接(Residual): output = LayerNorm(x + SubLayer(x)),解决深层网络退化问题
  • 层归一化(LayerNorm): 对每个样本的所有特征做归一化,稳定训练过程
  • 两者结合使得Transformer可以堆叠很深(如GPT-3有96层)

2.8 Transformer vs RNN

特性

Transformer

RNN

并行计算

完全并行

必须串行

长距离依赖

任意距离O(1)

随距离衰减

计算复杂度

O(n^2 * d)

O(n * d^2)

训练速度

快(GPU友好)

内存

序列长时占用大

固定

位置信息

需要位置编码

天然有序

2.9 面试高频问题

Q: Transformer为什么比RNN更适合处理长序列?

A: Transformer通过Self-Attention可以直接计算序列中任意两个位置的关系,路径长度为O(1);而RNN需要逐步传递信息,路径长度为O(n),导致长距离依赖信息衰减。此外Transformer支持完全并行计算,训练效率更高。

Q: Self-Attention的计算复杂度是多少?有什么优化方法?

A: 标准Self-Attention复杂度为O(n^2 * d),其中n是序列长度。优化方法包括:(1)稀疏注意力(Sparse Attention)只关注部分位置;(2)线性注意力(Linear Attention)用核函数近似;(3)局部注意力(Sliding Window)限制感受野;(4)Flash Attention通过IO优化加速。

Q: Transformer中为什么用LayerNorm而不是BatchNorm?

A: (1)序列长度可变,BatchNorm难以处理;(2)BatchNorm依赖batch统计量,batch小时不稳定;(3)LayerNorm对每个样本独立归一化,不受batch影响;(4)RMSNorm是LayerNorm的简化版,在大模型中更常用。

Q: Multi-Head Attention中头数(head_num)如何选择?

A: 头数和模型维度需要配合:d_model / head_num = d_k,通常d_k=64。例如d_model=768时用12个头,d_model=1024时用16个头。头数越多,模型能捕获越多样化的注意力模式,但每个头的维度变小,表达力下降。

Q: Transformer的残差连接有什么作用?

A: 残差连接的作用:(1)缓解深层网络的梯度消失问题,提供梯度的直接传播路径;(2)使网络可以学习恒等映射,至少不比浅层网络差;(3)配合LayerNorm,使Transformer可以稳定堆叠很深(如96层)。

[速记] 不用循环不用卷,自注意力记心间;Q问K答V结果,多头并行真方便;位置编码加序列,残差归一稳训练

  Part 3: BERT  

Part 3: BERT 预训练语言模型

3.1 一句话总结

BERT(Bidirectional Encoder Representations from Transformers)是Google于2018年提出的基于Transformer Encoder的双向预训练语言模型,通过在大规模无标注语料上预训练,再微调到下游任务,刷新了11项NLP基准。

三大贡献

  • 1. 证明了双向预训练的有效性:同时看前后文,理解更深刻
  • 2. 统一了NLP任务范式:预训练+微调,一套架构搞定多种任务
  • 3. 开启了大模型时代:规模越大、数据越多、效果越好

3.2 两个版本

版本

层数

隐藏维度

注意力头数

参数量

BERT-Base

12

768

12

1.1亿

BERT-Large

24

1024

16

3.4亿

3.3 MLM 掩码语言模型

MLM(Masked Language Model)是BERT的核心预训练任务:随机遮住输入中15%的token,然后让模型根据上下文预测被遮住的词。

80/10/10 规则

  • 80%的选中token替换为[MASK]:直接遮住
  • 10%替换为随机词:让模型学到纠错能力,避免只学[MASK]位置
  • 10%保持不变:提供正确的输入表示,稳定训练

3.4 NSP 下一句预测

NSP(Next Sentence Prediction)判断两个句子是否为原文中的相邻句子,帮助模型理解句子间的关系。输入格式:[CLS] 句子A [SEP] 句子B [SEP]。

3.5 三种Embedding

  • Token Embedding:词本身的向量表示(WordPiece分词)
  • Segment Embedding:区分句子A和句子B(用于NSP任务)
  • Position Embedding:位置信息(学习式,非正弦式)

3.6 BERT vs GPT

特性

BERT

GPT

架构

Encoder-Only

Decoder-Only

方向

双向(看全文)

单向(只看前文)

预训练

MLM + NSP

自回归语言模型

擅长

理解类任务

生成类任务

类比

细心读者(先通读再答题)

即兴演讲者(逐词往后说)

3.7 四大微调任务

任务

输入

输出

示例

单句分类

[CLS] 句子 [SEP]

CLS向量 -> 分类器

情感分析

句对分类

[CLS] 句A [SEP] 句B [SEP]

CLS向量 -> 分类器

自然语言推理

问答

[CLS] 问题 [SEP] 文章 [SEP]

起止位置预测

SQuAD

NER

[CLS] 句子 [SEP]

每个token的标签

命名实体识别

3.8 BERT家族变体

模型

改进点

特点

RoBERTa

更大数据+去掉NSP+动态Masking

更鲁棒

ALBERT

参数共享+嵌入分解

参数更少

DistilBERT

知识蒸馏

更快更小

ELECTRA

替换检测(非掩码预测)

更高效预训练

SpanBERT

遮住连续片段

更适合抽取任务

3.9 面试高频问题

Q: BERT为什么是双向的?双向有什么优势?

A: BERT使用Transformer Encoder,每个token的表示都融合了左右两侧的上下文信息,因此是双向的。优势:对于理解类任务(如阅读理解、情感分析),看到完整上下文比只看前文或后文能得到更准确的理解。例如"这个苹果很[好吃]"中的"苹果"需要看后面的"好吃"才能确认为水果而非手机品牌。

Q: BERT的MLM任务中为什么要用80/10/10规则?

A: 如果全部替换为[MASK],微调时没有[MASK]标记,会导致预训练和微调的输入不一致(gap)。80%用[MASK]保证预训练目标明确;10%用随机词引入噪声,迫使模型不只关注[MASK]位置;10%保持不变,让模型学习正确表示。三者结合使模型更鲁棒。

Q: BERT和GPT的核心区别是什么?各自适合什么任务?

A: 核心区别在于信息获取方向:BERT双向看全文,GPT单向只看前文。BERT适合理解类任务(分类、NER、问答),因为理解需要完整上下文;GPT适合生成类任务(对话、续写、翻译),因为生成必须按顺序逐词预测。

Q: 为什么现在很多大模型选择Decoder-Only架构(如GPT)而不是BERT的Encoder-Only?

A: (1)Decoder-Only统一了理解和生成:通过prompt可以将理解任务转化为生成任务;(2)扩展性更好:随着模型和数据的增大,生成式目标持续提升,没有饱和;(3)工程实现更简单:不需要Encoder-Decoder两套结构;(4)少样本学习能力更强:通过in-context learning完成任务。

[速记] BERT双向是读者,MLM遮盖猜猜猜;NSP判断上下句,三种嵌入要记牢

  Part 4: RAG  

Part 4: 检索增强生成(RAG)

4.1 一句话总结

RAG(Retrieval-Augmented Generation)是一种让大模型在回答问题时先从外部知识库检索相关信息,再将检索结果作为上下文提供给模型生成答案的技术。类比:开卷考试 —— 不是靠死记硬背(参数记忆),而是允许翻书(检索)后作答。

4.2 解决的三大问题

问题

说明

RAG如何解决

知识过时

模型参数是训练时的快照,无法获取最新信息

从实时更新的知识库检索

幻觉(Hallucination)

模型可能编造看似合理但错误的内容

基于检索到的事实回答

领域知识不足

通用模型对垂直领域了解有限

接入领域专属知识库

4.3 RAG vs 微调(Fine-tuning)

维度

RAG

Fine-tuning

知识更新

实时更新知识库即可

需要重新训练

成本

较低(建索引)

较高(GPU训练)

适合场景

知识密集型问答

风格/格式适配

可解释性

高(可溯源到文档)

低(黑盒)

幻觉控制

好(有检索约束)

一般

4.4 四大关键步骤

Step 1: 文档分块(Chunking)

将长文档切分成适当大小的片段,通常200-1000个token。

  • 太小:语义不完整
  • 太大:检索不精确,且浪费上下文窗口
  • 策略:按段落/句子/固定长度切分,可加重叠(overlap)

Step 2: 向量化(Embedding)

将每个文档块用Embedding模型转换为向量表示。

Step 3: 向量数据库检索

将用户问题同样向量化,然后在向量数据库中找到最相似的文档块。

向量数据库对比

数据库

特点

适用场景

FAISS

Meta开源,纯向量搜索,速度快

本地/单机

Milvus

分布式,功能丰富

大规模生产

Pinecone

全托管云服务

快速上线

Chroma

轻量,Python友好

原型开发

Weaviate

支持混合搜索(向量+关键词)

需要混合检索

Step 4: Prompt组装

将检索到的文档块作为上下文,与用户问题一起组装成Prompt,送入LLM生成最终答案。

4.5 高级优化技术

四级优化体系

Level 1: 基础RAG

  • 文档切分 -> 向量化 -> 相似度检索 -> Prompt + LLM

Level 2: 检索优化

  • 混合检索(向量+BM25关键词)
  • 重排序(Re-ranking):用Cross-Encoder对初步结果重新排序
  • 查询重写(Query Rewriting):改写用户问题以更好匹配文档

Level 3: 知识管理优化

  • 知识图谱增强(Knowledge Graph RAG)
  • 分层索引:先检索文档摘要,再定位具体段落
  • 元数据过滤:按时间、来源等属性过滤

Level 4: Agent增强RAG

  • 自适应检索:让LLM自己决定是否需要检索
  • 多跳推理(Multi-hop):复杂问题拆解为多次检索
  • Self-RAG:模型自我评估检索结果和答案质量

4.6 关键技术对比

技术

原理

优势

劣势

朴素RAG

直接检索+生成

简单

检索质量不稳定

HyDE

用LLM生成假设文档再检索

提升召回

额外LLM调用

Re-ranking

用Cross-Encoder重排序

提升精度

增加延迟

Self-RAG

模型自评估检索+答案

质量高

复杂

Graph RAG

结合知识图谱

推理能力强

构建图谱成本高

4.7 面试高频问题

Q: RAG和Fine-tuning分别适合什么场景?可以结合使用吗?

A: RAG适合:知识频繁更新、需要溯源、问答场景。Fine-tuning适合:调整模型风格/格式、领域术语适配、提升特定任务能力。两者可以结合:先用Fine-tuning让模型学习领域风格和术语,再用RAG提供最新的知识支撑。例如医疗场景中,先微调让模型学会医疗用语,再通过RAG检索最新医学文献。

Q: 如何评估RAG系统的效果?

A: 三个维度评估:(1)检索质量:召回率(Recall)、精确率(Precision)、MRR;(2)生成质量:Faithfulness(忠实度,答案是否基于检索内容)、Relevance(相关性);(3)端到端:答案准确率、用户满意度。常用框架:RAGAS、TruLens。

Q: RAG中chunk size如何选择?对效果有什么影响?

A: Chunk size直接影响检索质量:太小(如50 token)可能丢失上下文,检索到不完整的语义片段;太大(如2000 token)可能包含无关信息,稀释关键内容,且浪费上下文窗口。常见做法:300-500 token,配合50-100 token的overlap。实际项目中需要根据文档类型(FAQ vs 技术文档)通过实验调优。

[速记] RAG四步走:切块嵌入查库写提示,开卷考试不编造;检索要用混合法,重排优化提精度

  Part 5: LangChain & LangGraph  

Part 5: LangChain & LangGraph

5.1 LangChain 一句话总结

LangChain 是一个用于构建 LLM 应用的开发框架,类比 Spring Boot 之于 Java —— 它不是模型本身,而是帮你快速搭建基于 LLM 的应用的脚手架,提供了模型调用、提示管理、记忆、工具调用等标准化组件。

5.2 LangChain vs 直接调用API

维度

直接调API

使用LangChain

开发效率

需要自己实现所有逻辑

组件化,快速组装

可维护性

代码耦合度高

模块化设计,易维护

模型切换

需要改代码

改一行配置即可

复杂链路

手动编排

LCEL声明式编排

生态

自己造轮子

丰富的集成和工具

5.3 核心组件(六大模块)

  • Model I/O:统一的模型调用接口,支持OpenAI/Anthropic/HuggingFace等
  • Prompts:提示词模板管理,支持变量、Few-shot示例
  • Chains:将多个组件串联成处理流水线
  • Memory:对话记忆管理,支持短期/长期记忆
  • Agents:让LLM自主决定调用哪些工具
  • Retrieval:对接向量数据库,实现RAG

5.4 LCEL(LangChain Expression Language)

LCEL是LangChain的声明式编排语法,用 | (管道)操作符串联组件:

chain = prompt | model | output_parser

  • 简洁:一行代码完成复杂链路
  • 灵活:支持并行、分支、fallback
  • 可观测:自动支持流式输出、 tracing

5.5 LangGraph

为什么需要LangGraph?

LangChain的Chain是线性的(A->B->C),但实际应用往往需要:

  • 条件分支:根据中间结果走不同路径
  • 循环:迭代优化、多轮对话
  • 状态管理:维护复杂的对话/任务状态
  • 人机协作:等待人工确认后继续

LangGraph将LLM应用建模为状态图(Stateful Graph),支持上述所有场景。

Chain vs Graph 对比

特性

LangChain Chain

LangGraph

拓扑

线性链(单向)

任意有向图

循环

不支持

支持(核心特性)

状态

隐式传递

显式State管理

条件分支

需要Router

原生支持

人机交互

不原生支持

支持断点/恢复

适用场景

简单线性流程

复杂Agent/多Agent

三大核心概念

概念

说明

类比

State(状态)

在图中流转的数据对象

快递包裹上的物流单

Node(节点)

执行具体操作的函数

快递中转站

Edge(边)

定义节点之间的流转规则,支持条件路由

快递路由规划

5.6 面试高频问题

Q: LangChain的核心价值是什么?为什么不直接调API?

A: LangChain的核心价值是标准化和可组合性:(1)统一的模型接口,切换模型只需改一行配置;(2)丰富的预制组件(Prompt模板、Memory、Retriever等),避免重复造轮子;(3)LCEL声明式编排,复杂链路代码简洁;(4)完善的生态集成,对接100+工具和服务。简单场景直接调API没问题,但构建复杂LLM应用时LangChain能显著提升效率。

Q: LangGraph和LangChain是什么关系?什么时候用LangGraph?

A: LangGraph是LangChain生态的一部分,专注解决状态图编排问题。当应用涉及以下场景时使用LangGraph:(1)需要循环迭代(如Agent的思考-行动循环);(2)需要条件分支(根据不同情况走不同路径);(3)需要维护复杂状态(如多轮对话);(4)需要人机协作(等待用户确认)。简单线性流程用LangChain Chain即可。

Q: LCEL是什么?有什么优势?

A: LCEL(LangChain Expression Language)是LangChain的声明式编排语法,用管道符 | 串联组件(如 prompt | model | parser)。优势:(1)代码简洁,一行定义复杂链路;(2)自动支持流式输出、异步执行、tracing等高级功能;(3)组件可自由组合,复用性强。例如 RAG链: retriever | prompt | model | parser 只需一行。

[速记] LangChain像Spring,六大模块把活包;Chain线性Graph有环,LCEL管道一串通

  Part 6: LlamaIndex  

Part 6: LlamaIndex

6.1 一句话总结

LlamaIndex 是一个专注于数据索引和检索的LLM框架,类比"连接数据与LLM的桥梁" —— 它帮你把各种来源的数据(文档、数据库、网页等)高效地组织、索引,并在需要时精准地喂给LLM。如果说LangChain是全能脚手架,LlamaIndex就是数据专家。

6.2 五层架构

  • 第1层 - 数据连接器(Data Connectors):对接各种数据源(PDF、SQL、Notion等)
  • 第2层 - 数据索引(Data Indexes):构建向量索引、关键词索引、知识图谱索引
  • 第3层 - 检索器(Retrievers):从索引中高效检索相关内容
  • 第4层 - 查询引擎(Query Engines):检索 + LLM合成最终答案
  • 第5层 - 数据代理(Data Agents):智能决定如何使用数据工具完成任务

6.3 核心概念

概念

说明

类比

Document

数据的基本单元,包含文本和元数据

一本书

Node

Document的子块,是索引和检索的最小单位

书中的一页

Index

对Node构建的索引结构

图书馆的目录系统

QueryEngine

封装检索+LLM的端到端查询接口

图书馆管理员

6.4 LlamaIndex vs LangChain

维度

LlamaIndex

LangChain

定位

数据索引与检索专家

通用LLM应用框架

核心优势

丰富的索引策略,检索质量高

组件全面,生态广泛

数据接入

100+数据连接器

通过Retrieval模块支持

适用场景

RAG、知识库问答

全场景(Agent、Chain、RAG等)

灵活性

检索深度可定制

应用层面更灵活

选择建议

数据密集型项目首选

综合型LLM应用首选

6.5 面试高频问题

Q: LlamaIndex和LangChain有什么区别?如何选择?

A: LlamaIndex专注于数据索引和检索,提供更丰富的索引策略(向量、树形、关键词、知识图谱),在RAG场景下检索质量更高。LangChain是通用框架,覆盖更全面但不深入。选择建议:如果项目核心是RAG/知识库问答,首选LlamaIndex;如果涉及Agent、多工具调用、复杂编排,选LangChain;两者也可以组合使用(用LlamaIndex做检索,LangChain做编排)。

Q: LlamaIndex支持哪些索引类型?各有什么特点?

A: (1)VectorStoreIndex:最常用,向量相似度检索,适合语义搜索;(2)SummaryIndex:存储所有节点的摘要,适合需要全局理解的查询;(3)KeywordTableIndex:关键词倒排索引,适合精确匹配;(4)KnowledgeGraphIndex:基于知识图谱,支持多跳推理;(5)TreeIndex:层次化索引,先粗后细检索。实际项目常组合多种索引。

Q: 如何用LlamaIndex构建一个高质量的RAG系统?

A: 关键步骤:(1)数据预处理:清洗、分块策略(按语义边界切分);(2)选择合适的Embedding模型(如BGE、text-embedding-ada-002);(3)选择索引类型(通常VectorStoreIndex + KeywordTableIndex混合);(4)配置检索器(top-k、相似度阈值、重排序);(5)构建QueryEngine,设计回答合成Prompt;(6)评估与迭代(使用LlamaIndex的评估模块)。

[速记] LlamaIndex建索引,数据桥梁要记清;五层架构从底起,文档节点索引引擎

  Part 7: AI Agent  

Part 7: AI Agent 智能体

7.1 一句话总结

如果说LLM是一个拥有丰富知识但只能思考和说话的"大脑",那么Agent就是给这个大脑装上了"手"(工具)、"记忆"(Memory)和"规划能力"(Planning)的完整个体 —— 它不仅能想,还能行动。LLM = Brain, Agent = Person who can act.

7.2 Agent vs LLM

维度

LLM

Agent

能力

只能生成文本

能感知环境、使用工具、执行动作

记忆

仅上下文窗口内的对话

有短期+长期记忆系统

规划

无主动规划

能拆解任务、制定计划

行动

不能直接操作外部系统

可调用API、搜索、执行代码等

类比

大脑(Brain)

完整的人(Person)

7.3 四大核心组件

1. LLM(大脑)

作为Agent的核心推理引擎,负责理解指令、分析信息、做出决策。

  • 选择标准:任务复杂度、推理能力、成本、延迟

2. Tools(工具)

Agent可以调用的外部能力,扩展Agent的行动范围。

  • 搜索工具:Google/Bing搜索
  • 代码执行:Python REPL、沙箱
  • API调用:天气、数据库、邮件等
  • 文件操作:读写文件

3. Memory(记忆)

让Agent能够记住过去的交互和获取的信息。

  • 短期记忆:当前对话上下文(在LLM窗口内)
  • 长期记忆:向量数据库存储历史信息
  • 工作记忆:当前任务的中间结果

4. Planning(规划)

让Agent能够将复杂任务分解为可执行的步骤。

  • 任务分解(Task Decomposition):大目标拆成小步骤
  • 反思(Reflection):评估自己的输出并改进
  • 多路径探索:Tree of Thoughts等方法

7.4 ReAct 循环

ReAct(Reasoning + Acting)是Agent最经典的工作模式:

  • Step 1 - Thought(思考):LLM分析当前情况,决定下一步做什么
  • Step 2 - Action(行动):调用相应的工具执行操作
  • Step 3 - Observation(观察):获取工具返回的结果
  • 重复以上步骤,直到任务完成

示例:用户问"北京今天天气适合出游吗?"

  • Thought: 我需要先查北京今天的天气
  • Action: 调用天气API查询北京天气
  • Observation: 晴,25度,空气质量优
  • Thought: 天气很好,可以给出建议了
  • Answer: 北京今天天气很好,晴天25度,空气质量优,非常适合出游!

7.5 多智能体协作(Multi-Agent)

模式

说明

适用场景

类比

单Agent

一个Agent完成所有任务

简单任务

单人完成作业

主从模式

主Agent分配任务给子Agent

复杂但结构清晰的任务

经理分配工作给员工

协作模式

多个Agent平等讨论协作

需要多视角的任务

团队头脑风暴

辩论模式

Agent之间互相质疑和补充

需要高质量输出的任务

正反方辩论赛

流水线模式

Agent按顺序处理

有明确阶段的任务

工厂流水线

7.6 面试高频问题

Q: 什么是AI Agent?它和普通的LLM应用有什么区别?

A: AI Agent是一个能自主感知环境、做出决策并执行动作的智能体。与普通LLM应用的区别:(1)自主性:Agent能自己决定下一步做什么,不需要人类逐步指挥;(2)工具使用:能调用外部工具(API、搜索引擎、代码执行器等)获取信息和执行操作;(3)记忆:拥有跨对话的长期记忆;(4)规划:能将复杂任务分解为多个步骤并按计划执行。普通LLM应用是"你问我答",Agent是"你说目标,我来想办法完成"。

Q: ReAct模式是什么?为什么它是Agent的经典框架?

A: ReAct(Reasoning+Acting)模式让Agent交替进行推理(Thought)和行动(Action):先思考当前情况,再选择并执行一个工具,观察结果,继续思考。它是经典框架因为:(1)可解释性好 —— 每一步都有清晰的思考过程;(2)灵活性强 —— 可以处理各种类型的任务;(3)效率高 —— 只在需要时调用工具,不浪费资源。它本质上是将Chain-of-Thought推理与工具使用结合,是目前最主流的Agent设计模式。

Q: Agent的工具设计有哪些最佳实践?

A: (1)工具描述要清晰:LLM根据描述决定调用哪个工具,描述不清会导致错误调用;(2)参数设计要简单:参数越少越好,使用枚举而非自由文本;(3)工具数量要控制:通常5-20个,太多LLM难以选择;(4)提供错误处理:工具调用失败时返回有意义的错误信息;(5)幂等性设计:同一操作多次调用结果一致。

Q: 如何评估Agent的效果?

A: 四个维度:(1)任务完成率:能否正确完成给定任务;(2)效率:平均需要多少步/多长时间完成;(3)工具使用准确率:调用的工具和参数是否正确;(4)鲁棒性:面对异常情况(工具失败、信息缺失)的处理能力。常用基准:WebArena(网页操作)、HumanEval(代码生成)、ToolBench(工具调用)。

Q: Multi-Agent系统有什么优势?适用什么场景?

A: 优势:(1)专业化 —— 每个Agent专注于特定领域,表现更好;(2)并行性 —— 多个Agent可以同时工作,提高效率;(3)可靠性 —— 多个Agent交叉验证,减少错误;(4)可扩展 —— 新增能力只需增加新Agent。适用场景:复杂软件开发(需求Agent+开发Agent+测试Agent)、研究分析(搜索Agent+分析Agent+写作Agent)、客服系统(分类Agent+专业解答Agent)。

[速记] Agent四件套:大脑工具记忆规划,ReAct循环想看做;大脑负责想,工具负责干,记忆存历史,规划拆任务

  附录一: 面试速查清单  

附录一: 面试速查清单

深度学习基础

  • TensorFlow vs PyTorch 核心区别(静态图/动态图、部署生态)
  • 张量维度:0-D标量到5-D视频批量的对应关系
  • GradientTape 自动求导原理,Variable vs constant
  • 激活函数:ReLU/Sigmoid/Tanh/Softmax/GELU的特点和适用场景
  • 梯度消失/爆炸的原因和解决方案
  • 损失函数选择:回归用MSE,分类用交叉熵
  • 优化器对比:SGD/Momentum/Adam/AdamW的适用场景
  • 正则化四板斧:Dropout/BatchNorm/L2/EarlyStopping

CNN / RNN

  • CNN三大优势:参数共享、局部连接、平移不变性
  • CNN特征层次:浅层边缘 -> 中层部件 -> 深层语义
  • RNN的局限:梯度消失、无法并行
  • LSTM三大门控:遗忘门/输入门/输出门的作用
  • LSTM vs GRU:门控数量、参数量、适用场景

Embedding

  • One-Hot vs Embedding:维度、稀疏性、语义信息
  • 词向量算术:国王-男人+女人=女王
  • Embedding在NLP和推荐系统中的应用

Transformer

  • Self-Attention公式:softmax(Q*K^T/sqrt(d_k))*V
  • Q/K/V的含义和类比
  • 为什么要除以sqrt(d_k)
  • Multi-Head Attention的作用
  • 位置编码的原理和必要性
  • 残差连接+LayerNorm的作用
  • 三种变体:Encoder-Only/Decoder-Only/Encoder-Decoder

BERT

  • BERT的双向特性和三大贡献
  • MLM的80/10/10规则及原因
  • 三种Embedding:Token/Segment/Position
  • BERT vs GPT:双向vs单向,理解vs生成
  • 四大微调任务
  • BERT家族变体:RoBERTa/ALBERT/DistilBERT/ELECTRA

RAG

  • RAG解决的三大问题:知识过时/幻觉/领域知识不足
  • RAG vs Fine-tuning的选择
  • 四大步骤:分块/向量化/检索/Prompt组装
  • 向量数据库对比:FAISS/Milvus/Chroma/Pinecone
  • 高级优化:混合检索/Re-ranking/Self-RAG/Graph RAG

AI Agent

  • Agent = LLM(大脑) + Tools(手) + Memory(记忆) + Planning(规划)
  • ReAct循环:Thought -> Action -> Observation
  • Multi-Agent协作模式:主从/协作/辩论/流水线
  • 工具设计最佳实践
  • Agent评估维度

  附录二: 全部速记口诀  

附录二: 全部速记口诀集锦

[速记] 1. 损失函数:回归用MSE,分类用交叉熵 —— 回归看距离,分类看概率

[速记] 2. 激活函数:隐藏层默认ReLU(快且好),二分类输出Sigmoid,多分类输出Softmax

[速记] 3. 正则化:Dropout随机扔,BatchNorm标准化,L2限制大小,EarlyStop见好就收

[速记] 4. LSTM门控:遗忘门丢旧笔记,输入门放新讲义,输出门提取答题

[速记] 5. Embedding:One-Hot稀疏无语义,Embedding稠密懂关系

[速记] 6. Encoder-Decoder:编码理解压缩,解码展开生成,瓶颈靠注意力解

[速记] 7. Transformer:不用循环不用卷,自注意力记心间;Q问K答V结果,多头并行真方便;位置编码加序列,残差归一稳训练

[速记] 8. BERT:BERT双向是读者,MLM遮盖猜猜猜;NSP判断上下句,三种嵌入要记牢

[速记] 9. RAG:RAG四步走,切块嵌入查库写提示,开卷考试不编造;检索要用混合法,重排优化提精度

[速记] 10. LangChain:LangChain像Spring,六大模块把活包;Chain线性Graph有环,LCEL管道一串通

[速记] 11. LlamaIndex:LlamaIndex建索引,数据桥梁要记清;五层架构从底起,文档节点索引引擎

[速记] 12. Agent:Agent四件套,大脑工具记忆规划;ReAct循环想看做,大脑负责想,工具负责干,记忆存历史,规划拆任务

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐