← 返回首页

无后端的相似度:在 MinHash 精度与隐私之间的权衡

发布时间: 2025-11-07 18:48(北京时间)

摘要: 作者探讨了在无后端服务中实现Jaccard相似度评估的隐私保护方法,使用MinHash技术对数组进行加签,以在不泄露原始数据的情况下计算重叠元素。分析了精度与隐私之间的权衡,指出提高精度可能增加探针攻击风险。整体语调冷静且具实践性,强调个人兴趣驱动的探索与潜在应用价值。

标签: 隐私保护, 相似度计算, MinHash, Jaccard, 无后端, 权衡分析, 实践探索, 冷静

字数: 663

原文链接: /7402396589/QcLkQcn5e

今天一直在琢磨一个事情。

现有两个数组,如果需要比对两个数组重复元素的个数,这个问题应该不难,Python一行代码就可以实现:
sum((collections.Counter(a) & collections.Counter(b)).values())
这也是Jaccard相似性评估的分子部分。

但我想的需求是,要对两个数组分别加签,任何人都可以用两份加签后的文件在某个无后端服务的web工具上进行比对,输出的结果是Jaccard相似性的评估。
但任何人都无法还原出任意一个数组元素。

我打算基于Minhash尝试做一下,虽然Minhash的过程是lossy的,但也难防止生成探针签名去爆破。这部分等前面实现后再想想怎么解决。

实际上这条微博想做的事情是:提供一个无后端的工具,两人各自上传导出的黑名单后加签,share给对方,就可以在不泄露自己黑名单的前提下做Jaccard评估。
用Python验证理论成立后一顿 vibe coding 把原型写出来了。图中的 test case 中的两个黑名单实际重叠人数是50人,这个误差我觉得也差不多够用了。而如果提高精度的话,意味着b-bit截断数变大甚至是不截断,这样探针式的攻击就更加容易“碰撞”出一些黑名单。所以这里本身参数的选择就有一些隐私与精度之间的权衡。

这个“课题”本身意义其实不太大,纯粹是我喜欢做“无用”东西的风格拍脑袋想到的。但研究过程中加深了Jaccard的理解,这些经验也许以后就会“有用”。而且现在LLM领域也经常会用到Jaccard评估。