Jean's Blog

一个专注软件测试开发技术的个人博客

0%

RAG组件--向量嵌入之嵌入技术的发展和演变

早期词嵌入模型

image-20250813172418580

  • Word2Vec:Google提出的词向量模型,将词语转换为低维向量表示,通过捕捉相邻词语的上下文规律学习语义信息
    • 两种架构:
      • 连续词袋模型(CBOW):根据上下文预测当前词
      • 跳字模型(Skip-Gram):根据当前词预测上下文
  • GloVe(Global Vectors for Word Representation):斯坦福大学提出,通过构建词语共现概率矩阵训练,擅长捕捉稀疏数据和全局语义信息
  • FastText则是由Facebook AI Research团队提出的一种词嵌入模型。它的独特之处在于考虑了词语的子词信息,即将词语分解为字符n-gram,考虑子词信息

上下文相关的词嵌入模型

image-20250813172808956

  • 上下文无关模型局限:Word2Vec/GloVe等训练完成后固定,无法根据新语料自适应调整
  • Transformer革命:引入自注意力机制,使模型能根据输入上下文动态调整词嵌入
  • 代表模型:BERT、XLNet、ALBERT等基于Transformer架构的模型
  • 发展历程:从RNN-based模型到Transformer架构的演进,实现从静态到动态嵌入的转变

句子嵌入模型和SentenceTransformers框架

image-20250813173002793

  • 产生背景:词嵌入无法满足长上下文和语义细节需求
  • 核心思想:通过Transformer架构对整句/整段文本进行整体理解
  • 框架优势:成为现代嵌入模型的基础架构,支持语义搜索、文本相似度等任务
  • 实现原理:基于自注意力机制构建句子级向量表示

常见的开源Sentence Bert Embedding 模型

SentenceTransformers的官方网站:https://sbert.net/

  • 框架功能:提供10,000+预训练模型,支持语义搜索、文本相似度等应用

  • 训练能力:支持自定义模型训练和微调

  • 维护团队:由UKPLab创建,现由Hugging Face维护

  • 使用示例:

    1
    2
    3
    4
    from sentence_transformers import SentenceTransformer

    model = SentenceTransformer("all-MiniLM-L6-v2")
    embeddings = model.encode(sentences)
模型名称 参数量 维度 特点 使用场景
paraphrase-MiniLM-L6-v2 33M 384 为文本相似度和语义检索特别优化,专注于高效低资源环境 比较句子或段落相似度;适用于常规NLP任务
all-MiniLM-L6-v2 33M 384 更广泛训练的版本,覆盖多种用例;速度快、效果较好 搜索引擎优化;多语言支持较弱
all-mpnet-base-v2 110M 768 基于MPNet的更大型模型,适合需要更高精度的场景 高精度语义检索;需要更多计算资源

在Hugging Face上

  • 模型集成:几乎所有嵌入模型都提供Sentence Transformers实现
  • BGE-M3示例:
    • 支持多语言、多功能性
    • 同时支持稀疏和密集检索
    • 使用方式与标准Sentence Transformer模型一致

多语言嵌入模型

  • 代表模型:MUSE、XLM-R、Universal Sentence Encoder
  • 现代发展:OpenAI嵌入和BGE-M3等都已支持多语言
  • 核心能力:将不同语言映射到同一向量空间实现跨语言语义理解

多模态嵌入模型

image-20250813174044195

  • CLIP模型:OpenAI提出的文本-图像对齐模型
  • 核心思想:将不同模态(文本、图像、音频等)映射到同一向量空间
  • 应用场景:实现跨模态搜索(如用文字搜索图片)
  • 技术实现:通过对比学习对齐不同模态的嵌入表示
  • 发展前景:为多模态大模型系统奠定基础,实现更丰富的信息交互