向量检索里,点积和余弦相似度经常一起出现。余弦相似度会按向量长度归一化;当两个向量都已具有单位长度时,它才与点积一致。

用二维向量看清尺度影响
自拟向量a为3、4,b为6、8。二者方向相同,余弦相似度为1,但原始点积是50。把它们分别除以自身长度后,点积才成为1。下面只是数学练习,不代表真实文本相似度结果。
归一化前检查零向量
长度为零时不能按普通公式直接相除,应按照所用库和业务的明确规则处理。也要核对索引与查询使用的模型和预处理,不能因为两种距离在某个例子相同就随意更换系统配置。
记录比较使用的度量
本站建议评估时同时记录模型、是否归一化和距离类型。归一化改变了长度信息的作用,是否适合任务需要验证。余弦分数仍不是答案正确的概率,最终证据应回到原文。
可以运行的练习
from math import sqrt, isclose
a, b = [3, 4], [6, 8]
def dot(x, y):
return sum(i * j for i, j in zip(x, y, strict=True))
def unit(x):
length = sqrt(dot(x, x))
if length == 0:
raise ValueError("zero vector")
return [i / length for i in x]
assert dot(a, b) == 50
assert isclose(dot(unit(a), unit(b)), 1.0)
try:
unit([0, 0])
except ValueError:
print("零向量已拒绝")
else:
raise AssertionError("边界检查失败")
示例已在本地隔离环境运行检查。使用固定输入,不访问外部接口,也不读取真实业务文件。
资料与继续学习
scikit-learn:余弦相似度。资料查阅日期:2026年10月13日。步骤与练习由本站整理。
资料查阅与编辑日期:2026年10月13日。作者:玖柒。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END







