极简工具箱

免费在线工具 · 本地计算 · 无需上传

Embedding 与余弦相似度:文本怎么变成向量

「怎么退款」和「售后流程」字面几乎不重叠,向量距离却很近——这正是 embedding 的价值:比的是语义,不是字面。

广告位(百度联盟)

一、向量是什么

embedding 模型把一段文本映射成一个固定长度的数字数组,例如 768 个浮点数。这个数组可以理解为「语义坐标」:意思相近的文本,坐标也相近。

关键性质:

二、相似度怎么算

余弦相似度:看两个向量的夹角,取值 -1 到 1,越接近 1 越相似。

cos(A, B) = (A · B) / (|A| × |B|)

欧氏距离:看两点之间的直线距离,越小越相似。

区别:

所以多数向量库默认用余弦或内积(归一化后等价)。

三、阈值怎么定

「相似度 0.8 算重复吗」没有统一答案,取决于模型与数据。正确做法是用标注样本校准:

  1. 收集 50–100 对文本,人工标注「相似 / 不相似」。
  2. 计算每对的相似度。
  3. 看两类的分布,选一个能分开的阈值。

经验值(仅参考):同一模型下,0.9 以上通常高度相似,0.75–0.9 相关,0.6 以下多半无关。但不同模型分布差异很大,必须自己校准。

四、四个典型用途

语义搜索:把查询和文档都向量化,取 top-k。比关键词搜索更能处理同义表达。

聚类:对向量做 KMeans 或层次聚类,把相似文本归组(如工单分类、评论主题发现)。

去重:相似度超过阈值视为重复。注意「近似重复」(改了几个字)用哈希查不出来,向量可以。

推荐:用户历史内容的向量平均,找相近内容。

五、模型选择

考虑四点:

同一批数据用同一个模型;升级模型时要做离线评估,别直接切换。

六、维度与性能

七、常见坑

八、实践建议

  1. 先做小规模验证(几千条),确认相似度分布合理。
  2. 建一个「查询 → 期望结果」的评估集,量化召回率。
  3. 向量检索 + 关键词检索混合,弥补各自的短板。
  4. 记录每次检索的 top-k 与用户点击,持续调优。

小结

embedding 是语义坐标,同模型内可比;余弦看方向、欧氏看距离,归一化后等价;阈值必须用标注样本校准;长文本先切分再向量化;换模型要重建索引。

本文相关工具(本地计算,无需上传)

更多使用教程