NLP Text Embedding(文本嵌入)的发展史
— dawn
NLP Text Embedding(文本嵌入)的发展史,本质上是计算机如何从“读字”到“解意”的演进过程。它将碎片化的文字转化为数学空间里的连续向量,让计算机能够像人类一样理解语义的关联。
我们可以将其发展历程分为四个里程碑式的断代:
第一代:离散表示时代(20世纪90年代 - 2012年)
核心逻辑:计数与统计
在这一阶段,文字被视为独立的符号,计算机并不理解词与词之间的关系。
- One-Hot Encoding(独热编码):最简单的表示法。给词典里每个词一个唯一的 ID。
- 缺点:维度灾难(词典多大,向量就多长);语义孤岛(无法表达“猫”和“狗”比“猫”和“石头”更接近)。
- TF-IDF(词频-逆文档频率):根据词在文档和语料库中出现的频率来衡量重要性。
- 价值:至今仍是关键词提取和搜索排序的强力基准。
- LSA(潜在语义分析):通过矩阵分解(SVD)尝试寻找词语背后的“隐含主题”。
- 地位:这是人类第一次尝试通过数学手段捕捉语义,但计算成本极高。
第二代:静态分布式表示时代(2013年 - 2017年)
核心逻辑:分布式假设——“物以类聚,词以邻分”
2013年是 NLP 的分水岭,Google 发布了 Word2Vec,开启了深度学习在 NLP 领域的统治。
- 突破:首次实现了低维、稠密的向量表示,且向量之间的几何距离代表了语义相似度。
- GloVe (2014):由斯坦福提出,结合了全局统计信息和局部上下文窗。
- FastText (2016):Facebook 提出,引入了**子词(Sub-word)**信息。
- 价值:解决了“未登录词(OOV)”问题,能处理拼写错误(如 ebike 和 e-bike 的相似性)。
- 局限性:这些向量是静态的。一个词无论在什么语境下,向量都一样(如“苹果公司”和“吃苹果”中的“苹果”向量相同,即无法处理歧义)。
Word2Vec (2013):利用“预测上下文”的任务来训练向量。著名的公式:
King−Man+Woman=QueenKing−Man+Woman=Queen。
第三代:动态语境嵌入时代(2018年 - 2022年)
核心逻辑:预训练语言模型(Contextualized)
这一阶段,词向量不再是查表(Lookup),而是根据上下文实时计算生成的。
- ELMo (2018):通过双向 LSTM 训练,首次实现了根据上下文动态改变词向量。
- BERT (2018):Google 发布,基于 Transformer 架构。
- 突破:彻底统治了语义理解。同一个词在不同句子中会有完全不同的向量表示,完美解决了多义词问题。
- Sentence-BERT (SBERT, 2019):这是你提到的 all-MiniLM-L6-v2 的祖先。
- 价值:BERT 虽然强,但计算两个句子的相似度极慢。SBERT 通过孪生网络结构,让计算机能预先算出句子的 Embedding 并进行极速对比。
第四代:大模型与通用检索时代(2023年 - 至今)
核心逻辑:对比学习、长文本与指令对齐
随着大模型(LLM)的爆发,Embedding 进入了“万物皆可嵌入”且“任务导向”的时代。
- 对比学习(Contrastive Learning):如 SimCSE。通过让模型判断“这两个句子意思一样,那两个不一样”来大幅提升向量的区分度。
- OpenAI Embeddings (2023):如 text-embedding-ada-002。通过极大规模的数据训练,提供了极其稳定的多语言通用表示。
- BGE / GTE 模型 (2024-2026):北京智源(BAAI)等机构开源的模型,在多项榜单(MTEB)中超越了闭源模型。
- 特点:支持极长的输入(从 512 扩展到 32k 个 token);支持指令触发(Instruction-tuned),即你可以告诉模型:“请为了搜索任务生成向量”或“请为了聚类任务生成向量”。
- RAG(检索增强生成)的最佳拍档:现在的 Embedding 模型专门针对“寻找答案”进行优化,成为了所有 AI 决策系统的“引路人”。
总结对比
针对你的项目:
你现在所处的重构阶段,正是利用 第四代模型(如 BGE 或 Llama-embedded) 来实现 L4 算力层 的时刻。这意味着你的系统不仅能识别词,还能在毫秒间从数千万的知识节点中,精准定位到与用户意图最吻合的那一个。