这篇文章用来记录所学到的关于agent、大模型等关于AI的知识

学习资料:Lordog/dive-into-llms: 《动手学大模型Dive into LLMs》系列编程实践教程

大模型是如何理解自然语言的

将自然语言转换为高维向量做数据相似匹配

文本 向量(简化版) 含义
猫喜欢吃鱼 (0.9, 0.1) 靠近 “宠物 / 动物” 方向
猫咪爱吃鱼 (0.88, 0.12) 和上一句向量几乎重合 → 关联度极高
汽车需要加油 (0.1, 0.9) 靠近 “交通工具” 方向,和前两句距离很远 → 关联度极低

概念引入

LLM(大语言模型):一个会说话会生成文本的大脑,例如deepseek,chatgpt这样的模型,它能够理解自然语言,生成连贯的文本,基于上下文做推理等

向量(一个高维数组):

维度 数学里的向量 Embedding 里的向量
形式 (x, y)(x, y, z) 等低维数组 比如长度为 1536768 的高维数组,例如 [0.12, -0.34, 0.56, ..., 0.78]
核心作用 表示空间中的方向和大小 表示文本的 “语义含义”,比如 “猫” 和 “猫咪” 的向量距离很近,“猫” 和 “汽车” 的向量距离很远
距离计算 用欧氏距离、余弦相似度等 同样用余弦相似度 / 欧氏距离,来判断文本之间的语义相似度

原理解析

第一步:文本拆解

当我们发送一段文字,大语言模型会先把文字拆分成一个个词元,也就是我们常提到的token

比如:

猫喜欢吃鱼[猫, 喜欢, 吃, 鱼]

每个token会被映射成一个整数ID也就是给它第一个编号,再通过词嵌入矩阵,转换成一个初始向量,这个相当于是在给每个字放到一个超级大的字典里,这个字典每个字有对应的索引,让后续能够根据索引选择具体的字

一句话概括为 “词的身份编号”

第二步:加上位置信息

给刚才生成的初始向量加上位置编码

像猫吃鱼,和鱼吃猫是完全不同的两句话,我们需要把猫和鱼排序

那为什么不能用一开始的ID来直接排序呢?

是因为Transformer 的核心机制 —— 自注意力,本身是 “无序” 的

自注意力会计算句子中所有词两两之间的关系,它不依赖顺序来判断谁在前谁在后。如果没有位置信息,猫吃鱼鱼吃猫在模型眼里,就只是三个向量的集合,它无法区分这两种完全不同的语序。

而位置编码是一组和位置强相关的向量

它的核心作用是:

  • 给每个词向量打上位置标记,让模型能够区分,同一个词出现在不同位置的情况
  • 保留句子的语序信息,让模型能理解”猫吃鱼”和”鱼吃猫”的语义差异
  • 它是可学习的(或者固定的三角函数),能让模型学到位置和语义的关联

它直接和生成的初始向量相加,成为”有语序的向量”

  1. 举个极小例子

1

第三步:Transformer 编码器层层加工

这里我目前还只了解了大概没有深入

这是 LLM 最关键的部分,通过多层 Transformer 编码器,对每个 Token 的向量进行迭代更新,核心有两个机制:

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

让每个 Token 都能 “关注” 到句子里其他 Token 的信息,更新自己的向量:

  • 比如 “我的猫喜欢吃鱼,它每天都要吃一只” 里的 “它”,会通过注意力,关联到前面的 “猫”,向量里就会带上 “猫” 的语义信息;
  • 再比如 “银行” 这个词,在 “去银行存钱” 和 “在河边银行散步” 里,会通过上下文的注意力,生成不同的向量。

(2)前馈神经网络(Feed-Forward Network)

对每个 Token 的向量做非线性变换,进一步提炼语义特征,让相似的词向量更接近,不同的词向量更远。

举个完整的例子,把流程串起来

以句子 我想吃苹果 为例:

  1. 分词[我, 想, 吃, 苹果] → 对应 ID [123, 456, 789, 1011]

  2. 初始词嵌入:每个 ID 从词嵌入矩阵里取出初始向量:

    • [0.2, -0.1, 0.5, ...]
    • [0.3, 0.2, -0.1, ...]
    • [0.1, 0.4, 0.3, ...]
    • 苹果[0.8, -0.2, 0.6, ...]
  3. 加位置编码:给每个向量加上位置信息,比如 “我” 是第 1 个词,加上位置向量 [0.1, 0.05, 0.02, ...]

  4. 自注意力加工:

    • 会关注到 苹果,向量更新为包含 “谁吃、吃什么” 的信息;
    • 苹果 会关注到 ,向量里带上 “食物” 的语境,和 “苹果手机” 的向量拉开距离。
  5. 池化输出:把 4 个 Token 的向量取平均,得到最终的句子向量:[0.35, 0.08, 0.28, …, -0.12]

    (长度通常是 768/1024/1536 维)

RAG

一句话总结:是一种大语言模型 (LLM) 落地架构,核心思路:不只用模型自身训练知识,先从外部私有知识库检索相关内容,再把「用户问题 + 检索到的上下文」一起交给大模型生成答案

RAG 全称 Retrieval-Augmented Generation(检索增强生成),是一种进阶提示工程技术,用来解决大模型的两大痛点:

  1. 知识过时:模型训练完后,无法获取新数据;
  2. 幻觉问题:模型会编造不存在的信息。