语义坐标与相似度
Embedding 把文字变成语义坐标系里的点,检索就是找离查询最近的几个点。在平面上点一个查询句或拖动角度,看余弦排序怎么变:同义改写打不乱它,编号陷阱骗得过它——最后把向量路与关键词路摆上同一张桌,看两路各翻一次车、各管一块地盘。
预设 2D 单位向量,cos θ = (a·b) ÷ (|a|·|b|) 算的是真实数学:文章三对示例读数(0.8 / 0.6 / 0.1)与 E-4021 陷阱全部复现,关键词路按词面重合计分,零 API、零延迟。
意思相近的句子,在坐标系里就是相邻的点——比距离就是在比意思。下面三块实验共用一套 预设 2D 单位向量:检索排序、同义改写、向量路与关键词路对照, 每个读数都是真实余弦,没有一处拍脑袋。
语义平面 · 检索 = 找最近的几个点
查询:申请退款与查询的余弦降序(top-3 即检索命中):
- 1申请退款1.00
- 2怎么退款0.99
- 3如何退钱0.97
- 4钱退回来了吗文章 ≈ 0.80.80
- 5退货政策是什么文章 ≈ 0.60.60
- 6今日天气晴文章 ≈ 0.10.10
- 7明天会下雨吗0.00
- 8发票怎么开-0.50
- 9错误码 E-4022 的含义-0.99
- 10错误码 E-4021 的含义-0.99
查询角度 θ0°
点平面上的点或拖滑杆换查询:查询「申请退款」时读数与文章一致——「钱退回来了吗」0.80、 「退货政策」0.60、「今日天气晴」0.10;转到错误码方向读数变负(方向相反)。top-3 高亮就是检索会取回的文档。
改写实验 · 换说法,排名动不动
查询「怎么退款」改前
- 1钱退回来了吗?退款进度查询0.87
- 2退货政策是什么0.71
- 3今日天气晴0.24
- 4明天会下雨吗0.14
- 5发票怎么开-0.37
- 6错误码 E-4021 的含义-0.97
查询「如何退钱」换说法
- 1钱退回来了吗?退款进度查询0.93
- 2退货政策是什么0.79
- 3今日天气晴0.36
- 4明天会下雨吗0.26
- 5发票怎么开-0.26
- 6错误码 E-4021 的含义-0.93
「怎么退款」换成「如何退钱」,top-2 名单一模一样:意思近的点本来就挨着——语义检索靠坐标不靠字面,同义改写打不乱它。
双路对照 · 向量路与关键词路各排一次
向量检索路余弦 · 4 位小数
- 1E-4022:请求触发限流保护0.9998
- 2E-4021:上下文超过窗口上限正确答案0.9981
- 3发票怎么开0.6494
- 4今日天气晴0.0785
- 5怎么申请退款-0.9483
第一名:E-4022:请求触发限流保护(排错了)
关键词检索路词面重合度
- 1E-4021:上下文超过窗口上限正确答案0.14
- 2E-4022:请求触发限流保护0.00
- 3怎么申请退款0.00
- 4今日天气晴0.00
- 5发票怎么开0.00
第一名:E-4021:上下文超过窗口上限
向量路被长得像的编号骗了:两个错误码的向量近得危险,它把 E-4022 排在了第一——读数几乎并列,肉眼根本分不出来。关键词路靠 E-4021 的字面精确命中把它分对:型号、代码标识、错误码是关键词的地盘。
E-4021 ≠ E-4022字面只差一个数字,向量却近得危险——生产系统几乎都是双路并行:向量一路、关键词一路,结果合并再排序。
cos θ = (a·b) ÷ (|a|·|b|)——夹角越小越接近 1,垂直(无关)为 0,方向相反为负