Self-Attention 在做什么?
每个 token 生成 Query、Key、Value。Query 与所有 Key 计算相关性,Softmax 将分数变成权重,再对 Value 加权求和。模型因此能按上下文选择要关注的位置。
Attention(Q,K,V) = softmax(QKᵀ / √dₖ)V
Query我在找什么
×Key位置索引
→权重
×Value传递的信息
除以 √dₖ 可控制点积规模,避免 Softmax 过早饱和。多头注意力让模型在不同子空间并行学习关系。
从 Transformer 如何理解上下文,到 RAG 如何找到可靠资料。用结构图、公式和工程经验,记录大模型应用里的关键概念。
用注意力机制,让序列中的 token 相互交换信息。
每个 token 生成 Query、Key、Value。Query 与所有 Key 计算相关性,Softmax 将分数变成权重,再对 Value 加权求和。模型因此能按上下文选择要关注的位置。
Attention(Q,K,V) = softmax(QKᵀ / √dₖ)V
除以 √dₖ 可控制点积规模,避免 Softmax 过早饱和。多头注意力让模型在不同子空间并行学习关系。
注意力负责 token 间的信息交互;前馈网络对每个位置分别做非线性变换。残差连接和 LayerNorm 帮助深层网络稳定训练。
Decoder-only 模型会使用因果掩码,预测当前位置时不能读取未来 token。
检索命中只是起点,还要看排序和答案质量。
RAG(检索增强生成)先从知识库取回候选片段,再把它们交给语言模型组织回答。用带相关文档标注的查询集,可以离线评估检索阶段:
| 指标 | 回答的问题 | 直观理解 / 公式 | 适用场景 |
|---|---|---|---|
| Recall@k | 前 k 条里找回了多少相关文档? | 命中相关文档数 ÷ 全部相关文档数 | 关注漏检;问答系统通常先看召回 |
| Precision@k | 前 k 条里有多少结果真正相关? | 前 k 条相关数 ÷ k | 关注噪声;上下文窗口有限时很有用 |
| MRR | 第一个相关结果排得有多靠前? | 平均(1 ÷ 第一个相关结果的名次) | 每个查询只需快速找到一个好结果 |
| nDCG@k | 按相关程度打分后,整体排序如何? | DCG@k ÷ 理想排序的 IDCG@k | 相关性有多个等级,且高位结果更重要 |
离线指标帮助改进,最终还要回到真实问题。
从实际问题中抽样并标注相关片段。保留困难样本、无答案问题和不同表达方式,避免数据分布偏差带歪优化方向。
检索没找到证据时,生成模型很难补救;证据找对了,也要检查回答是否忠实。分别记录命中、答案正确性、引用支持度和延迟。
向量检索擅长语义近似,关键词检索擅长精确名称、编号和缩写。可并行召回、合并去重,再用重排模型调整顺序。
保存语料快照、切分规则、Embedding 模型、k 值和重排器版本。用同一查询集回归,才能判断改动带来的效果。