Rust in Everything
基于 candle-core 0.11.0

在本站中

本站是开源的 dioxus 全栈应用(yuxuetr/rustineverything),不用 candle,也没有机器学习的部分。burn 卷的 在本站中 问过一个具体问题:给文档页加「相关文章」,用 TF-IDF 算要付出什么;它的结论是 TF-IDF 便宜、合理,但 88.4% 的推荐留在同一卷里,跨卷要靠语义向量。这一部分接着回答后半句。实验只读本站代码和私有内容仓库的 docs/,在本地跑,页面上只给标题和统计。

  1. 用 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 服务器上的情况只读了源码。

💬 关联讨论

发起讨论
加载中...