SemHash 介绍
了解工具的详细功能和使用方法
SemHash 是什么
SemHash 是用于语义去重、异常样本过滤和代表样本选择的开源开发库。它把记录编码成向量,再通过相似性搜索寻找近似内容。适合知识库、训练数据和文本采集管线中需要检查重复的开发者,也支持通过自定义编码器扩展其他模态;本文只验证文本。
它不是重复事实的裁判。两份条款可能主题几乎相同,却在期限、金额、否定或适用对象上不同。自动发现相似记录与最终决定删除,是不同的业务步骤。建议保留输入和匹配证据,先输出待复核列表,再按来源与版本选择保留记录。
适合怎样使用
例如先做完全一致内容检查,再让语义匹配补充改写候选。对知识库应保留文档 ID、来源、时间和权限,对训练数据还应检查不同划分之间是否有相同来源。仅删除相似文本不能证明训练与测试没有泄漏。
比较两条记录时,需要明确哪些字段参与编码。只比较问题而忽略答案,可能把答案不同的问答合并;把唯一 ID 一起送入模型,也可能改变原本想比较的内容。选择代表记录还要考虑权威来源、有效日期和完整程度,不能默认第一个一定最好。
本次实测与误判
2026 年 10 月 26 日使用 Python 3.11、SemHash 0.5.0、Model2Vec 0.10.0 和固定 potion-base-8M 快照,采用 basic 精确搜索后端处理七条合成记录。在 0.9 阈值下,完全相同副本被标记为精确重复;“三十天退款”也被归入“七天退款”,相似度约 0.924,这是业务误判。
提高到 0.98 后,本样例只过滤完全相同副本;降低到 0.8 时,两个中文期限版本也被归并。这不说明 0.98 是通用安全阈值,也不能用英文模型的少量中文输出评价全部多语言模型。本文未测试图片、生产规模、近似索引召回或多工具性能排名。
费用、许可与部署
SemHash 库采用 MIT,软件许可费为 $0。模型权重、计算、存储、索引、人工标注和复核仍有成本,换编码器时应单独核对模型许可及数据流。首次模型准备通常需要网络;本文从已准备的本地快照运行,没有付费模型 API 调用。
严格离线部署应检查整个应用而非只设置一个环境变量。中国大陆模型下载可达性、平台 wheel 和后端资源需要在目标环境确认。相似度和嵌入都不提供访问授权,跨租户数据不应未经允许混在同一个去重池中。
从可追踪结果开始
本次程序只输出 selected、filtered、exact、duplicate_of 和 score,不修改原始数据。实际写回前应保留恢复路径和复核记录。目录缩略图是抽象插画,不是官方品牌标识或产品截图。
继续阅读:文本去重工具推荐、SemHash vs RapidFuzz、SemHash vs datasketch、Python 实操。官方资料:项目与许可、去重文档。