Skip to content

在 RAG 中的 Embedding 嵌入是什么? ​

  • 标签:AI、大模型、RAG

🏛 业务架构师 ​

Embedding 是把文字(词、句子、文档)映射成高维稠密向量的技术——比如一段 512 维的向量,语义相近的文本在向量空间里距离也近。它本质上是给知识建立了"数学化的语义坐标"。

在 RAG 中的角色:它是检索层的基石。文档切块后逐块向量化入库;用户提问也被向量化,然后通过余弦相似度等计算"语义距离",找出与问题最接近的知识块。没有 Embedding,检索就只能靠关键词字面匹配,"如何退货"搜不到"售后退换流程"。

业务价值:Embedding 解决的是企业知识检索从"字面匹配"到"语义理解"的跃迁——用户的问法千奇百怪,知识库的写法千篇一律,Embedding 把两边的鸿沟抹平了。这也是为什么老一代企业搜索(关键词搜索)满意率常年在 50% 以下,而向量检索能到 80%+。

2026 现状:Embedding 模型已经是充分竞争市场,调用成本极低(比生成模型便宜两个数量级),BGE、GTE 等开源中文模型效果已足够生产使用。对多数企业,Embedding 选型不再是瓶颈,数据质量和检索策略才是。

🏗 系统架构师 ​

Embedding 是把离散文本映射到稠密向量空间的函数,语义相近的文本在向量空间中距离近(余弦相似度高)。在 RAG 里它是"语义坐标系":文档切块后逐条嵌入入库,查询时把 query 也嵌入,用向量近邻找语义相关的 chunk。

机制拆解:现代 Embedding 模型是基于 Transformer 的双塔结构——文本过 encoder 取最后一层隐状态做池化(mean-pooling 或 CLS),输出固定维度向量(如 1024 维)。训练目标是对比学习:正例(相关问答对)拉近、负例推远,因此学到的空间天然对"语义相关性"做了校准。

架构师视角的关键认知:

  • Embedding 决定了 RAG 的召回上限,后续 Rerank 只能在召回集合内重排——上限不够换 Embedding 模型比调 Prompt 有用;
  • 它是离线批量、在线低延迟的典型双层负载:建库时批量嵌入(吞吐优先),查询时单条嵌入(延迟 10~50ms);
  • 维度即存储成本:1 亿条 chunk × 1024 维 × 4 字节 ≈ 400GB 原始向量(未压缩),选模型时维度和 MRL 截断支持直接影响容量规划与 ANN 索引内存占用;
  • 模型换代 = 全库重嵌入,这是一次数据迁移级别的工程,选型时要评估迁移成本。

💻 全栈开发专家 ​

Embedding 是把文本映射成高维稠密向量(比如 1024 维),让「语义相近的文本在向量空间中距离也近」。它是个双塔 Encoder:query 和文档各自独立编码(所以可以离线批量算好文档向量),检索时算余弦相似度找最近邻。

在 RAG 里的角色是语义匹配引擎:用户问「退货政策」,文档写「售后退换货流程」,字面零重叠,但两边的向量夹角很小,照样能召回——这是关键词检索做不到的。

Java 里接入很直接(Spring AI):

java
EmbeddingModel em = new OpenAiEmbeddingModel(...);
float[] v = em.embed("退货政策");           // 1536 维
List<float[]> docs = em.embedAll(chunkTexts); // 离线批量
// 写入向量库,检索时余弦相似度排序

工程要点:一,同一系统的 query 和文档必须用同一个 Embedding 模型,混用两个模型向量空间不同,相似度无意义;二,入库前做 L2 归一化(很多库默认余弦但存的是原始向量时要统一);三,换 Embedding 模型等于换向量空间,全量文档要重新入库,所以要预留重建索引的管道和双写切换窗口。