两句话几乎共享不了任何一个词,却能讲出同一个故事;反过来,两句话词序全对、只换了主语,模型却给出接近满分的相似度。ReadOnce 想处理的是更小的一件事:把一份旧笔记和一份新笔记放在一起,指出哪些当前行可能在重复早先的意思。它保留每一行当前文本、对应的早先引用、模型实际打分和理由,不删除、不改写。
这个项目在 2026 年 10 月 21 日动手,落在 Hacktoberfest 开源 AI 挑战第三周“慢而稳”的参赛窗口内。比较引擎、界面和测试夹具都是新写的;复用了本地已有的通用 MiniLM 与浏览器运行时文件,保留其声明和精确哈希,没有改名,也没有拿旧项目来交差。
它怎么判断“可能重复”
功能核心是一个开放权重的句子嵌入模型 Xenova/all-MiniLM-L6-v2。Transformers.js 在浏览器里通过 CPU WebAssembly 跑它的 q8 ONNX 权重,比较自带样例不需要托管补全服务、API key 或账号。每条笔记变成一个 384 维向量,用余弦相似度找可能的早先引用,即使词序被打乱也能找到——这是精确比对做不到的:在留出夹具里,精确基线只抓到字面重复,模型还多找到两处改写。
但相似不等于一致。模型可能给“50 USD”和“75 USD”几乎相同的向量。ReadOnce 因此加了一层朴素词法检查,盯住变化的数量、识别出的日期和星期、否定词、选定的状态词和大写标识符;只要有一项不同,就不打语义重复标签。
匹配规则是明摆着的:余弦至少 0.82,最佳与次佳的差距至少 0.06,且受保护的词法事实相等。平局和被复用的引用都留待人工复核。每条早先笔记只能按当前笔记顺序被占用一次,界面背后没有藏一个全局对齐优化器。精确匹配只折叠空白和大小写,其余匹配一律叫“可能重复”,因为证据只支持到这个程度。每条当前笔记仍渲染在原来的位置,审计 JSON 里包含原文、引用、分数、理由、设置和耗时。
测试数字与那个不该被藏起来的错
第一次推理之前,作者写好了四个校准样例、十二个留出用例和一个对抗性的角色互换,阈值和次佳差距提前固定。十四个独立的引擎测试覆盖非法向量、变化细节、歧义、复用、输入上限和原始行保留。
最终的实际浏览器模型运行结果:校准 4/4、留出 12/12 符合预先写下的预期;纯精确基线分别是 0/4 和 10/12。留出集有十三条当前笔记,因为其中一个用例专门测试复用早先引用。这些合成小样本不能证明真实文档上的准确率,也不能证明省下了多少人工时间。
一次漏判比总数更有信息量。模型给下面两句打了约 0.979 的余弦相似度:
- Alice reviews the report written by Bob.
- Bob reviews the report written by Alice.
这是一个错误的“可能重复”建议。人物角色互换了,但词法护栏看到的事实完全相同。这个失败被留在证据页和 README 里——一个句子模型加几条正则表达式,确定不了谁做了什么。
第一次批量运行也留着。无关笔记改变了推理批次时,分数跟着变,其中一个校准改写掉到了阈值以下。最终加载器改成一次嵌入一条笔记,让应用样例和验证运行中的同一对句子结果一致。阈值没有调,失败的换角用例没有删,两份运行记录都还能查。
边界写清楚,比功能多更重要
界面在桌面视口和 390 CSS 像素宽的框里都检查过。一条形似 HTML/脚本的合成笔记保持为纯文本,下载的审计保留了三份测试原文。本地计时记录把模型等待/加载和推理分开,这是一次带保留资源的运行,不是首次下载基准,也不是真机测试。
开源在这里有具体含义:模型可以钉到不可变版本,文件可以检查、可以算哈希,同样的推理可以重跑,不必把笔记发给模型提供方。应用小到能读完——纯比较模块、模型加载器、渲染代码和一个独立证据页。原始代码用 MIT 许可,Apache-2.0 的模型/运行时和 MIT 的 ONNX 声明随依赖保留。
这不等于托管副本就自动私密,主机和用户浏览器仍然算数。这个版本没有上传端点、没有分析、不存笔记,禁用远程模型加载,连接只限自身来源;作者核对了代码、配置和本地请求,没有做独立的网络抓包。开发过程只用了合成输入。
ReadOnce 支持短英文笔记,每侧最多五十条,模型每条最多看 256 个 token。人名、关系、因果、微妙语气和未识别的标识符仍是弱点,词法护栏也可能误拒无害的改写。它不自动隐藏、批准或删除任何内容,也不用于财务、法律或安全决策。作者的说法很直白:宁可读两条引文,也不想悄悄丢掉一处被改掉的责任归属。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.