六:Embedding 与常用编码方法自测题答案¶
来源:http://mp.weixin.qq.com/s?__biz=MzYyNTk3Njg1NA==&mid=2247483818&idx=1&sn=614242baca0f8e82a9c8250a47be3a9d&chksm=f01eb2d3c7693bc5f880cc2fd45070e625d0d4ede44009dd31031c5fc14876c9eff9c2ae2d40#rd
参考资料¶
-
Efficient Estimation of Word Representations in Vector Space: https://arxiv.org/abs/1301.3781
-
Distributed Representations of Words and Phrases and their Compositionality: https://arxiv.org/abs/1310.4546
-
GloVe: Global Vectors for Word Representation: https://nlp.stanford.edu/pubs/glove.pdf
-
Enriching Word Vectors with Subword Information: https://arxiv.org/abs/1607.04606
-
Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks: https://arxiv.org/abs/1908.10084
-
SimCSE: Simple Contrastive Learning of Sentence Embeddings: https://arxiv.org/abs/2104.08821
-
MTEB: Massive Text Embedding Benchmark: https://arxiv.org/abs/2210.07316
-
BGE Series Documentation: https://bge-model.com/tutorial/1_Embedding/1.2.1.html
-
BGE-M3: Multi-Linguality, Multi-Functionality, Multi-Granularity Text Embeddings: https://arxiv.org/abs/2402.03216
-
Conan-embedding: General Text Embedding with More and Better Negative Samples: https://arxiv.org/abs/2408.15710
-
盘点经典 Embedding 算法:https://blog.csdn.net/xpy870663266/article/details/101849044
-
BGE 简介:https://zhuanlan.zhihu.com/p/676410726
评分标准¶
-
合格:能解释 embedding、one-hot、Word2Vec、GloVe、FastText 和句向量基本概念。
-
良好:能讲清 CBOW/Skip-gram、negative sampling、pooling、bi-encoder/cross-encoder、contrastive learning。
-
优秀:能结合 BGE/CONAN、hard negatives、RAG 检索、评测指标和工程问题完整回答。
一、Embedding 基础¶
1. 请用 1 分钟解释什么是 embedding。¶
Embedding 是把离散对象映射成连续稠密向量的方法。对象可以是 token、词、句子、文档、用户、商品或图片。好的 embedding 空间中,语义或任务相关的对象距离更近,不相关对象距离更远。 在 LLM 中,embedding 既包括输入 token embedding,也包括用于检索、聚类、RAG 的 sentence/document embedding。 关键得分点:离散到连续、稠密向量、相似性空间、下游任务。
2. embedding 和 one-hot 编码有什么区别?¶
one-hot 是高维稀疏向量,维度等于词表大小,每个 token 只有一个位置为 1。embedding 是低维稠密向量,通常通过训练学习得到。 one-hot 不能表达不同 token 之间的语义相似性;embedding 可以通过向量距离或方向表达相似。
3. 为什么 embedding 可以表达语义相似,而 one-hot 很难表达?¶
one-hot 中任意两个不同 token 通常正交,距离相同。embedding 是模型根据上下文、共现、检索或对比学习目标训练出的连续向量,语义相似的对象会被优化到更接近的位置。
4. token embedding、word embedding、sentence embedding、document embedding 有什么区别?¶
token embedding 是 tokenizer 输出 token id 对应的向量。word embedding 通常指词级静态向量,如 Word2Vec/GloVe。sentence embedding 把一句话映射成一个向量。document embedding 把段落或文档映射成向量,常用于检索。 区别主要是输入粒度和训练目标不同。
5. Transformer 中 embedding table 的 shape 通常是什么?如何从 token id 得到向量?¶
如果词表大小为 V,隐藏维度为 d_model:
6. embedding table 和 LM head 之间可能有什么关系?¶
语言模型中,输入 embedding table 和输出 LM head 可能共享权重,称为 weight tying。LM head 把 hidden state 映射到词表 logits,如果共享,则输出权重通常相当于 embedding table 的转置。 好处是减少参数,并让输入输出 token 空间保持一致。
7. embedding 维度越大一定越好吗?为什么?¶
不一定。维度更大表达能力更强,但也增加参数、存储、检索成本和过拟合风险。检索系统中高维向量还会增加索引内存和延迟。合适维度取决于数据规模、任务复杂度、模型能力和工程约束。
8. embedding 和 tokenizer 是同一个概念吗?请区分。¶
不是。Tokenizer 把文本切成 token 并映射成 token id;embedding 把 token id 或文本对象映射成连续向量。Tokenizer 是离散化过程,embedding 是向量表示过程。
二、静态词向量与上下文表示¶
9. 什么是静态 embedding?它有什么优点和局限?¶
静态 embedding 为每个词分配固定向量,不随上下文变化。优点是简单、快速、可离线使用。局限是无法处理多义词,不同语境下同一个词仍是同一个向量。 Word2Vec、GloVe、FastText 都属于经典静态或近似静态词向量。
10. 多义词为什么是静态词向量的典型难点?¶
同一个词在不同上下文中可能含义不同。例如 bank 可以是银行,也可以是河岸。静态词向量只有一个表示,会把多种含义混在一起。上下文 embedding 可以根据句子动态生成不同表示。
11. 什么是上下文 embedding?它如何解决多义词问题?¶
上下文 embedding 是由模型根据当前上下文动态生成的向量。同一个 token 在不同句子中会有不同 hidden state。Transformer 通过 self-attention 融合上下文,使 token 表示反映当前语境。
12. BERT 或 Transformer hidden states 为什么可以看作上下文 embedding?¶
BERT/Transformer 每层输出的 hidden states 是 [B,T,H],每个 token 的表示都通过 self-attention 融合了其他 token 信息。因此这些 hidden states 是上下文相关的 token embedding。
13. 为什么直接取 BERT [CLS] 不一定得到高质量句向量?¶
BERT 预训练目标主要是 MLM/NSP 等,不一定直接优化句向量相似度空间。[CLS] 表示适合某些分类任务,但未必让语义相似句在向量空间中接近。因此 SBERT/SimCSE 等会用专门的句向量训练目标。
14. token-level embedding 和 sentence-level embedding 的训练目标有什么差异?¶
token-level embedding 常服务于 token 预测、序列标注、上下文表示。sentence-level embedding 通常服务于句子相似度、检索、聚类,需要整个句子的向量空间具有可比较性。后者更依赖对比学习、匹配数据或语义相似度监督。
三、Word2Vec¶
15. Word2Vec 的核心分布式假设是什么?¶
核心假设是:词的含义可以由其上下文决定。语义相似的词往往出现在相似上下文中。Word2Vec 通过上下文预测任务学习词向量。
16. CBOW 的训练目标是什么?¶
CBOW 用上下文词预测中心词:
它通常把上下文词向量平均或求和,再预测中心词。训练速度较快。17. Skip-gram 的训练目标是什么?¶
Skip-gram 用中心词预测上下文词:
一个中心词会产生多个上下文预测样本,对低频词通常更友好。18. CBOW 和 Skip-gram 在训练速度、低频词表现上有什么差异?¶
CBOW 聚合上下文预测中心词,训练较快,对高频词表现稳定。Skip-gram 用中心词预测多个上下文,训练成本较高,但通常对低频词学习更好。
19. Word2Vec 为什么能学习出语义相近词向量?¶
因为训练目标让出现在相似上下文中的词获得相似预测行为。若两个词经常和相似上下文共现,它们的向量会被优化到相近区域。
20. Word2Vec 原始 softmax 为什么计算代价高?¶
预测一个词的概率需要对整个词表归一化:
词表很大时,每个训练样本都计算全词表 softmax 成本很高。21. Negative sampling 的核心思想是什么?¶
把多分类 softmax 近似为若干二分类问题。对正样本提高 score,对少量采样负样本降低 score。这样每次只更新少量词向量,而不是整个词表。
22. 请写出 Skip-gram with negative sampling 的目标形式。¶
常见目标:
其中v_c 是中心词向量,v_o 是真实上下文词向量,v_neg 是负样本词向量。
23. negative sampling 中负样本如何影响训练质量?¶
负样本太容易,训练信号弱;负样本太难或包含假负样本,会误导模型。采样分布、负样本数量和难度会影响向量空间质量。
24. hierarchical softmax 的核心思想是什么?¶
把词表组织成二叉树,预测词变成预测从根到叶子的路径。复杂度从 O(V) 降到约 O(log V)。Word2Vec 常用 Huffman tree,让高频词路径更短。
25. Word2Vec 中窗口大小会影响什么语义特征?¶
小窗口更关注句法和局部搭配,例如词性、短语关系。大窗口更关注主题和语义相关性。窗口大小影响词向量捕捉的是局部语法还是全局主题。
四、GloVe 与 FastText¶
26. GloVe 的核心思想是什么?¶
GloVe 通过全局词-词共现矩阵学习词向量,使词向量内积能够拟合共现次数的对数。它认为词向量应解释语料中的全局共现统计和比例关系。
27. GloVe 和 Word2Vec 的主要区别是什么?¶
Word2Vec 主要基于局部上下文预测训练。GloVe 显式构建全局共现矩阵,并用加权最小二乘目标拟合共现统计。简化说:Word2Vec 是 prediction-based,GloVe 是 count-based/global statistics。
28. GloVe 的共现矩阵 X_ij 表示什么?¶
X_ij 表示词 i 和词 j 在语料窗口中共现的次数。它反映全局语料统计关系。
29. GloVe 损失中为什么要使用 log X_ij 和权重函数?¶
共现次数跨度很大,取 log 可以压缩尺度。权重函数用于降低极低频噪声和极高频词对损失的主导,平衡不同共现对的贡献。
30. FastText 相比 Word2Vec 引入了什么关键改进?¶
FastText 引入字符 n-gram 子词信息。词向量由其子词 n-gram 向量组合得到,而不是只为完整词学习一个向量。
31. FastText 如何处理 OOV 或罕见词?¶
即使完整词没见过,只要其字符 n-gram 在训练中见过,FastText 可以通过 n-gram 向量组合得到该词表示。因此它比 Word2Vec 更能处理 OOV 和罕见词。
32. FastText 为什么对形态丰富语言更友好?¶
形态丰富语言中词缀、变形、复合词很多。FastText 利用字符 n-gram,可以共享词根、前缀、后缀信息,对不同词形有更好泛化。
33. Word2Vec、GloVe、FastText 共同的局限是什么?¶
它们主要是静态词向量,不能充分根据上下文处理多义词;句子和文档表示需要额外聚合;训练目标较简单,不直接面向现代语义检索或指令场景。
五、句向量与 Pooling¶
34. sentence embedding 的目标是什么?¶
目标是把一句话编码成固定维度向量,使语义相似句子更接近,不相似句子更远。它用于语义搜索、聚类、去重、匹配、RAG 检索等任务。
35. 从 token hidden states 得到句向量有哪些常见 pooling 方法?¶
常见方法包括 [CLS] pooling、mean pooling、max pooling、attention/weighted pooling、last token pooling。选择取决于模型架构和训练方式。
36. mean pooling 时为什么必须使用 attention mask?¶
因为 batch 中有 padding。若把 padding hidden states 纳入平均,会污染句向量。正确做法是只对 attention_mask 为 1 的有效 token 求平均。
37. [CLS] pooling、mean pooling、last token pooling 分别适合哪些场景?¶
[CLS] pooling 常见于 BERT 类分类或专门训练过的 encoder。mean pooling 常用于 sentence-transformers。last token pooling 常见于 decoder-only embedding 模型,因为最后 token 表示聚合了前文上下文。
38. 为什么句向量模型通常需要专门训练,而不是直接拿语言模型 hidden state 平均?¶
语言模型训练目标通常是预测 token,不一定优化句向量相似度空间。直接平均 hidden states 可能不具备良好的语义相似度和检索性质。专门训练会用对比学习或匹配数据,让向量空间适合比较。
39. embedding 向量是否通常需要 L2 normalization?为什么?¶
检索中常对向量做 L2 normalize,使 dot product 等价于 cosine similarity,减少向量范数对相似度的干扰,并便于使用向量索引。是否 normalize 取决于模型训练方式和索引设置。
六、SBERT、SimCSE 与对比学习¶
40. SBERT 相比普通 BERT 解决了什么问题?¶
普通 BERT 做句子对匹配通常需要 cross-encoder,把两句一起输入,无法高效大规模检索。SBERT 用 Siamese/triplet 结构分别编码句子,得到可比较的句向量,可离线建库并快速相似度搜索。
41. Siamese encoder 在 SBERT 中起什么作用?¶
Siamese encoder 用同一个 encoder 分别编码两个句子,得到向量 u 和 v,再用 cosine similarity 或其他相似度计算它们的关系。共享参数保证两个句子在同一向量空间。
42. bi-encoder 和 cross-encoder 有什么区别?¶
bi-encoder 分别编码 query 和 document,向量可预计算,检索快。cross-encoder 把 query 和 document 拼接输入模型,直接输出相关性分数,交互更充分但计算慢,无法对海量文档预计算单独向量。
43. 为什么 bi-encoder 适合大规模检索?¶
文档 embedding 可以离线预计算并建立 ANN 索引。查询时只需编码 query,再做向量近邻搜索。复杂度远低于对所有 query-document pair 运行 cross-encoder。
44. cross-encoder 为什么通常更准但更慢?¶
cross-encoder 中 query 和 document token 可以通过 attention 充分交互,细粒度匹配能力更强。但每个候选 pair 都要单独前向计算,不能预计算文档向量,因此很慢。
45. SimCSE 的无监督训练思路是什么?¶
同一句子输入模型两次,依靠 dropout 产生两个不同表示,把它们作为正样本对。batch 内其他句子作为负样本。用 contrastive loss 拉近同句表示、推远不同句表示。
46. SimCSE 的监督训练中 entailment 和 contradiction 样本分别如何使用?¶
NLI 中 entailment pairs 可作为正样本,因为两句语义相近;contradiction pairs 可作为 hard negatives,因为它们表面相关但语义冲突,能增强区分能力。
47. contrastive learning 的目标是什么?¶
让正样本对更近,负样本对更远。对于检索,就是让 query 与相关 document 向量相似度高,与不相关 document 相似度低。
48. 请写出 InfoNCE/softmax contrastive loss 的基本形式。¶
其中d+ 是正样本,d_j 包含正样本和负样本,tau 是 temperature。
49. temperature 在 contrastive loss 中起什么作用?¶
temperature 控制 softmax 分布尖锐程度。较小 temperature 放大相似度差异,使模型更关注难区分样本;较大 temperature 分布更平滑。设置不当会影响训练稳定性和向量空间结构。
七、检索 Embedding、BGE 与 CONAN¶
50. dense retrieval 的基本流程是什么?¶
文档先离线编码成 dense vectors 并建立向量索引。查询时编码 query,计算 query vector 与 document vectors 的相似度,返回 top-k 文档。
51. query embedding 和 document embedding 为什么需要在同一向量空间?¶
相似度计算要求 query 和 document 向量可直接比较。若它们不在同一空间,dot product/cosine 没有意义。bi-encoder 通常用共享或对齐训练的 encoder 保证空间一致。
52. BGE 是什么?它通常用于什么场景?¶
BGE 是 BAAI General Embedding 系列模型,常用于文本向量化、语义检索、RAG 召回、相似度匹配、聚类等场景。它提供中文、英文、多语言和多功能版本。
53. BGE 中 query instruction 有什么作用?¶
query instruction 告诉模型当前文本是检索 query,并指定“为搜索相关段落表示这个句子”等任务意图。对于 instruction-tuned embedding 模型,使用正确 instruction 能让 query 和 passage 更好对齐。
54. BGE-M3 中 M3 分别指什么?¶
BGE-M3 中 M3 指 Multi-Linguality、Multi-Functionality、Multi-Granularity。它强调多语言、多检索功能(dense/sparse/multi-vector)和多粒度文本处理。
55. dense retrieval、sparse retrieval、multi-vector retrieval 各有什么特点?¶
dense retrieval 用单个稠密向量做语义匹配,召回快但可能漏关键词。sparse retrieval 类似 BM25 或 learned sparse,擅长关键词匹配。multi-vector retrieval 保留多个 token/片段向量,细粒度匹配更强,但存储和计算更高。
56. embedding retrieval 和 reranker 在 RAG 中如何配合?¶
embedding retrieval 负责从大规模文档库快速召回 top-k 候选。reranker 通常用 cross-encoder 对候选做更精细排序。最后将高质量上下文交给 LLM 生成答案。
57. CONAN embedding 的核心关注点是什么?¶
CONAN 关注如何用更多、更高质量的负样本提升通用文本 embedding。它提出动态 hard negative mining、cross-GPU balancing loss,并利用 prompt-response pairs 训练 embedding。
58. dynamic hard negative mining 想解决什么问题?¶
固定预处理 hard negatives 会随着模型变强而变得不够难。动态 hard negative mining 在训练过程中根据当前模型状态挖掘更有挑战的负样本,让训练信号持续有效。
59. cross-GPU balancing loss 或跨 GPU negatives 为什么有价值?¶
对比学习需要大量负样本。单 GPU batch 受显存限制,跨 GPU 收集 embeddings 可以扩大负样本池。balancing loss 还可以缓解多任务 batch size 不均衡带来的训练偏差。
60. prompt-response pairs 为什么可以用于 embedding 训练?¶
prompt 和 response 通常存在语义关联,可以构造 query-positive 对。例如 prompt 是用户需求,response 是相关回答。利用这类数据可以增强 embedding 模型对问答、指令和语义检索场景的对齐能力。
八、相似度、评测与工程问题¶
61. dot product、cosine similarity、L2 distance 有什么区别?¶
dot product 同时受方向和向量范数影响。cosine similarity 只看方向相似度。L2 distance 衡量欧氏距离。检索中常用 dot product 或 cosine;是否 normalize 会影响它们的等价性。
62. 向量 L2 normalize 后,dot product 和 cosine similarity 有什么关系?¶
若 ||q||=||d||=1:
63. embedding 检索常用哪些评测指标?¶
常用 Recall@K、Precision@K、MRR、NDCG、MAP。语义相似度任务常用 Spearman/Pearson correlation。分类和聚类任务则用 accuracy、F1、NMI 等。
64. MTEB 是什么?为什么不能只看 MTEB 排名选择 embedding 模型?¶
MTEB 是大规模文本 embedding 综合评测基准,覆盖检索、分类、聚类、相似度等任务。不能只看排名,因为业务数据、语言、领域、query 类型、chunk 策略和延迟成本可能与 MTEB 不同。最终要用自己的任务评测。
65. hard negatives 有什么好处和风险?¶
好处是提供更强训练信号,提升细粒度区分能力。风险是假负样本、过难负样本导致训练不稳定、采样偏差让模型学偏。
66. 什么是假负样本?它会怎样影响 embedding 训练?¶
假负样本是被标为负样本但实际上相关的样本。对比学习会把它推远,破坏语义空间,降低召回效果。hard negative mining 时尤其要注意假负样本。
67. chunk size 会如何影响 RAG 中的 embedding 检索?¶
chunk 太小可能缺少上下文,语义不完整;chunk 太大可能混入多个主题,embedding 被平均稀释,也增加上下文成本。合适 chunk size 要根据文档结构、任务和模型上下文长度调试。
68. 如果检索结果语义相关但关键词不匹配,或关键词匹配但语义不相关,可以如何改进?¶
可以使用 hybrid retrieval 结合 dense 和 sparse;加入 reranker;调整 chunk;微调 embedding;引入 hard negatives;使用 query rewrite 或领域词表。关键词问题通常 dense 和 BM25 结合更稳。
69. 如果业务领域效果差,如何评估是否需要微调 embedding 模型?¶
先构造领域验证集,评估 Recall@K、MRR、NDCG 和人工 badcase。分析错误来自领域术语、query intent、chunk、关键词、负样本还是模型能力。如果通用模型在领域术语和语义匹配上系统性失败,可考虑领域微调。
70. 请总结第六天从经典 embedding 到现代检索 embedding 的完整知识链路。¶
Embedding 把离散对象映射成连续向量。one-hot 简单但稀疏且无语义距离;Word2Vec 通过上下文预测学习静态词向量,包含 CBOW 和 Skip-gram;GloVe 用全局共现矩阵学习词向量;FastText 引入字符 n-gram 子词信息改善 OOV。静态词向量无法处理上下文多义,Transformer hidden states 提供上下文 embedding。句向量需要 pooling 和专门训练,SBERT/SimCSE 用 bi-encoder 和对比学习得到可比较向量。现代 BGE/CONAN 等 embedding 模型面向检索和 RAG,核心在正负样本、hard negatives、in-batch/cross-GPU negatives、instruction 和评测闭环。
预览时标签不可点
<div class="