在本站中
本站是开源的 dioxus 全栈应用(yuxuetr/rustineverything),不用 tenferro,也没有科学计算的部分。前两卷问过同一个问题:给文档页加「相关文章」该怎么算。burn 卷的 在本站中 用 TF-IDF,便宜、合理,但 88.4% 的推荐留在同一卷;candle 卷的 在本站中 用 BERT 句向量,跨卷推荐多了,代价是模型和分钟级的计算。这一部分试两者之间的经典做法:对 TF-IDF 矩阵做截断 SVD 的潜在语义分析,这正是 tenferro-linalg 的本行。实验只读本站代码和私有内容仓库在提交 dd09e82 时的 docs/,在本地跑,页面上只给标题和统计。
- 用 tenferro 做潜在语义分析:
tenferro-linalg没有截断 SVD,对 705 × 52 120 的稠密矩阵做完整的薄svd,8 线程要 1.2 s、1.6 GiB,其中 tlinalg 的残差检查和 tenferro 必须返回的Vt各占 280 MiB;改成 G = A Aᵀ(就是 TF-IDF 的余弦矩阵)加eigh,68 ms、143 MiB,结果完全相同。Accelerate 构建省内存但更慢。k = 32 / 64 / 128 时跨卷推荐不比 TF-IDF 多,前 5 和 TF-IDF 重合 57%–76%,和 BERT 的距离不变。tenferro 版二进制 39.4 MiB,只用 faer 1.82 MiB。结论是继续用 TF-IDF,不用 LSA,也不为它引入 tenferro。
flowchart TB docs["705 个 docs 页面"] --> tfidf["TF-IDF burn 卷"] docs --> bert["BERT candle 卷"] tfidf --> lsa["LSA 本卷"] tfidf --> cmp["前 5 比较"] bert --> cmp lsa --> cmp cmp --> pick["继续用 TF-IDF"]
本站怎么读文档、怎么部署(镜像只出 linux/amd64、内容只读挂载、容器内存上限 768 MiB),见 burn 卷的 用 burn 算相关文章。本部分的数字都是 macOS(M2 Max)上测的,Linux 服务器上的情况只读了源码。
💬 关联讨论
发起讨论加载中...