个人随笔
目录
初学Agent:RAG中Embedding核心知识笔记
2025-12-30 16:46:05

一、核心定义与价值

Embedding(嵌入)是RAG(检索增强生成)流程中的关键步骤,核心是将非结构化文本数据(单词、句子、文档等)映射为低维稠密向量的过程。其核心目标是实现“语义近则向量近”——让语义相似的文本在高维向量空间中的距离更近,语义不相关的文本距离更远,为后续语义检索提供基础。

价值:解决了传统关键词检索(如Elasticsearch)无法理解语义关联的问题(例如查询“治疗感冒的药”,可匹配“缓解伤风症状的药物”这类语义相似但关键词不同的文档),是RAG系统中“检索”环节的核心支撑。

二、Embedding的两种实现方式(无需必调用大模型平台)

Embedding的实现分为本地部署(引用包)和远程调用(大模型平台接口)两种路径,可根据隐私需求、成本、开发效率灵活选择:

1. 本地部署:引用相关包(无外部依赖)

核心逻辑:直接在本地/服务器运行开源Embedding模型,通过安装Python包即可实现,无需调用外部平台接口。

  • 核心依赖:Hugging Face的transformerssentence-transformers包,搭配PyTorch/TensorFlow框架。

  • 适用场景:数据隐私要求高(如企业内部数据)、追求低成本(无调用费)、需要快速响应的场景。

  • 极简代码示例:

  1. # 安装依赖:pip install sentence-transformers torch
  2. from sentence_transformers import SentenceTransformer
  3. # 加载开源模型(本地运行,无网络调用)
  4. model = SentenceTransformer('all-MiniLM-L6-v2') # 轻量级模型,384维输出
  5. # 文本向量化
  6. texts = ["RAG中的Embedding是文本向量化过程", "本地部署无需调用外部接口"]
  7. embeddings = model.encode(texts)
  8. print(f"向量维度:{embeddings.shape}") # 输出 (2, 384)`

2. 远程调用:大模型/大模型平台接口

核心逻辑:通过API调用第三方平台提供的Embedding能力,无需本地部署模型,直接获取向量结果。

  • 适用场景:快速上线、不想维护本地模型、追求更高精度(如GPT-4 Embedding)的场景。

  • 极简代码示例(以OpenAI为例):

  1. # 安装依赖:pip install openai
  2. from openai import OpenAI
  3. client = OpenAI(api_key="你的API Key")
  4. # 调用接口生成向量
  5. response = client.embeddings.create(
  6. input=["RAG中的Embedding核心是语义映射", "平台接口需按调用量付费"],
  7. model="text-embedding-3-small" # 1536维输出
  8. )
  9. embeddings = [item.embedding for item in response.data]
  10. print(f"向量维度:{len(embeddings[0])}") # 输出 1536`

3. 两种方式核心对比

对比维度 本地引用包(开源模型) 调用大模型平台接口
核心依赖 本地包+开源模型,无网络依赖 网络+平台API Key
成本 一次性部署,无后续调用费 按调用量计费(字/次)
隐私性 数据不出本地,隐私性高 数据上传平台,隐私性低
部署复杂度 需配置深度学习环境,有一定门槛 仅调用API,几乎无部署门槛
精度 中高(开源模型效果接近闭源) 高(如GPT-4 Embedding最优)

三、Embedding核心原理(基于Transformer架构)

主流文本Embedding模型基于Transformer架构,核心流程分为3步,本质是“文本预处理→语义提取→向量输出”的语义映射过程:

1. 文本预处理:转换为模型可识别格式

模型无法直接处理原始字符串,需先结构化编码:

  • 分词(Tokenization):将文本拆分为模型最小单位(如中文拆字/词,英文拆单词/子词);

  • 编码:将Token映射为词表索引,再通过“词嵌入层”转换为低维向量;

  • 添加位置编码:为每个Token向量补充位置信息(解决Transformer不感知文本顺序的问题,如“我爱吃苹果”与“苹果爱吃我”向量不同)。

2. 语义提取:通过Transformer编码器学习深层语义

预处理后的Token向量输入Transformer编码器,核心通过自注意力机制捕捉语义关联:

  • 自注意力机制:让每个Token关注文本中其他Token的关系(如“这项运动”关联“打篮球”);

  • 多层堆叠:从浅层学习语法、中层学习短语含义,到高层学习句子/文档整体语义;

  • 上下文依赖:解决一词多义(如“银行”在“银行门口”和“河边银行”中向量不同)。

3. 向量输出:生成最终Embedding向量

通过编码器处理后得到每个Token的“上下文向量”,再通过以下方式生成整体文本向量:

  • 短文本:取开头[CLS]标记的向量(专门表示文本整体语义);

  • 长文档(RAG常见):分段处理(拆分为段落生成向量)或平均池化(所有Token向量取平均值);

  • 输出:固定长度低维稠密向量(如all-MiniLM-L6-v2输出384维,GPT-4 Embedding输出1536维)。

4. 语义捕捉能力的来源:大规模训练

Embedding模型的语义映射能力来自“大规模语料训练”,核心训练目标为:

  • 对比学习(主流):拉近相似文本对向量,推远不相似文本对;

  • 辅助目标:掩码语言模型(MLM,预测被遮盖的Token)、句子排序任务(NSP,判断句子是否连续)。

训练数据规模决定模型能力:开源模型(如all-MiniLM)基于亿级文本训练,闭源平台模型(如GPT-4 Embedding)基于千亿级文本训练,精度更高。

四、Embedding训练与大模型训练的核心区别

Embedding训练虽属于模型训练,但与大语言模型(LLM)训练是两种截然不同的技术路线,无“包含”关系,核心区别体现在5个维度:

1. 训练目标不同(核心差异)

  • Embedding模型:优化向量相似度,目标是“语义相似文本向量近”,输出固定长度向量(用于检索匹配);

  • 大模型:优化文本生成与理解,目标是“生成连贯文本、回答问题”,输出自然语言文本(用于创作、问答)。

2. 模型结构与规模悬殊

对比项 Embedding模型 大语言模型(LLM)
参数量 百万-千万级(如all-MiniLM约1.2亿) 数十亿-万亿级(如GPT-4约1.8万亿)
架构 仅Transformer编码器(无解码器) 完整Transformer(编码器+解码器或纯解码器)
层数 浅(6-12层) 深(30-100+层)
训练数据量 亿级Tokens 数万亿Tokens(TB级)

3. 训练方式不同

  • Embedding模型:专项独立训练,预训练以对比学习为主,微调仅轻量调整顶层参数(优化相似度);

  • 大模型:全参数协同训练,预训练以“下一个Token预测”为核心,微调需全参数更新(适配对话、代码生成等多样任务)。

4. 向量特性不同

  • Embedding向量:静态性(相同文本生成相同向量),专为检索优化;

  • 大模型向量:动态性(相同文本在不同上下文向量不同),通用性强但检索效率低。

5. 资源需求与应用场景

  • Embedding模型:低算力(单GPU可训练)、部署成本低,用于RAG检索、语义匹配、推荐系统;

  • 大模型:极高算力(数千GPU并行)、部署成本高,用于内容创作、对话交互、复杂问答。

五、关键澄清:大模型训练不包含Embedding训练

很多人误以为“大模型训练包含Embedding训练”,实际二者是“交集而非包含”:

  • 交集:均涉及“文本→向量”转换,均基于Transformer语义捕捉能力;

  • 无包含关系:大模型中的“Token Embedding层”是大模型的“输入组件”,其训练是为了支撑后续生成任务(辅助下一个Token预测),向量是中间产物,单独用于检索效果差;而专用Embedding模型是独立工具,训练全程优化相似度,向量是最终产物(专为检索设计)。

通俗理解:大模型训练是“训练全能厨师”,“切菜”(文本向量化)是基础动作,目的是“炒菜”(生成文本);Embedding训练是“训练指纹识别师”,全程专注“录指纹”(生成向量),目的是“比对指纹”(检索匹配),二者是不同的“职业训练”。

六、核心总结

  1. 本质:Embedding是“文本语义→低维稠密向量”的语义映射过程,核心价值是实现语义相似度匹配,支撑RAG检索;

  2. 实现:可本地部署开源模型(低成本、高隐私)或调用平台接口(快速上线、高精度),无需必依赖大模型平台;

  3. 原理:基于Transformer架构的“预处理→语义提取→向量输出”流程,能力源于大规模对比学习训练;

  4. 关系:与大模型训练独立并行,无包含关系,二者在RAG中互补(Embedding负责“找信息”,大模型负责“用信息生成回答”)。

    (注:文档部分内容可能由 AI 生成)

 2

啊!这个可能是世界上最丑的留言输入框功能~


当然,也是最丑的留言列表

有疑问发邮件到 : suibibk@qq.com 侵权立删
Copyright : 个人随笔   备案号 : 粤ICP备18099399号-2