Embedding 向量概念

Alexer 发布于 阅读:19 AI栈

Embedding 就是把一段文本变成一串固定长度的数字,也就是向量。意思越接近的文本,它们的向量在空间里离得越近。检索、去重、聚类、给大模型喂资料,都靠这个。

用法只有三步:把文本交给 embedding 接口或本地向量模型,拿回一串浮点数;把向量连同原文一起存进向量库或普通数据库;查询时把问题也转成向量,算它和每条向量的相似度,取分数最高的几条原文。

import numpy as np

# 假设这三条向量是 embedding 接口返回的,长度固定、都是浮点数
v1 = np.array([0.12, 0.88, 0.31])
v2 = np.array([0.10, 0.90, 0.29])
v3 = np.array([-0.75, 0.05, 0.66])

def cos(a, b):
    return a.dot(b) / (np.linalg.norm(a) * np.linalg.norm(b))

print(cos(v1, v2))  # 接近 1,两句话意思很像
print(cos(v1, v3))  # 接近 0,基本不相关

最容易踩的两个坑:一是换模型或换接口后,新向量和库里存的老向量不能直接比对,因为两者不在同一个向量空间里,分数会完全失真,所以必须整库重建。二是长文本会被截断,后半段内容等于没进向量,因此长文档先按段落切块再转向量,块与块之间留一点重叠,召回时才不容易漏。

AI 开发 RAG 模型部署