模型基础05:Embedding

从向量表示、语义相似度、向量空间的边界到常用模型,理解 Embedding 为什么是 RAG 和语义搜索的基础。

字数 1769 阅读时长 ≈ 6 分钟 2026-7-21 2026-7-27
模型基础05:Embedding

Embedding 是将文本、图像等数据转换为向量的过程,它是 RAG(检索增强生成)和语义搜索的基础。理解 Embedding,才能构建高效的知识库系统。

向量表示:从文本到数字

Embedding 的核心是将非结构化数据转换为结构化的向量表示。

什么是 Embedding

Embedding 是一种将离散符号(如单词、句子、图像)映射到连续向量空间的技术:

  • 输入:文本、图像、音频等非结构化数据
  • 输出:固定长度的实数向量
  • 目标:语义相似的输入,在向量空间中距离也相近

向量空间的特点

语义相似性

"猫" → [0.1, 0.3, -0.2, ...]
"狗" → [0.2, 0.2, -0.1, ...]  ← 距离近
"汽车" → [-0.5, 0.1, 0.3, ...]  ← 距离远

向量运算

运算含义示例
相似度两个向量的余弦相似度衡量语义相似程度
加法向量叠加”国王” - “男人” + “女人” ≈ “女王”
减法向量差提取语义差异
聚类分组相似向量文本分类、主题发现

Embedding 的维度

向量维度决定了表达能力和计算成本:

维度特点适用场景
128轻量、计算快简单匹配、低延迟场景
256平衡表达能力和速度大多数场景
512表达能力强需要精细语义区分
1024+高表达能力复杂语义理解、研究场景

语义相似度:衡量文本相似性

语义相似度是 Embedding 的核心应用,它决定了检索和匹配的质量。

相似度度量方法

方法公式特点适用场景
余弦相似度cos(θ) = A·B / (A
欧氏距离A-B
点积A·B计算快,但对长度敏感快速匹配
曼哈顿距离Σ|Aᵢ-Bᵢ|计算快低维数据

相似度阈值

设定合适的相似度阈值很重要:

阈值含义适用场景
> 0.9高度相似精确匹配、重复检测
0.7-0.9相似语义搜索、推荐
0.5-0.7相关扩展检索、模糊匹配
< 0.5不相关过滤、降噪

语义匹配示例

精确匹配

查询:"如何优化 MySQL 查询性能"
匹配:"MySQL 查询优化技巧" → 相似度 0.92

语义匹配

查询:"怎样让数据库更快"
匹配:"MySQL 查询优化技巧" → 相似度 0.78

不匹配

查询:"如何学习 Java"
匹配:"MySQL 查询优化技巧" → 相似度 0.35

Embedding 模型:常用选择

选择合适的 Embedding 模型是构建 RAG 系统的关键。

文本 Embedding 模型

模型维度特点适用场景
text-embedding-ada-0021536OpenAI 经典模型,平衡效果和成本通用场景
text-embedding-3-small1024新模型,效果更好大多数场景
text-embedding-3-large3072效果最好,但成本高需要高精度
all-MiniLM-L6-v2384开源轻量,适合边缘部署资源受限
bge-large-en1024开源,效果接近闭源开源部署
mxbai-embed-large1024多语言支持好多语言场景

代码 Embedding 模型

模型特点适用场景
code-search-ada-code-001OpenAI 代码专用代码搜索、理解
all-code-distilroberta-v1开源代码模型代码分析

模型选择建议

场景推荐模型理由
通用场景text-embedding-3-small平衡效果和成本
需要高精度text-embedding-3-large最好的效果
成本敏感all-MiniLM-L6-v2开源免费
多语言mxbai-embed-large支持多种语言
代码场景code-search-ada-code-001代码专用

Embedding 的应用场景

Embedding 有广泛的应用场景,核心是语义匹配和检索。

RAG(检索增强生成)

RAG 是 Embedding 最主要的应用:

用户查询 → Embedding → 向量检索 → 知识库文档 → 上下文 → LLM → 回答

关键步骤

  1. 知识库构建:将文档切分、Embedding、存入向量数据库
  2. 查询 Embedding:将用户查询转换为向量
  3. 向量检索:在向量数据库中查找相似文档
  4. 上下文构建:将检索到的文档作为上下文输入 LLM

语义搜索

语义搜索比关键词搜索更智能:

维度关键词搜索语义搜索
匹配方式精确匹配语义匹配
理解能力理解语义
同义词需要手动配置自动理解
多语言需要翻译直接匹配
示例”猫” 匹配 “猫""猫” 匹配 “猫咪”、“小猫”

文本分类

通过 Embedding + 分类器实现文本分类:

文本 → Embedding → 分类器 → 类别

优势

  • 不需要大量标注数据
  • 可以利用预训练模型的知识
  • 迁移学习效果好

聚类分析

将相似的文本聚在一起:

文本集合 → Embedding → 聚类算法 → 簇

应用

  • 主题发现
  • 文档分类
  • 异常检测

推荐系统

基于用户行为和内容的 Embedding 推荐:

用户行为 → 用户 Embedding
内容 → 内容 Embedding
相似度计算 → 推荐

Embedding 的挑战与优化

挑战

挑战描述影响
语义漂移不同语境下同一个词含义不同检索不准确
多义性一词多义匹配错误
长文本长文本的 Embedding 质量下降检索效果差
领域差异通用模型在特定领域效果差需要领域微调
时效性模型无法理解新词汇需要更新模型

优化方法

方法原理适用场景
领域微调在领域数据上微调 Embedding 模型特定领域
指令微调用指令-响应对微调提升检索效果
文本切分将长文本切分为短片段长文档处理
混合检索结合关键词和语义检索需要精确匹配
重排序先检索再重排提升精度
多向量表示一个文本用多个向量表示复杂语义

文本切分策略

策略方法优缺点
按字符数固定长度切分简单,但可能切断语义
按段落按段落边界切分保持语义,但长度不均匀
按语义按句子或语义单元切分效果最好,但复杂
递归切分先粗切再细切层次化检索

向量数据库:存储和检索 Embedding

向量数据库专门用于存储和检索向量,是 RAG 系统的基础设施。

常用向量数据库

数据库特点适用场景
Pinecone托管服务,简单易用快速启动
Milvus开源,功能丰富大规模部署
Chroma轻量级,适合开发开发测试
Weaviate混合检索,知识图谱需要多种检索方式
FAISSFacebook 开源,高性能需要极致性能
Elasticsearch传统搜索 + 向量检索已有 ES 集群

向量检索流程

1. 索引构建:文档 → Embedding → 向量数据库
2. 查询:用户查询 → Embedding → 向量检索 → Top-K 结果
3. 重排序:对结果进行重排
4. 返回:返回最终结果

检索参数

参数含义影响
Top-K返回前 K 个结果K 越大,召回率越高,但成本越高
相似度阈值过滤低于阈值的结果影响精度和召回率
索引类型向量索引的类型影响检索速度和精度

项目判断清单

  • 需要构建知识库系统 → 使用 Embedding + 向量数据库
  • 需要语义搜索 → 使用 text-embedding-3-small 或开源模型
  • 需要代码搜索 → 使用 code-search-ada-code-001
  • 长文档处理 → 先切分再 Embedding
  • 检索效果差 → 检查切分策略、模型选择、相似度阈值
  • 需要多语言支持 → 使用 mxbai-embed-large 等多语言模型
  • 需要成本控制 → 使用开源模型(如 all-MiniLM-L6-v2)
  • 需要极致性能 → 使用 FAISS 或 Milvus