支持私有化部署
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


文本生成Embedding通俗理解 & 微调模型的流程

发布日期:2025-05-30 06:41:35 浏览次数: 1547 作者:灵矩Lab
推荐语

探索文本生成Embedding的奥秘,掌握微调模型的关键流程。

核心内容:
1. 文本生成Embedding的基本原理和步骤
2. 常用Embedding模型及其特性解析
3. 微调模型流程及技术性干预手段

杨芳贤
53A创始人/腾讯云(TVP)最具价值专家

文本是怎么生成 Embedding 的?

总体流程:


输入文本 → 用“Embedding模型”处理 → 输出一个向量(embedding)


比如

你输入一句话:“人工智能改变世界”,Embedding 模型会输出一个像这样的向量:

[0.432, -0.115, ..., 0.981]

每个逗号分隔的部分就是一个纬度,这个向量通常是几百维,比如384维、768维),这个向量就代表了这句话在语义空间中的“位置”。

? 常用的通用技术 / 模型有哪些?


通用预训练Embedding模型(你可以直接用):


模型
框架
特点
Sentence-BERT (SBERT)
PyTorch / HuggingFace
把句子/段落转成语义向量,非常常用
OpenAI Embedding 模型(如 text-embedding-3-small
OpenAI API
精度高、部署简单、商用化好
Cohere embeddings
Cohere API
多语言支持、商业化接口
FastText
Facebook
适合词级别、支持子词
Word2Vec / GloVe
经典词嵌入
快速但已不太适合语句级别任务


? 文本生成向量过程“人为干预”方式


1️⃣ 选择或训练不同模型(模型选择)


  • 不同Embedding模型偏好不同语境和语言风格

  • 比如法律、医学、代码领域,可以用专门训练的数据做“领域Embedding”


2️⃣ 修改输入方式(Prompt 工程


你可以人为在文本前后加点提示词,引导模型“更好理解文本”:

原文本

“苹果是一种水果。”

改造后

“这是对一个水果的定义:苹果是一种水果。”

得到的Embedding可能更符合你想要的“知识类型”语义。

3️⃣ 微调模型(Fine-tuning


  • 如果你有特定领域的数据(比如公司文档、合同语料),可以对一个预训练模型进行微调。

  • 这样得到的Embedding更符合你的知识库内容。


⚠️ 微调成本高,通常需要GPU资源和一定技术门槛。

4️⃣ 归一化 / Pooling策略(技术性干预


句子Embedding的最终向量,通常是由模型输出的多个 token 向量聚合(比如mean pooling)得到的。

你可以选:

  • mean pooling(平均)

  • CLS token(BERT第一个位置)

  • max pooling


不同策略影响向量质量,可以做实验调优。



微调(Fine-tuning)Embedding模型可以让你在自己的数据上获得更有针对性的语义表示,尤其适合特定行业(法律、金融、医疗)或专属企业文档(客服聊天记录、产品文档等)等应用场景。

微调Embedding模型的整体流程


准备数据 → 选择模型 → 构建训练集(正负样本) → 配置训练参数 → 开始训练 → 验证 → 部署

一、准备阶段

准备训练数据,你需要构建这样的语义匹配样本:


查询(Query)
正样本(Positive)
负样本(Negative,可选)
“退货流程怎么操作?”
“用户退货需在7天内提交申请…”
“产品说明书介绍”
“营业时间是几点”
“门店营业时间为上午9点到晚上8点”
“招聘信息”

数据格式通常是:

  • 句子对(query 与 正/负文档)

  • 或 三元组(query, positive, negative)


? 推荐格式:JSONL(每行为一个训练样本)

{"query": "退货流程", "positive": "退货请在七天内完成申请", "negative": "联系客服电话是400..."}

二、选择模型架构


推荐模型(适合微调的Embedding模型):


模型
优点
框架
Sentence-BERT (SBERT)
专门为句子Embedding设计,可快速微调
PyTorch / HuggingFace
MiniLM / BERT base
精度高、速度快
HuggingFace
OpenAI Embedding 模型
商用化强,但无法微调
OpenAI API(闭源)


三、构建微调流程(以Sentence-BERT为例)


使用 sentence-transformers(HuggingFace旗下)库:

1. 安装必要库

pip install sentence-transformers
2. 构造训练数据加载器
from sentence_transformers import SentenceTransformer, InputExample, lossesfrom torch.utils.data import DataLoader
# 示例数据train_examples = [    InputExample(texts=["退货流程""退货请在七天内完成申请"], label=1.0),    InputExample(texts=["退货流程""联系客服电话是400..."], label=0.0),]
train_dataloader = DataLoader(train_examples, shuffle=True, batch_size=8)
3. 加载预训练模型
model = SentenceTransformer('sentence-transformers/all-MiniLM-L6-v2')
4. 选择损失函数(多使用CosineSimilarityLoss)
train_loss = losses.CosineSimilarityLoss(model=model)
5. 微调训练
model.fit(    train_objectives=[(train_dataloader, train_loss)],    epochs=1,    warmup_steps=100)
6. 保存模型
model.save('my-custom-embedding-model')
之后你就可以用这个模型来生成专属的 Embedding 向量了:
model = SentenceTransformer('my-custom-embedding-model')embedding = model.encode("请问你们的营业时间是几点?")
四、调优与验证

可以用以下方式验证微调后的效果:

  • 余弦相似度排序是否更合理?

  • 在RAG检索中是否召回更相关的内容?

  • Embedding聚类可视化是否更清晰?(用t-SNE/UMAP)





53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询