跳到主内容
快讯直播
AI智模界
AI 词典

句向量:把一整句话压成一个点

一句话定义:句向量(Sentence AI 词典:Embedding">Embedding)是把一整句话(或一段话)变成一串固定长度的数字,让“意思”可以像坐标一样被计算距离。

一串数字是怎么来的

无论输入是 5 个字还是 500 个字,输出永远是同样长度的一串数字:几百到一千多维不等。常见做法分两步:编码器(通常是 Transformer)先读完整句,为每个位置生成一个带上下文的向量;然后做一次池化(pooling):把所有位置的向量逐维取平均,或者取某个专门位置的输出,将一串向量压成一个向量。

关键在于这个向量要经过专门训练,目标是让意思相近的句子,向量在空间里也靠近。常见训练方式是对比学习:拿一对同义句做正例、一堆无关句做负例,让模型把正例拉近、负例推开。这样训出来的空间才有“语义距离”的意义。

打个比方:给每道菜填一张固定格式的评分卡,甜、咸、辣、鲜……一共几百栏。无论这道菜是一个包子还是一桌宴席,最后都填出同样长的一张卡;两张卡逐栏对比,就知道两道菜像不像。区别在于,这张卡是模型自己学出来的一套隐性维度,你说不清第 37 栏代表什么,但它管用。

它和词向量不是同一个东西

词向量(Word Embedding)是“一个词一个点”,句向量是“一句话一个点”。表层的差别是数量,真正的差别在下面三点:

词向量 Word Embedding句向量 Sentence Embedding
粒度词整句 / 整段
一句输入产出每个词各一个向量只有一个向量
语序信息静态词向量不含含(读完整句再压缩)
训练目标预测上下文词让语义相近的句子靠近
常见用途词相似度、作为底层特征语义检索、去重、聚类、分类

1. 上下文。静态词向量里,“苹果手机”和“吃苹果”中的“苹果”是同一个点;句向量读完整句后才压缩,天然带上下文。

2. 不能靠平均蒙混。把词向量逐维平均确实能凑出一个向量,但那是词袋,语序全丢:“狗咬人”和“人咬狗”平均出来一模一样。而且“的、是、了”这类高频虚词会主导平均值,把所有人的句子都往同一个方向拉。

3. 训练目标不同。词向量只要会“猜邻居词”;句向量要会判断“这两句是不是一个意思”,是专门的句子级训练。直接拿编码器最前面那个特殊位置的输出去当句向量,效果通常不好,因为它从没为这个任务被训练过。

对实际工作的意义

搜索因此从“关键词匹配”变成“意思匹配”:搜“退钱”能找到“申请退款”。RAG 检索、工单去重、评论聚类、意图分类,底层都是它。

几个上手要点:不同模型产出的向量不能混着比,换模型就要重建索引;算余弦相似度前一般先归一化;相似度阈值没有通用值,必须在自己数据上标定,有的模型随便两句就能到 0.8;选型时看它是否专门做过句子级训练,具体以官方页面为准;长文本还要留意输入长度上限,超长会被截断,而截断往往悄悄发生在你最在意的那半句话上。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。