Embedding
Embedding 是把文本转换成一组数值向量的过程与结果,含义相近的文本在向量空间里距离更近。它是语义检索与 RAG 的基础,不用于生成回答。
Embedding 指用模型把文本映射为固定长度数值向量的技术,也指得到的那组向量本身。向量之间的距离反映语义相似度,因此可以用来做语义检索、聚类与去重。它由专门的向量接口提供,与生成类接口是两条不同的路径,计费方式也通常更便宜。
它解决什么问题
关键词检索只能匹配字面,语义检索能匹配含义——「怎么申请密钥」和「API Key 在哪里获取」字面几乎不重合,但向量距离很近。
典型流程是:把文档切片后逐片转成向量存起来;用户提问时把问题也转成向量,找出距离最近的若干片,再把这些片段交给生成模型回答。这就是常说的检索增强生成(RAG)。
和生成模型的关系
| 向量接口 | 生成接口 | |
|---|---|---|
| 输入 | 文本 | 消息与参数 |
| 输出 | 一组数值 | 生成的内容 |
| 用途 | 找到相关内容 | 组织成回答 |
| 成本 | 通常低得多 | 较高 |
两者配合使用:向量负责「找对材料」,生成负责「把材料变成答案」。
常见误解
- Embedding 不会回答问题。 它只输出向量,没有生成能力。
- 换模型就得全部重算。 不同模型产生的向量不在同一空间,混用会得到毫无意义的相似度。换模型意味着整个向量库重建。
- 向量检索不保证正确。 它找的是「语义相近」,不是「事实正确」。检索到错误片段,生成的回答一样会错。
为什么它和上下文窗口有关
上下文窗口有限,长文档塞不进去。先用向量检索缩小到真正相关的几段,再放进窗口,是控制成本与提升准确率的常规做法。