「怎么重置密码」和「我要改密码」,字面上没有一个共同词,但人和 AI 都知道它们说的是同一件事。判断两句话意思是否一样,靠的就是语义相似度。它是语义检索、问答匹配、文本去重这些 AI 能力的地基。
它怎么算:把句子变成坐标
先由嵌入模型把每句话转成一串数字(向量),再计算两个向量之间的距离或夹角。距离越近、夹角越小,意思越接近。最常用的度量是余弦相似度,取值在 -1 到 1 之间,越接近 1 表示方向越一致。这个「文字转坐标」的能力,来自 大语言模型 的嵌入层以及专门的嵌入模型,是后面一切相似度计算的前提。
三个比关键词匹配强的地方
关键词匹配只能对「字面」负责,语义相似度对「意思」负责。其一,不受用词影响:同义、近义、口语化表达都能对上;其二,能跨语言:中英文里表达同一含义的句子可以落在相近位置;其三,能捕捉一定语气:疑问和陈述在向量上也有差异。这三点决定了它适合用在客服工单归类、知识库去重、相似问题推荐这类「人怎么问都可能」的场景。
不过,「强」是相对关键词匹配而言,不是绝对的准确。相似度给出的是一个连续分数,从「完全不相关」到「几乎同义」是一个渐变的区间,中间有大片灰色地带。真正决定它能不能用的,是下游拿这个分数去做什么:直接卡一个阈值做自动决策,出错概率高;把它当候选排序的信号,再交给规则或人工兜底,风险就小得多。理解这一点,就能解释为什么有的「智能匹配」会犯低级错误。
余弦相似度怎么读
这个值衡量的是方向,不是距离的绝对值。两条向量方向一致、长度不同,余弦值照样接近 1,所以在很多短句匹配场景里它比欧氏距离更稳。但要注意:余弦值高,只说明「方向像」,不代表「语义完全等价」,最终还要靠阈值来判断「算不算同一个意思」。阈值没有通用最优解,只能拿自己的业务数据试出来——这也是 RAG 评估 反复强调的:检索好不好,必须回到真实数据上量。
它在哪里失效
语义相似度不万能,几个经典陷阱要提前知道。下面这张表列出最容易翻车的三种情况。
| 失效类型 | 典型例子 | 为什么容易误判 |
|---|---|---|
| 否定句 | 「可以重置」与「不可以重置」 | 字面高度重合,向量也可能很接近,语义却相反 |
| 行业术语 | 通用模型面对专业黑话 | 嵌入模型没学过该领域,区分能力有限 |
| 长文本 | 整篇文档压成一个向量 | 细节被平均掉,局部关键信息丢失 |
否定句是其中最隐蔽的一个:「可以」和「不可以」只差一个字,向量可能几乎重合,系统却会给出完全相反的结论。因此涉及「是否允许、能否操作」的场景,不能只靠相似度打分,还要叠加规则或关键词校验。
阈值不是越严越好
阈值调高,会把真正相似的也漏掉;调低,会把不相关的也拉进来。这个值没有放之四海皆准的标准答案,只能在自己的数据集上用标注样本反复试。工程上的常见做法是先取一小组样本人工标「像/不像」,再画阈值与准确率的关系曲线,挑一个平衡点。和 语音评测 里跟读打分要按发音相似度定分数线一样,都是「阈值跟着业务走」。
速查:相似度该不该信
- 余弦值高不等于语义等价,最终看阈值
- 否定、许可类表达,必须叠加关键词或规则校验
- 行业语料先评估嵌入模型是否覆盖,再谈准确率
- 长文档先切块再算,别整篇压成一个向量
它不做什么判断
语义相似度只衡量「意思像不像」,不判断「这句话说得对不对」,也不做推理。它能告诉你两条工单是不是同一类问题,却无法告诉你该怎么解决这个问题;它能把相似内容捞出来,却分不清其中哪条最权威。更现实的边界是:它对训练数据之外的表达方式会失准,模型没见过的口语、缩写、行业简称,都可能导致打分失真。所以成熟的系统里,相似度只是头一道筛子,后面往往还跟着规则、关键词和人工复核,而不是让它独自下结论。


