在本站中
本站是开源的 dioxus 全栈应用(yuxuetr/rustineverything),不用 candle,也没有机器学习的部分。burn 卷的 在本站中 问过一个具体问题:给文档页加「相关文章」,用 TF-IDF 算要付出什么;它的结论是 TF-IDF 便宜、合理,但 88.4% 的推荐留在同一卷里,跨卷要靠语义向量。这一部分接着回答后半句。实验只读本站代码和私有内容仓库的 docs/,在本地跑,页面上只给标题和统计。
- 用 candle 算语义相关文章:同样 705 页,bert-base-chinese 加 mean pooling。原样的 tokenizer 把含大写字母的词变成
[UNK],512 个位置只装得下一页的三成;只看开头时同卷比例降到 63.9%,但多出的跨卷推荐不少是坑页面对坑页面;全文分段平均后跨卷推荐更像人给的,同卷 75.9%。Metal 全站 43 s 到 5 分钟,CPU 是几分钟到半小时级别,进程 800 MiB 起、模型 392.5 MiB;bert.rs的拼接 softmax 和标量gelu_erf是两个瓶颈。结论是不替换 TF-IDF,真要用就在内容仓库一侧离线算成 JSON。
flowchart TB docs["705 个 docs 页面"] --> tfidf["TF-IDF burn 卷"] docs --> bert["BERT 句向量"] bert --> head["只看开头"] bert --> chunks["全文分段平均"] tfidf --> cmp["前 5 比较"] head --> cmp chunks --> cmp cmp --> where["离线算成 JSON"]
本站怎么读文档、怎么部署(镜像只出 linux/amd64、内容只读挂载、容器内存上限 768 MiB),见 burn 卷的 用 burn 算相关文章;BERT 本身的结构和加载见 BERT。本部分的数字都是 macOS(M2 Max)上测的,Linux 服务器上的情况只读了源码。
💬 关联讨论
发起讨论加载中...