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

局部敏感哈希 LSH:让相似的东西撞进同一个桶

一句话定义:局部敏感哈希(Locality-Sensitive Hashing, LSH)是一类哈希函数的设计思路——它不追求把数据打散,而是让原本相近的数据以高概率落进同一个桶,让距离很远的数据大概率分开,从而把“找相似”变成“查表”。

原理:故意制造“撞车”

普通哈希(散列表用的那类)追求均匀分散:两个键哪怕只差一个字符,也尽量散到不同桶,冲突是坏事。LSH 反着来:冲突反而是信号,关键是“谁和谁能撞”。

打个比方:要把一屋子人按身高分组。普通哈希相当于按身份证尾号分房间,随机但毫无规律;LSH 相当于随机问几道判断题——“你身高超过 175 吗”“超过 170 吗”。身高接近的人,每道题大概率答得一样,于是被分进同一个房间;身高差很多的人很少全部一致。多问几道、多轮随机提问,同一个房间里的人就是“候选相似集”。

落到向量检索上,常见做法是随机投影(random projection):随机取一个方向,看向量落在它哪一侧,记一个 0 或 1;重复 k 次就得到一个 k 位签名。两个向量夹角越小(AI 词典:余弦相似度">余弦相似度越高),签名完全相同的概率越大。建多张随机哈希表,查询时把查询向量也算出签名,只在对应桶里做精确距离计算——这就是“先召回候选、再精排”的两段式检索。

和相邻概念的区别

LSH 属于近似最近邻(Approximate Nearest Neighbor, ANN)检索的经典路线:它用概率保证召回,不保证一定找到真正的最近邻,是有意放弃一部分召回换速度。

对比项LSH精确最近邻图索引(如 HNSW 类)
找相似的机制哈希碰撞概率逐个算距离邻居逐跳逼近
结果大概率相似,可能漏一定准确召回高,可调
成本多张哈希表,建表快,内存可控高维下代价大图结构占内存,构建慢

对从业者与普通人的意义

向量规模到百万、上亿时,逐条算余弦距离不现实。LSH 用极便宜的哈希把候选集缩到千百分之一,再精算,适合以图搜图、相似商品推荐、海量文本去重(如 MinHash 这类变体)等场景。对用户体验来说,代价是偶尔漏掉一两个真正相似的结果——用少量召回换取数量级的速度提升,这就是 LSH 长期存在的原因。桶数、签名长度等参数要按数据分布调,效果以官方文档和自己的实测为准。

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