写 RAG 的时候,一会儿看到「嵌入模型」,一会儿看到「向量模型」,还有「向量化模型」「embedding model」混着用,很容易怀疑自己少学了一个概念。这篇不绕弯子:先给结论,再拆开这个结论在哪些场合成立、哪些场合不成立,最后给一份判断清单,帮你在选型和看文档时不至于把两件事当成四件事。
写 RAG 的时候,一会儿看到「嵌入模型」,一会儿看到「向量模型」,还有「向量化模型」「embedding model」混着用,很容易怀疑自己是不是漏学了一个概念。这篇不绕弯:先给结论,再拆开这个结论在哪些场合成立、哪些场合不成立,最后给一份判断清单,帮你在选型和看文档时不至于把两件事当成四件事。
结论先放在前面:在绝大多数中文文档和教程里,嵌入模型和向量模型指的是同一个东西,只是两拨人站在不同角度给它起了名字。真正需要你警惕的,是把「向量数据库」「向量检索」这类下游概念也当成模型,那才是容易踩的坑。
先说结论:多半是同一个东西的两套叫法
嵌入模型(embedding model)说的是:把一段文本、一张图转成固定长度数值数组的模型,输出的那串数字叫向量,也叫嵌入向量。向量模型是中文语境里对同一类模型的简称,强调它吐出来的是个向量。一个说动作,一个说结果,指向的是同一批东西。
- 嵌入模型
- 从原理视角叫的:它把语义「嵌入」到一个低维空间里,方便计算距离。
- 向量模型
- 从检索和存储视角叫的:它产出向量,下游拿去做相似度比较。
- 向量数据库
- 不是模型,是存向量、查向量的软件,别和模型混为一谈。
- 向量检索
- 不是模型,是用向量算相似度的那套流程。
叫法差异只反映说话人的位置:讲模型原理的人习惯说嵌入,讲检索链路的人习惯说向量。你跟同事沟通时用哪个词都行,只要别把它和后面那几个「向量 XX」的概念混着用。
什么情况下两者不是一回事
有一个场合确实要区分:当对方说的「向量模型」指的是整条检索链路,包括切片、编码、建索引、召回,那它比嵌入模型大一圈。嵌入模型只是这条链路里负责编码的那一环,别的环节它不管。
| 对方在说什么 | 实际指的 | 你怎么确认 |
|---|---|---|
| 文档里的「向量模型」配置项 | 多半就是嵌入模型 | 看它的输入是文本、输出是数组 |
| 「我们的向量模型方案」 | 整条检索链路 | 问清楚含不含切片和索引 |
| 多模态场景里的「向量模型」 | 可能是文本侧或图像侧其中之一 | 问是哪一侧的编码器 |
| 接向量吐分数的接口 | 重排或检索环节,不是嵌入模型 | 看输入是不是已经有向量 |
- 它接一段文本、吐一个数组,那就是嵌入模型,叫法随便。
- 它接已有向量、吐一个分数,那是重排或检索环节。
- 它在讲多模态,最好点名是文本侧还是图像侧,别笼统说向量模型。
- 它在讲整条链路,那「向量模型方案」指的是工程方案,不是单个模型。
选型时真正要确认的几件事
名字理清了,选型才是实际要花时间的地方。下面这几件事,比纠结叫法重要得多。
- 先看维度:输出向量多长决定存储和计算开销,维度高不等于好,要结合语料规模和召回要求一起看。
- 再看一致性:入库和查询必须用同一个模型,中途换模型就得全量重跑,不然召回结果会莫名其妙变差。
- 还要看语言和领域:中文语料、代码、法律或医学术语,实际差异比通用介绍里说的大得多。
- 最后看接口:返回结构里向量字段在哪一层,很多坑不是模型问题,是字段取错或者取到空值。
这些参数和当前可选型号不要凭记忆做决定,各家更新很快。到 站内嵌入模型页面(/models/embedding) 核对当时的维度和语言支持,再到 向量数据库目录(/tools/vector-db) 看下游能接哪些存储,两边对上再动手。
落地到 RAG 时的最小动作清单
下面这套顺序适合入门阶段,不需要先把理论补完,边做边验证就行。每一步都留了验证动作,避免做完了才发现方向错了。
- 定候选模型按语言和领域先圈两三个候选,别一上来就横向比较十几个。圈子越小,验证越快。
- 定切片方式切片长度和重叠要先于模型定下来,因为切片一变,同一个模型的表现也会跟着变。
- 拿真实问题试召回从你自己的文档里挑几十条真实问题,跑一轮召回,看命中的是不是该命中的。这一步比看介绍快得多。
- 定接口字段确认调用返回里向量字段在哪一层,先跑通一条再批量,别在批量阶段才发现字段取错。
- 留一组验收对照准备一批「问题—期望命中文档」的对照,换模型或换切片后重跑一次,能提前发现退化。
如果你在选型的同时还要评估中转服务的稳定性,可以把验证顺序和 站内测速工具(/tools/speed-test) 一起用,先确认链路通不通,再谈效果。
纠结叫法的时间,够你跑完一轮真实数据的召回了。
常见问题
嵌入模型和向量模型是两个不同的东西吗?
多数场合是同一个东西的两种叫法,输出都是固定长度的数值向量。唯一要留意的是语境:对方可能用「向量模型」指整条检索链路,而嵌入模型只指其中负责编码的那一环,听到这个词时先确认他在说模型还是在说流程。
我换了嵌入模型,为什么检索结果变差了?
最常见的原因是入库和查询用的不是同一个模型,两个模型的向量空间不可比,算出来的相似度自然没意义。换模型要连带把已有数据重新编码入库,同时重跑一遍你自己的对照问题,确认召回没退化再上线。
做 RAG 必须用专门的嵌入模型吗,通用大模型行不行?
通用对话模型通常不对外提供稳定的向量输出接口,即使能拿内部表示也不保证可比和可复现,不适合当检索底座。除非你的场景极小、对召回要求低,否则还是选专门的嵌入模型,具体哪些可选、各自支持哪些语言,去站内嵌入模型页面看当时的清单。