模型相关知识二

全景架构:搜索/推荐系统流水线

scss 复制代码
用户输入
  │
  ▼
┌──────────┐   ┌──────────┐   ┌──────────┐
│ Query理解 │   │  词推荐   │   │  意图识别  │   ← Qu 层
│ (QU)     │   │(Suggest) │   │ (Intent) │
└────┬─────┘   └──────────┘   └──────────┘
     │
     ▼
┌──────────┐
│  检索召回  │  ← 多路召回:文本/向量/个性化/缓存          ← Retrieval 层
│(Recall)  │
└────┬─────┘
     │  候选集 10K~100K
     ▼
┌──────────┐
│  粗排     │  ← 轻量模型快速过滤                          ← Rough Ranking
│(Coarse)  │
└────┬─────┘
     │  ~1K
     ▼
┌──────────┐
│  精排     │  ← 复杂模型精准打分                          ← Fine Ranking
│(Fine)    │
└────┬─────┘
     │  ~100
     ▼
┌──────────┐
│  重排     │  ← 全局最优、多样性、业务规则                 ← Re-ranking
│(Re-rank) │
└────┬─────┘
     │
     ▼
   展示给用户

一、Query 理解(QU, Query Understanding)

是什么

用户输入的 query 往往"短、模糊、有噪声"。QU 的目标是把原始 query 转化为系统能理解的结构化表示,为下游各环节服务。

核心子任务

子任务 说明 示例
分词(Tokenization) 将 query 切分为词/短语 "包子机价格" → 包子机 / 价格
词性/实体标注(NER) 识别实体类型 "北京到上海机票" → LOC北京/LOCLOC上海/LOC PRODUCT机票/PRODUCT
意图识别(Intent Detection) 判断用户想干什么 "iPhone 15 多少钱" → 意图=询价
query 改写(Query Rewriting) 同义改写/纠错/补全 "儿童积木机" → "儿童积木"(纠错)
query 扩展(Query Expansion) 扩展相关词提升召回 "手机壳" → + "保护套"
核心词识别 区分主词和修饰词 "红色连衣裙" → 核心=连衣裙,修饰=红色
Session 上下文 利用多轮搜索历史 上搜"北京",当前"酒店" → "北京酒店"
属性抽取 提取价格、品牌、规格等约束 "华为手机 3000以下" → brand=华为, price<3000

技术演进

复制代码
规则/词典 → CRF/Seq2Seq → BERT/ERNIE → LLM in-context

需要掌握的知识

  • NLP 基础:分词算法(HMM/CRF/BPE)、序列标注模型
  • 预训练模型:BERT / ERNIE 的微调与部署
  • 信息检索基础:TF-IDF、BM25
  • 知识图谱基础(实体链接)
  • LLM 提示工程(用 LLM 做 zero-shot 意图识别和改写)

二、检索 / 召回(Retrieval / Recall)

是什么

从亿级文档库中快速筛出与 query 相关的候选集(10K~100K 级),核心要求是高覆盖率 + 低延迟。单路召回容易"漏",所以大厂都是多路融合。

多路召回架构

scss 复制代码
                    Query
                      │
       ┌──────┬───────┼───────┬──────┐
       ▼      ▼       ▼       ▼      ▼
    文本召回  向量召回  个性化  图谱   缓存
   (BM25)  (DSSM/   召回   召回   召回
            ANN)    (CF)
       │      │       │       │      │
       └──────┴───────┴───────┴──────┘
                      │
                 合并去重 → 候选集

关键技术

召回方式 原理 典型模型
文本召回 词项匹配,BM25 打分 Elasticsearch、Lucene
语义向量召回 query 和 doc 编码为向量,最近邻检索 DSSM、双塔模型、Sentence-BERT
个性化召回 基于 user-item 协同过滤 ItemCF、UserCF、Swing
图召回 利用知识图谱或 user-item 图 GraphSAGE、PinSage
缓存召回 直接复用历史高频 query 的结果 Query Cache

向量检索核心

scss 复制代码
离线:  Doc → Encoder → 向量 → 入 ANN 索引 (Faiss / Milvus / HNSW)
在线:  Query → Encoder → 向量 → ANN 检索 → Top-K

双塔模型训练正负样本构造至关重要:负采样策略(随机负采样 / 困难负采样 / 批内负采样)。

需要掌握的知识

  • IR 基础:TF-IDF、BM25、倒排索引原理
  • 向量检索:ANN 算法(HNSW、IVF、PQ)、Faiss / Milvus 使用
  • 表示学习:双塔模型、对比学习(InfoNCE loss)
  • 负采样策略
  • 倒排索引与向量索引的工程实现

三、相关性(Relevance)

是什么

衡量 query 与 doc 之间的语义匹配程度 。不同于召回(快但粗),相关性建模更精细,为排序提供核心特征信号。它是排序模型的最重要特征之一

相关性建模层次

scss 复制代码
浅层匹配                    深层语义匹配
   │                            │
   ▼                            ▼
 词面匹配 (BM25)         交互式模型 (Cross-Encoder)
 关键词覆盖率            Bi-Encoder (双塔)
 位置加权                Late-Interaction (ColBERT)
层次 方法 特点
词面匹配 BM25、TF-IDF 快,但无法处理同义/近义
语义匹配 浅层 → BERT 双塔 → BERT 交互式 捕获同义、意图匹配
用户行为匹配 CTR/点击反馈 间接信号
多维融合 标题/正文/锚文本分别算相关性再融合 不同字段权重不同

经典相关性特征

diff 复制代码
- 标题 BM25 分
- 正文 BM25 分
- query 点击率
- 匹配词覆盖率
- 命中位置(标题首词 > 末尾)
- 同义改写后的匹配
- 命中比例

需要掌握的知识

  • IR 经典理论:概率检索模型、语言模型
  • BERT / 交互式模型的在线推理优化
  • 多字段相关性融合
  • 点击模型(Position Bias 校正)

四、词推荐 / 搜索 Suggest(Query Suggestion)

是什么

用户在搜索框输入过程中,实时推荐下一段 query(下拉提示词),目标是引导搜索、提升体验。类似百度搜索框的联想功能。

核心挑战

  • 低延迟:需 < 50ms 返回
  • 高并发:每秒百万级请求
  • 个性化:同一前缀不同用户看到不同建议
  • 质量:推荐结果既要相关又要"有用"

技术架构

scss 复制代码
用户输入前缀 "北京"
       │
       ▼
┌────────────────┐
│  候选生成       │  ← 前缀匹配 Trie 树 + 历史搜索日志
│ (Candidate Gen)│    从 query 库中找出以"北京"开头的 query
└───────┬────────┘
        │  ~1000 候选
        ▼
┌────────────────┐
│  排序           │  ← 模型打分:热度 + 相关性 + 个性化
│ (Ranking)      │
└───────┬────────┘
        │  Top-10
        ▼
┌────────────────┐
│  过滤/规则      │  ← 去重、敏感词、商业化
│ (Filter)       │
└────────────────┘

候选生成方式

方式 说明
前缀 Trie 从 query 日志构建 Trie 树,按前缀匹配
session-based 利用用户搜索 session,推荐 next query
LLM 生成 用大模型实时生成候选(高端做法)
热词表 维护热门 query 前缀索引

排序信号

scss 复制代码
score = w1 × 热度(PV) + w2 × 相关性(prefix 匹配) + w3 × CTR
      + w4 × 个性化(用户历史) + w5 × 时效性

需要掌握的知识

  • 数据结构:Trie / FST / DFA(前缀匹配 + 高效压缩)
  • 在线服务工程:高 QPS 缓存设计、近实时索引更新
  • 排序模型:GBDT、浅层 DNN
  • NLP:query 补全、拼音转汉字、纠错
  • 用户行为建模

五、粗排(Coarse Ranking)

是什么

召回结果太多(10K~100K),直接用复杂精排模型不现实。粗排用轻量模型 快速过滤到 ~1K,核心要求是高吞吐 + 不漏正相关结果

经典方法演进

markdown 复制代码
1. 规则/加权打分    →  各信号线性加权
2. LR / GBDT       →  浅模型快速打分
3. 双塔模型         →  query/doc 各自编码,内积打分(可离线预计算 doc 向量)
4. 蒸馏模型         →  用精排模型蒸馏一个小模型
5. 向量索引 + 粗排一体化 →  召回和粗排边界模糊化

双塔粗排(当前主流)

ini 复制代码
离线:  Doc 特征 → DNN → doc embedding → 预计算存储
在线:  Query 特征 → DNN → query embedding
        score = dot_product(query_emb, doc_emb)
  • 优势:doc 向量预计算,在线只需算 query 向量 + 近邻检索
  • 劣势:query-doc 无深度交互(不如精排准)

需要掌握的知识

  • 浅层模型:LR、FM、GBDT
  • 双塔模型 + 对比学习
  • 模型蒸馏(精排 → 粗排)
  • 性能优化:INT8 推理、向量预计算

六、精排(Fine Ranking)

是什么

对粗排后 ~1K 候选精准打分,核心目标是排序精度最大化。模型复杂度不限,但仍需控制延迟(通常 < 100ms)。

核心模型演进

markdown 复制代码
LR → FM → DeepFM → Wide&Deep → DIN → DIEN → 多任务模型
                                              ↓
                                          大模型时代
                                              ↓
                                  预训练 + 行为序列 + LLM 特征

关键模型

模型 核心创新
Wide & Deep 记忆(wide)+ 泛化(deep)结合
DeepFM FM 替代 wide 部分,自动二阶交叉
DIN(Deep Interest Network) 引入 target-attention,按候选商品激活用户历史兴趣
DIEN + 兴趣演化 GRU
MMoE / PLE 多任务学习(同时预测点击 + 转化)
CAN / FiBiNet 特征交叉新方式

特征工程

sql 复制代码
user 特征:画像、历史行为序列、实时上下文
item 特征:属性、质量分、统计特征
context 特征:时间、地域、设备
cross 特征:user-item 交叉(相关性、历史点击率)

需要掌握的知识

  • 推荐系统理论:CTR 预估、特征交叉
  • 深度学习模型架构(DNN、Attention、Sequence Model)
  • 多任务学习
  • 特征工程与在线特征服务
  • 训练框架:TensorFlow Recommenders / PyTorch
  • 在线推理优化:TF-Serving、模型压缩

七、重排(Re-ranking)

是什么

精排只看单个 item 的分数,不考虑全局视角。重排从 list-wise 角度优化最终展示顺序,解决多样性、新鲜度、业务规则等全局目标。

核心目标

markdown 复制代码
精排分 → 重排
         ├── 多样性:避免同类内容扎堆
         ├── 新鲜度:给新内容曝光机会
         ├── 业务规则:广告位、置顶、去重
         ├── 公平性:不同来源/商家公平分配
         └── 全局收益最大化

经典方法

方法 说明
规则重排 简单规则:去重、打散、置顶
MMR(Maximal Marginal Relevance) 每次选一个 item,兼顾相关性和与已选的差异
DPP(Determinantal Point Process) 行列式点过程,数学上保证子集多样性
RL 重排 用强化学习优化 list-wise reward
Seq2Seq 重排 用序列模型直接生成最优排列
List-wise 模型 LambdaMART、ListNet

MMR 示意

ini 复制代码
已选 S = {}
每一步:
  argmax_{d ∉ S} [ α·relevance(d) - (1-α)·max_{d'∈S} sim(d, d') ]
              ↑ 相关性                  ↑ 与已选的最大相似度(惩罚)

需要掌握的知识

  • 排序理论:List-wise ranking、DPP
  • 强化学习基础(RL 重排)
  • 业务规则系统设计
  • 多目标优化

八、大模型在搜索推荐中的落地

各环节的大模型赋能

erlang 复制代码
Qu        → LLM 做 query 改写、意图理解、属性抽取
召回      → LLM 生成 dense embedding;LLM 生成 query 扩展词
相关性    → LLM 作为 Cross-Encoder 重打分
词推荐    → LLM 生成候选 query
精排      → LLM 生成特征(user/doc 文本表征)
重排      → LLM 做 list-wise 重排
          → LLM 做搜索结果摘要生成

代表性工作

方向 代表
LLM 检索 ColBERT、REPLL、Encoder-Decoder retriever
LLM 排序 RankGPT(list-wise rerank)
RAG(检索增强生成) 把检索结果喂给 LLM 生成答案
生成式推荐 P5、GPT4Rec

需要掌握的知识

  • LLM 基础:Transformer、预训练、SFT/RLHF
  • RAG 架构设计
  • 向量数据库 + LLM 结合
  • Prompt 工程 + Tool Use
  • LLM 推理优化(vLLM、量化)

知识体系总览

css 复制代码
┌─────────────────────────────────────────────────────┐
│                    基础层                            │
│  线性代数 / 概率论 / 最优化 / 信息论                  │
├─────────────────────────────────────────────────────┤
│                    ML/DL 层                          │
│  机器学习 / 深度学习 / NLP / 推荐系统理论              │
├─────────────────────────────────────────────────────┤
│                   模型层                              │
│  BERT / GPT / 双塔 / DIN / 多任务 / LLM              │
├─────────────────────────────────────────────────────┤
│                   系统层                              │
│  倒排索引 / 向量检索 / 特征服务 / 模型推理服务         │
├─────────────────────────────────────────────────────┤
│                   工程层                              │
│  高并发 / 低延迟 / A-B 实验 / 监控告警                │
└─────────────────────────────────────────────────────┘
环节 核心知识关键词
QU NLP、序列标注、意图识别、query 改写
检索 BM25、ANN、双塔模型、对比学习、负采样
相关性 语义匹配、Cross-Encoder、多字段融合
词推荐 Trie、session 建模、高并发服务
粗排 轻量模型、双塔、模型蒸馏、预计算
精排 CTR 模型、特征交叉、多任务、行为序列建模
重排 MMR/DPP、List-wise、强化学习、多目标优化
LLM 落地 RAG、Prompt 工程、LLM 推理优化
相关推荐
IT_陈寒1 小时前
Python装饰器竟然偷偷改了函数名?这个坑我爬了三天
前端·人工智能·后端
Momo__2 小时前
Vite 8.1 打包开发模式——10000 组件冷启动 15 倍,"No Bundle Dev" 七年后被自己终结
前端·vue.js·vite
YHL2 小时前
🤖 Agent 智能体开发实战 · 第一课:Tool Use —— 让大模型自动干活
前端·javascript·人工智能
Monki2 小时前
AI 规范式 UI 设计,一键批量出页,高效落地不翻车
前端
山河木马2 小时前
渲染管线-计算得到gl_FragColor(片元着色器)之后续GPU流程
前端·webgl·计算机图形学
不想说话的麋鹿2 小时前
「项目实战」我用 Codex + GPT-5.5 + Trellis "氛围编程",独立做了一个情侣厨房小程序
前端·agent·全栈
接着奏乐接着舞。3 小时前
【2026年7月最新】69道RAG面试题
前端·人工智能·后端·aigc·embedding·rag
以和为贵3 小时前
前端也能搞懂 Agent:从 Function Calling 到自主编排
前端·人工智能·架构
风止何安啊4 小时前
🚦 前端并发请求 “交通管制”:别让你的接口堵成早高峰
前端·javascript·面试