Compare · 横评对比
SemHash vs datasketch:语义去重与 MinHash 怎么选?
语义改写候选可试 SemHash,共享片段的近重复可评估 datasketch;候选之后仍需复核。
| 维度 | semhash | datasketch |
|---|---|---|
| 表示 | 模型向量 | 应用定义的元素集合 |
| 相似含义 | 所选编码器的语义接近 | Jaccard 估计 |
| 候选 | 相似性搜索,后端可选 | MinHash / LSH 等构件 |
| 验收 | 模型、语言和阈值 | 切分、签名参数与候选误差 |
| 事实判断 | 需业务标签与复核 | 同样需业务标签与复核 |
比较的是语义表示与集合相似
SemHash 通过编码器向量寻找相似内容;datasketch 的 MinHash 估计输入集合的 Jaccard 相似度,配合 LSH 可以生成近似候选。前者适合评估语义改写,后者适合共享片段的近重复路线,但两者都需要定义业务上的重复。
本篇核对日期为 2026 年 10 月 26 日。SemHash 0.5.0 使用七条合成记录和 basic 后端;datasketch 2.0.0 使用一对英文文本、字符三元组、128 次置换与固定种子做估计对照。没有执行共同大规模索引、吞吐量或准确率测试。
差异一览
| 维度 | SemHash | datasketch MinHash / LSH |
|---|---|---|
| 输入表示 | 编码字段形成向量 | 应用定义的元素集合 |
| 相似含义 | 所选模型的语义接近 | 集合交并比估计 |
| 准备资源 | 编码器、权重和搜索后端 | 切分、签名参数与索引 |
| 候选误差 | 模型与搜索配置均需验收 | MinHash 估计和 LSH 召回均有误差 |
| 结果交付 | 可检查保留与过滤关系 | 应用组织候选、核对与保留策略 |
| 业务合并 | 需核对事实和来源 | 同样需核对事实和来源 |
SemHash 先检查模型与字段
指定哪些列参与编码,决定什么被视为相似。只比较标题可能漏掉正文冲突,只比较问题可能把不同答案归并。唯一来源 ID 应保留用于追踪,不能误以为把所有字段都加入编码就更准确。
本次使用英文 potion-base-8M 的本地快照,0.9 阈值下把三十天退款归入七天退款,分数约 0.924。这是期限事实被忽略的实际误判。basic 后端不引入近似搜索召回的不确定性,但不能修复语义表示本身的错误。
调高阈值后本例保留差异,并不意味着找到普适安全参数。中文任务应使用匹配模型和自己的标注样本;本文没有测试多语言权重、图片、训练测试大规模清理或全部后端。
datasketch 先定义集合
MinHash 比较的是你交给它的集合。把文本切成词、字符三元组或其他片段,会得到不同 Jaccard。集合通常不保留重复次数与完整词序,因此需要考虑这些信息是否对你的任务重要。中文不能不说明切分规则就照搬英文空格分词。
本次单对照固定字符三元组、128 次置换与 seed=1,计算 MinHash 估计,同时计算实际集合交并比用于核对。两种数值有差异是估计行为,不能拿一个样本宣布误差上界或最优参数。
MinHashLSH 进一步用于候选检索,返回结果会有误报和漏报。配置阈值不代表每个返回项都严格满足真实相似度阈值。对返回候选可以再算精确 Jaccard,但召回阶段漏掉的项仍需通过更广泛实验发现。
两种高分都不能证明事实相同
七天与三十天条款共享大部分词和片段,语义模型与集合路线都可能给出高相似。否定、金额、型号和版本变化也类似。业务需要保留的区别应提前标注,必要时加入字段规则或人工复核,而不是希望一个分数表达全部事实。
语义 0.9 与 Jaccard 0.9 不在相同空间,不应直接相减或使用同一个阈值解释。也不能将“分数更高”理解为方法更准确;准确与否取决于业务标签和错误成本。
对于改写很多但意思相近的文本,集合重叠可能较低;语义路线可以提供另一类候选,但模型语言和领域也可能产生错误。两者组合应作为可测方案,不能宣传自动消除全部重复。
生产规模要分层测量
先用小样本确认表示与输出,再分别测编码、签名、索引构建、查询和复核。批量速度与在线查询延迟是不同指标,索引内存与原始文本存储也要分别记录。本文没有给出厂商宣传速度或共同资源排名。
保持模型版本、切分规则、随机种子、签名长度和索引参数可追溯。改变其中任一项时检查兼容性,不能把不同参数的签名或不同表示空间的向量静默混用。增量更新、来源删除和重建也应有明确规则。
对训练与测试,跨集去重只能发现某些重叠,不能证明无数据泄漏。仍需按来源、实体、时间及业务事件分组。对知识库,两个时期的条款不是可随意删除的副本,应明确哪个版本有效以及怎样保留历史证据。
成本与复核流程
SemHash 与 datasketch 库均采用 MIT,但模型权重许可、计算、存储和维护分开核对。MinHash 不要求语义模型并不等于零资源;语义方案首次下载与模型内存也应计量。本次没有付费 API 调用或商业套餐报价。
先保存原始记录和匹配报告,标明输入 ID、相似度、所匹配的代表以及运行参数。复核决定保留、合并或不处理,写回由独立步骤执行。不要为了节省存储在观察阶段删除原文,也不要用相似度决定跨用户访问权限。
如何开始
共享片段的近重复可先建立 datasketch 基线;需要补充语义改写候选时评估 SemHash。加入数字、否定、同义改写、跨语言与不相关对照,观察边界和错误,再按业务成本确定处理方式。
继续阅读:SemHash 介绍、文本去重推荐、RapidFuzz 对比、Python 教程。官方资料:SemHash、MinHash、MinHash LSH。
结论
语义改写候选可试 SemHash,共享片段的近重复可评估 datasketch;候选之后仍需复核。
常见问题
- 高相似度可以直接删除吗?
- 不可以。期限、金额、否定和版本变化可能是必须保留的事实。
- 0.98 是通用安全阈值吗?
- 不是。它只在本次七条样本中保留期限差异,仍需按模型和业务校准。
- 默认英文模型能证明中文质量吗?
- 不能。中文示例仅为错配对照,换多语言模型仍需独立验收。
- 去重后就没有训练测试泄漏吗?
- 不能保证。还需按来源、实体、时间及任务定义划分和核查。
- 开源免费包含全部成本吗?
- 不包含模型、计算、存储、索引、标注、人工复核和维护。
- 教程会删除文件吗?
- 不会。只输出合成记录的保留和过滤候选报告,写回需另外复核。