嵌入模型是什么
嵌入模型把文本映射成高维向量,语义相近的文本在向量空间里距离更近。它是检索、聚类、去重与推荐的地基:检索质量的上限由它决定,后续的重排与生成只是在这个基础上做优化。选型看四点:中文与业务语料上的实际检索效果、向量维度带来的存储与计算成本、单次可处理的最大输入长度、以及能否私有化部署。
基本信息
| 输入 | 单条文本或文本数组,支持批量 |
|---|---|
| 输出 | 定长向量,维度由模型决定 |
| 代表方案 | 云服务通用嵌入模型、开源中文增强模型、多语言模型 |
| 关键参数 | 向量维度、最大输入长度、批次上限 |
| 检索度量 | 常用余弦相似度或内积,需与入库时保持一致 |
| 典型用途 | 语义检索、聚类、去重、分类特征、推荐召回 |
选型看什么
| 维度 | 关注点 | 影响 |
|---|---|---|
| 检索效果 | 在自有语料上的召回表现 | 直接决定回答质量的上限 |
| 语言能力 | 中文与中英混排的表现 | 中文业务优先看中文实测结果 |
| 向量维度 | 维度越高存储与检索开销越大 | 影响向量库容量与查询延迟 |
| 输入长度 | 单条文本的最大长度 | 太短会导致长片段被截断 |
| 部署形态 | 云接口还是本地运行 | 决定数据流向与固定成本 |
典型使用场景
- 语义检索:知识库问答的召回环节
- 文本去重:识别重复工单、相似商品描述与近义评论
- 聚类分析:把用户反馈自动归类,减少人工整理
- 推荐召回:按内容相似度做候选集筛选
- 分类辅助:把向量作为特征接入轻量分类模型
向量化与相似度计算
向量化与相似度计算
r = client.embeddings.create(model="text-embedding-3-small",
input=["订单已发货", "包裹什么时候到"])
v1, v2 = (d.embedding for d in r.data)
def cos(a, b):
dot = sum(x * y for x, y in zip(a, b))
return dot / ((sum(x*x for x in a) ** 0.5) * (sum(y*y for y in b) ** 0.5))
print(cos(v1, v2)) # 语义相近的两句应得到较高相似度
# 入库与查询必须使用同一个模型与同一套归一化方式,否则相似度失去意义常见方案形态
| 形态 | 特点 | 适用 |
|---|---|---|
| 云服务通用模型 | 开箱即用,按量付费 | 快速上线与中小规模知识库 |
| 开源中文增强模型 | 中文效果可调优,可自托管 | 数据不出内网与中文场景 |
| 多语言模型 | 跨语种检索友好 | 外语资料或出海业务 |
| 轻量小模型 | 体积小、推理快 | 边缘部署或高并发低延迟场景 |
换嵌入模型等于重建索引:新旧向量不在同一空间,无法混用,替换时必须把全量文档重新向量化一次。
向量相似不等于答案正确:检索只能保证语义接近,最终结论仍需生成环节与业务校验共同把关。