当前位置: 首页 > ops >正文

大模型(7)——向量模型(向量化存储)

文章目录

      • 一、核心概念
      • 二、Embedding模型分类
        • 1. 文本Embedding模型
        • 2. 多模态Embedding模型
        • 3. 领域专用模型
      • 三、Embedding模型的核心技术
        • 1. 训练方法
        • 2. 损失函数
        • 3. 向量归一化
      • 四、实现步骤(以文本Embedding为例)
        • 1. 使用预训练模型(推荐)
        • 2. 自定义训练(需数据)
      • 五、应用场景
      • 六、优化技巧
      • 七、评估指标
      • 八、挑战与解决方案
      • 九、工具与库推荐
      • 十、未来方向

向量模型(Embedding Model)是将离散数据(如文本、图像、音频等)转化为连续向量表示(即嵌入向量/Embeddings)的机器学习模型。这些向量能够捕捉数据的语义信息,并用于相似性计算、检索、聚类等任务。以下是关于Embedding模型的详细解析:


一、核心概念

  1. 什么是Embedding?

    • 将高维离散数据(如单词、句子、图片)映射到低维连续向量空间(通常几十到几千维)。
    • 示例:单词"猫" → [0.2, -0.5, 0.7, …],句子"我喜欢编程" → [1.1, -0.3, 0.9, …]。
  2. 关键特性

    • 语义保留:相似内容在向量空间中距离相近(如"狗"和"猫"的向量余弦相似度高)。
    • 可计算性:支持向量运算(如“国王 - 男 + 女 ≈ 女王”)。
    • 降维稠密表示:相比One-Hot编码更高效。

二、Embedding模型分类

1. 文本Embedding模型
  • 词级别(Word Embedding)
    • Word2Vec:Skip-gram/CBOW模型,通过上下文预测学习词向量。
    • GloVe:基于全局词共现矩阵的统计方法。
  • 句/文档级别(Sentence/Document Embedding)
    • BERT/SimCSE:基于Transformer的上下文相关嵌入。
    • Sentence-BERT:优化句子对相似性计算。
    • 最新模型:OpenAI的text-embedding-3、Cohere的Embed、BGE(BAAI通用嵌入)。
2. 多模态Embedding模型
  • CLIP(OpenAI):对齐图像和文本的共享向量空间。
  • ResNet/ViT:纯视觉模型的图像嵌入。
3. 领域专用模型
  • BioBERT:生物医学文本嵌入。
  • CodeBERT:代码语义嵌入。

三、Embedding模型的核心技术

1. 训练方法
  • 自监督学习
    • 对比学习(如SimCLR):拉近正样本对(相似数据),推开负样本对。
    • 掩码语言建模(如BERT):预测被遮蔽的单词。
  • 监督微调:在特定任务(如问答、分类)上微调嵌入模型。
2. 损失函数
  • 对比损失(Contrastive Loss):最小化正样本对距离,最大化负样本对距离。
  • Triplet Loss:锚样本与正样本的距离应小于锚样本与负样本的距离加边际。
  • 余弦相似度损失:直接优化嵌入向量的余弦相似度。
3. 向量归一化
  • 对输出向量做L2归一化,使相似度计算仅依赖向量角度(余弦相似度)。

四、实现步骤(以文本Embedding为例)

1. 使用预训练模型(推荐)
from sentence_transformers import SentenceTransformer# 加载模型(如BGE中文模型)
model = SentenceTransformer('BAAI/bge-small-zh')# 生成Embedding
sentences = ["深度学习模型", "神经网络"]
embeddings = model.encode(sentences, normalize_embeddings=True)print(embeddings.shape)  # 输出:(2, 384)
2. 自定义训练(需数据)
import torch
from transformers import AutoModel, AutoTokenizer# 定义对比学习模型
class MyEmbeddingModel(torch.nn.Module):def __init__(self, model_name="bert-base-uncased"):super().__init__()self.bert = AutoModel.from_pretrained(model_name)self.head = torch.nn.Linear(768, 256)  # 降维def forward(self, input_ids, attention_mask):outputs = self.bert(input_ids, attention_mask=attention_mask)embeddings = self.head(outputs.last_hidden_state[:, 0])  # 取[CLS]向量return torch.nn.functional.normalize(embeddings, p=2, dim=1)# 训练代码略(需准备正负样本对)

五、应用场景

  1. 语义搜索
    • 将查询和文档向量化,用余弦相似度排序结果。
  2. 推荐系统
    • 用户历史行为向量与内容向量匹配(如新闻推荐)。
  3. 聚类与分类
    • 对嵌入向量进行K-Means聚类或SVM分类。
  4. 大模型增强
    • RAG(检索增强生成):用向量检索相关知识输入LLM。
  5. 异常检测
    • 低相似度向量视为异常(如欺诈交易识别)。

六、优化技巧

  1. 数据预处理
    • 文本清洗(去停用词、标准化)、长文本分块。
  2. 模型选择
    • 英文:text-embedding-3-large(OpenAI)、all-mpnet-base-v2(Sentence-BERT)。
    • 中文:bge-base-zhm3e-base
  3. 混合检索
    • 结合向量搜索与关键词搜索(BM25)提升召回率。
  4. 量化与压缩
    • 将FP32向量转为INT8,减少存储和计算开销。

七、评估指标

  1. 内在评估
    • 词类比任务(如“巴黎:法国 ≈ 东京:?”的准确率)。
    • 语义相似度(与人工标注的Spearman相关系数)。
  2. 外在评估
    • 下游任务表现(如分类F1分数、检索命中率)。

八、挑战与解决方案

挑战解决方案
领域迁移能力差在领域数据上继续预训练或微调(Domain Adaptation)
多语言支持不足使用多语言模型(如paraphrase-multilingual-MiniLM)
长文本语义丢失分块嵌入后融合(如Max-Pooling)或使用长文本模型(Longformer)
计算资源消耗大蒸馏小模型(如TinyBERT)、量化推理

九、工具与库推荐

  • HuggingFace Transformers:提供主流Embedding模型。
  • Sentence-Transformers:简化句子嵌入训练和推理。
  • FAISS(Facebook):高效的向量相似度搜索库。
  • Milvus/Pinecone:向量数据库,支持大规模存储与检索。

十、未来方向

  1. 动态Embedding:根据查询上下文调整向量表示(如Cohere的动态嵌入)。
  2. 多模态统一:文本、图像、视频共享同一嵌入空间。
  3. 可解释性:可视化或分析向量维度的语义含义。

Embedding模型是AI系统的“语义理解引擎”,将离散数据转化为机器可计算的数学表示,为搜索、推荐、生成等任务提供基础支持。选择合适的模型和优化方法,能显著提升应用效果。

http://www.xdnf.cn/news/9306.html

相关文章:

  • Science综述:光电超构器件
  • Spring IoC(2)
  • 18、Python字符串全解析:Unicode支持、三种创建方式与长度计算实战
  • 【DeepSeek论文精读】12. DeepSeek-Prover-V2: 通过强化学习实现子目标分解的形式化数学推理
  • 【PhysUnits】14 二进制数的标准化表示(standardization.rs)
  • 【第1章 基础知识】1.6 事件处理
  • 嵌入式自学第二十九天(5.27)
  • 北京大学 | DeepSeek内部研讨资料:AI工具深度测评与选型指南,319页
  • 系统编程day05
  • 基于 STM32 的智慧农业温室控制系统设计与实现
  • 学习python day9
  • DeviceNET转EtherCAT协议转换网关解读
  • Qwen3内置提示词模板解读
  • 数据库大学实验一
  • 投影机三色光源和单色光源实拍对比:一场视觉体验的终极较量
  • 知识图谱系列(4):查询与推理技术
  • 第四十七篇-Tesla P40+Qwen3-30B-A3B部署与测试
  • 什么是PLM软件?离散制造业和流程制造业的主流PLM介绍、国产PLM应用案例
  • 5月27日星期二今日早报简报微语报早读
  • RuoYi前后端分离框架集成Jasypt实现配置信息加密
  • Kubernetes简介及常用命令
  • 高效大电流缓启动电路设计
  • Manus,AGI 要来临了吗?
  • 电子电路:欧姆定律和电流量子化有关系吗?
  • 深入剖析机器学习之波士顿房价案例
  • 易境通海外仓系统:如何提高仓库尾程派送环节效率?
  • 「Python教案」循环语句的使用
  • 离子风机如何保障汽车电子智造组装车间良品率
  • C语言数据存储
  • 操作系统——第四章(文件共享、保护、层级结构、系统布局..)