从基础到实战,系统化掌握 LLM / RAG / ReAct / Agent · 点击任意卡片直达学习资源
给定 3 个词,每词 2 维向量:q1=[1,0], k1=[1,1], v1=[2,0];q2=[0,1], k2=[0,1], v2=[1,1];q3=[1,1], k3=[1,0], v3=[0,2]。
① 算出 3x3 attention 分数矩阵(S[i][j] = qi·kj)
② 每行做 softmax 归一化
③ 用权重加权 V 得到输出向量
④ 用 NumPy 写代码验证手算结果
对 f(x,y) = x^2 + 2xy + 3y^2 做梯度下降。
① 手算偏导数
② 从 (3, 2) 出发,lr=0.1,迭代 20 步,打印每步的 (x, y, f)
③ 观察 f 是否收敛到 0,若不收敛调整学习率重试
logits = [2.0, 1.0, 0.1],正确类别索引为 0。
① 用 NumPy 实现 softmax
② 用 NumPy 实现交叉熵:loss = -log(P[correct])
③ 改大/改小正确类别的 logit,观察 loss 变化
向量 = 一列有序数字。AI 里每个词、每张图都被表示成向量(Embedding)。
点积(Dot Product): a = [1,2,3] b = [4,5,6] a · b = 1×4 + 2×5 + 3×6 = 32 → Attention 机制本质就是做点积,判断两个词的"相关度" 余弦相似度(RAG 向量数据库用这个找最相似文档): cos(θ) = (a · b) / (|a| × |b|)
练习:给定 q=[1,0,1],k=[1,1,0],计算点积和余弦相似度。
理解 Self-Attention: Attention(Q,K,V) = softmax(QKᵀ / √d) × V 1. QKᵀ → 矩阵乘法,算"每对词的相关度分数" 2. / √d → 防止数值过大 3. softmax → 分数变概率(概率之和=1) 4. × V → 用概率加权汇聚 V,得到最终表示
原始更新:ΔW (4096×4096) → 16,777,216 参数
LoRA: A (4096×8) × B (8×4096) → 只需 65,536 参数!节省 256 倍
原理:权重更新是"低秩"的——用小矩阵近似大矩阵,
损失极少精度,训练速度和显存大幅下降。import numpy as np q = np.array([1, 0, 1]) k = np.array([1, 1, 0]) print(np.dot(q, k)) # → 1 Q = np.random.randn(4, 3) K = np.random.randn(4, 3) scores = Q @ K.T # (4×4) attention分数矩阵
AI 训练的核心:找让损失函数最小的参数,就像闭眼下山。
公式:θ_new = θ_old - lr × ∂L/∂θ 偏导数示例: L(w₁, w₂) = w₁² + 2w₁w₂ + w₂² ∂L/∂w₁ = 2w₁ + 2w₂ (把 w₂ 当常数,对 w₁ 求导)
链式法则:y = f(g(x)) → dy/dx = f'(g(x)) × g'(x) 神经网络反向传播 = 链式法则的连续应用 (PyTorch autograd 自动计算,不需手算)
| 函数 | 导数 | AI 用途 |
|---|---|---|
| eˣ | eˣ | Softmax 分母 |
| ln(x) | 1/x | 交叉熵损失 |
| max(0,x) | 0 或 1 | ReLU 激活函数 |
| 1/(1+e⁻ˣ) | σ(x)(1-σ(x)) | Sigmoid 分类 |
Softmax(把分数变概率):
["你好"→3.2, "再见"→1.1, "谢谢"→2.8]
P("你好") = e^3.2 / (e^3.2 + e^1.1 + e^2.8) = 55.7%
交叉熵损失(预测越准 Loss 越小):
P = [0.7, 0.2, 0.1],正确答案是第一个
Loss = -log(0.7) = 0.357
若 P[0]=0.01,Loss = -log(0.01) = 4.6 ← 预测很差期望(加权平均):E[X] = Σ x × P(x) → RLHF 的 Reward Model 估计"这个回答的期望质量" KL 散度:KL(P||Q) = Σ P(x) × log(P(x)/Q(x)) → DPO/RLHF 训练时防止模型偏离原始分布太远
只 import numpy,不调深度学习框架。实现 attention(Q,K,V,mask=None),支持多头。随机矩阵测试验证输出形状。自写测试验证 attention weights 每行和 = 1。
HuggingFace 加载 BPE(GPT-2)、WordPiece(BERT)、SentencePiece(LLaMA)。同一段中英混合文本分词,记录 token 数量和切分结果。写 200 字总结:哪种对中文最友好?
读 Attention Is All You Need,重点 Section 3。用自己话解释 Self-Attention / Multi-Head / Positional Encoding。画 Encoder-Decoder 结构图。回答:为什么要除以 sqrt(d_k)?
选一个任务(翻译/摘要/分类),设计 4 种 prompt:零样本、少样本(3例)、Chain-of-Thought、角色扮演。记录输出质量,写 300 字对比分析。
Qwen2.5-0.5B + HuggingFace PEFT,自备 50 条 JSONL 数据。LoRA(r=8,alpha=16),微调 3 epoch。对比微调前后 5 个 case 的输出。保存 adapter,学会 merge 和 push 到 Hub。
不调库,用 NumPy/PyTorch 实现 DPO Loss。理解公式,给定 chosen/rejected 的 log prob 计算损失。构造数据验证:chosen 越高于 rejected 则 loss 越小。
同一分类任务,控制变量:0-shot、1-shot、3-shot、5-shot、5-shot+CoT。表格记录准确率,画折线图看 shot 数与效果的关系。
把答案放在文档 10%/50%/90% 位置,用 4K/8K/16K/32K 上下文测试。画"答案位置 vs 准确率"曲线。你的模型在哪个位置最容易"忘记"?
Chroma + sentence-transformers + 任意 LLM API。准备 20 篇文档建向量索引。实现 query,embed,top-5 retrieve,prompt,generate 全流程。10 个预设问题测试,加分:Gradio UI。
同一批文档,三种切法:Fixed-size 512(overlap=0)、Fixed-size 512(overlap=128)、Semantic Chunking。统计 10 个问题的 top-3 命中率。
BM25 + 向量检索双路召回。rank-bm25 + Chroma,RRF 合并排序。对比纯向量 vs 纯 BM25 vs 混合的 top-5 准确率。
口语化问题转精确查询。准备 10 个模糊问题,对比改写前后的 top-3 命中率。加分:实现 HyDE(先生成假设答案再检索)。
安装 ragas,用你的 RAG 系统生成 20 条问答。评估 Faithfulness / Answer Relevancy / Context Precision / Context Recall 四个指标。针对最差指标改进 pipeline。
纯 Python,不用 LangChain。定义 search + calculator 两个工具。实现 Thought-Action-Observation 循环。解析 LLM 输出,执行工具,结果喂回下一轮。测试多步推理。
OpenAI/Claude Function Calling API。定义加减乘除四个工具(JSON Schema)。测试"三加五乘以二"的自动拆解。处理除零等异常。对比 Function Calling vs ReAct 两种范式。
搜索+计算+天气,三个工具一个 Agent。Agent 自动选择工具顺序,无需人工指定。加 FINAL_ANSWER 终止条件防止死循环。
同一任务双实现:查公司名,找 CEO,搜 CEO 年龄。LangChain 版 vs 原生 Python+OpenAI API。从代码行数、可控性、调试难度写对比。
llama.cpp 把 Qwen2.5-7B 量化为 Q4_K_M/Q5_K_M/Q8_0。记录模型大小、加载耗时、输出质量(人工1-5打分)。写结论:精度与速度如何取舍?
启动 vLLM 服务加载 Qwen2.5-7B。并发 1/4/8/16/32,记录 QPS 和平均延迟。开启 vs 关闭 prefix caching 各跑一轮。画出"并发 vs QPS"曲线。
自建 20 题评估集(JSON: question + reference_answer)。用 GPT-4 做 LLM-as-Judge 打分。自动统计:平均分、标准差、按分类得分。对比 2 个模型在你自建集上的表现。
4000 token 系统 prompt + 2000 token 用户 prompt。调 OpenAI/Anthropic API,记录 cached_tokens。算账:日均 1000 次调用能省多少钱?什么场景下收益最大?
• 李沐《动手学深度学习》 — 中文,配套视频+代码
• 李沐 Transformer 精读 — B站,逐行读论文
• Prompt Engineering 中文指南 — 官方翻译版
• HuggingFace NLP 课程中文版 — 官方出品
• Andrej Karpathy Zero to Hero — 从零手写 GPT,B站有中文字幕
• DeepLearning.AI LLM 专项课 — 吴恩达出品,B站有搬运
• HuggingFace NLP Course — 英文原版,代码更完整
• LangChain / LlamaIndex — RAG & Agent 框架
• vLLM — 高性能推理引擎
• HuggingFace Transformers + PEFT — 训练微调
• Chroma / Milvus — 向量数据库
• Unsloth / Axolotl — 高效微调
• 先看李沐 Transformer 精读,理解注意力机制
• 跑通一个 RAG demo(Chroma + 开源模型)
• 再实现一个 ReAct Agent(LangChain 或原生)
• 最后尝试用 LoRA 微调一个模型
• 每一步:看中文课 → 读原文 → 动手写代码