传统搜索靠关键词匹配:搜“笔记本电脑发热”,找不到只写了“手提电脑温度过高”的文章。Embedding(文本向量)把文字映射为高维空间中的一个点,意思相近的文本在空间中距离也近,于是计算机可以按“语义”而不是“字面”来检索。它是语义搜索、RAG 知识库、推荐系统和文本聚类的共同基础。

一个直观的比喻

想象把所有词语放在一张地图上:“猫”和“狗”离得很近,“猫”和“汽车”离得很远;“国王”到“王后”的方向,与“男人”到“女人”的方向大致平行。真实的 Embedding 不是二维地图,而是几百到几千维的空间,但道理相同:每个维度捕捉某种隐含的语义特征,虽然单个维度通常无法被人直接解读。

现代 Embedding 模型不只给单个词编码,而是对整句、整段甚至整篇文本生成一个向量,用来代表这段文本的整体含义。

如何衡量“相似”

最常用的是余弦相似度:计算两个向量夹角的余弦值,越接近 1 表示方向越一致、语义越相近。也有系统使用点积或欧氏距离。很多 Embedding 模型输出的向量已经做过归一化,此时余弦相似度与点积等价。

在语义搜索中,流程通常是:

  1. 把文档切分成片段,逐一计算向量并存入向量数据库;
  2. 用户提问时,把问题也转换成向量;
  3. 在数据库中找出与问题向量最相似的若干片段;
  4. 把这些片段交给大模型生成答案。

文档切分的细节会显著影响检索质量,可参考 RAG 文档切分策略。

Embedding 模型怎么选

语言支持

中文场景务必选择在中文语料上训练充分的模型,或明确支持多语言的模型。只用英文训练的模型处理中文,效果往往明显下降。

维度与成本

维度越高,表达能力通常越强,但存储和检索成本也更高。一些模型支持截断维度,可以在效果和成本之间灵活取舍。

最大输入长度

超过长度上限的文本会被截断,导致后半部分内容丢失。切分片段时要确保不超出模型限制。

领域适配

通用模型在法律、医疗、代码等专业领域可能表现一般。可以用自己的数据构建小型测试集,对比几个候选模型的检索命中率再决定。

常见问题与应对

  • 语义相近但事实相反:“支持退款”和“不支持退款”的向量可能非常接近。纯向量检索难以区分否定和细节差异,需要配合重排序模型,见重排序模型指南;
  • 专有名词和编号:产品型号、订单号、法条编号等,向量检索往往不如关键词检索精准,这正是混合检索的价值所在;
  • 问题与文档表述差异大:用户的口语化提问和文档的书面表述可能差距很大,可以尝试让大模型先改写查询,或为文档生成可能的问题;
  • 更换模型需要重建索引:不同模型的向量空间不兼容,换模型就要重新计算全部文档的向量。

小结

Embedding 让计算机能够理解“意思相近”,是现代检索系统的核心组件。但它并不完美:对否定、精确编号和专业术语的处理有限。实践中通常把向量检索与关键词检索、重排序结合使用,并用真实问题构建测试集来验证效果。