2 分•作者: RoyalTnetennba•8 天前
我需要一个分类器来处理那些不属于典型机器学习应用场景的、细微的、主观的分类(例如,“这是否是剧透?”、“这是否事实正确?”、“这个用户是否在说谎?”)。我最终对我构建的解决这个问题的架构非常满意,于是我将其作为一个独立的 API 和服务推出了,名为 CriteriaBot。
**它的作用:**
你提供内容和简单的英文标准。它会给出内容是否符合这些标准是/否的判断。
**它的工作原理:**
除了传统的分类器外,分类请求还会通过一个由小型、开放权重的大型语言模型(LLM)组成的池进行路由,以达成共识判断。
我构建了一个预投票因子分解机,根据主题/类别的嵌入来选择一个优化的 LLM 子集,以获得最佳信号强度。然后,第二个因子分解机读取投票和嵌入,得出单一的判断。该判断会根据用户在语义相似评估中与模型达成一致/不一致的历史记录进行动态调整。
这些模型还连接到维基百科和 Wolfram,以支持需要最新信息或数学依据的边缘情况。
**发现:**
* 使用相同的测试环境和样本集,Gemma 4 26B 的准确率仅比 Opus 4.8 低约 1 个百分点。
* 纯粹的“神谕”模型理论上非常好——目前在数据集上准确率约为 98%。我将第二个因子分解机用作组合器,因为它理论上可以超越“神谕”结果,但这是一个有趣的备用方案。
* 最有用的大型语言模型出乎我的意料——LFM2 24B 对共识的贡献最大,尽管它单独来看(在我们目前的大型语言模型池中)是最差的。它与其他模型的关联度最低(也许是由于其独特的架构?),这使得它在某些问题上成为一个有用的信号。
* 处理用户提交图像的法律义务……非常复杂。在我解决这个问题之前,我已经为非我本人用户禁用了图像支持(如果你希望尝试“热狗,不是热狗”的话)。
* Rails 将“criteria”的复数形式错误地单数化为“criterium”,直到我花了大量精力去修复才意识到这是错误的。
**发布原因:**
我一直处于倦怠状态,而让这个项目运行起来让我感到非常满足。我生活中大部分非技术人员很难对此给出除了“这是什么?”之外的反应。
我非常乐意收到你任何诚实的反馈。