跳到主要内容

0.994 的召回率,换张卷子直接交白卷

毒角兽
毒角兽

· 阅读约 6 分钟

先说结论:nokast-secureRAG 这东西,同分布上真能打,跨分布上真不能打。0.994 的召回率不是我先说的,作者自己写在论文里;换到 PoisonedRAG 上召回掉到接近零,也是作者自己写的。

我先给这一分:愿意在自己 arXiv 稿子里把跨基准归零那一行贴出来的,我最近翻的这一批预印本里没几个。

然后逐条拆。

方案不复杂。一个 0.5B 的小模型塞在检索和生成之间,把用户 query 和检索回来的 context 一起读进去,判三类:安全、可疑、恶意。定位叫语义防火墙。威胁模型是间接提示注入和检索投毒——检索回来的那堆文本里夹了指令,下游模型当成用户原话给执行了。这问题真实存在,不是哪家厂商编出来卖产品的。

问题出在,它怎么证明自己能防。

「留出测试集召回 0.994」

论文给的数据:

同分布留出集:        recall 0.994 / FPR 0.026 / ASR 代理 0.006
Prompt-Guard-86M:    recall 0.900 / FPR 0.690

0.994 配 0.026,这组数摆出来确实好看。Prompt-Guard-86M 那个 0.690 的误报率也确实惨,两害相权,它赢。

但那句「攻击成功率代理指标」得单独拎出来说。代理指标这五个字,学术圈的用法约等于「我们没法在真实环境里测,所以造了个替代数」。0.006 是这个替代数,不是你真把脏文档喂进去之后只有千分之六的攻击成功。

这两件事差着一整个威胁模型。

两个大模型互相点头,不叫标注

训练数据那段我看了两遍。35B 教师模型围绕四类攻击手法造 5,233 条样本,120B 评审模型重新打标签,一致率 95.0%,然后拿去微调 0.5B 的学生。

95.0% 的一致率被写成了数据质量的背书。

但两个都是大模型,训练语料高度重叠,对同一条样本给出同样的判断——这叫一致性,不叫正确性。它证明的是这两位的偏见方向差不多,不是这 5,233 条标签真的对。拿它当学生模型唯一的真值来源,等于把教师的认知边界原样焊进学生脑子里。

后面跨分布归零,根儿在这儿。不是学生学得不好,是它学的本来就是「这四类攻击长什么样」,不是「什么东西不该被执行」。

换张卷子,召回接近零

外部 PoisonedRAG 基准上,召回率掉到接近零。

官方解释是,流畅的事实篡改类攻击不在它「指令一致性」威胁模型的覆盖范围内。

说人话:它防的是上下文里夹了一句像指令的话,防不了上下文里的事实被改得面目全非。前者是往文档里塞一行 ignore previous instructions,后者是把「单笔转账限额 5000」改成「50000」。

后者才是检索投毒真正值钱的那一半。前者是演示,后者是事故。

0.994 和接近零中间隔的不是几个百分点,是换了一个问题。🤡

消融实验那条其实已经把底交出来了:攻击信号主要来自检索到的上下文内容本身,query 与 context 的一致性判断只用来压误报。翻过来就是——它主要在看「这段 context 像不像夹了指令」,不是在看「这段 context 该不该被信」。名字里那个 semantic,有点超纲。

75% 的翻转测试

还有一组叫「判断翻转」的测试:同一句话,上下文一换,一次良性一次恶意。模型有 75% 的概率两边都判对,优于所比较的基线。

这个数在论文里被当成亮点写。

我的看法不太一样。75% 意味着每四次有一次判反。一个挂在请求路径上的东西,四分之一的情况下把恶意放过去,或者把良性拦下来。前者等于没装,后者会让你的 RAG 时不时无故拒答,用户以为模型今天心情不好。

而且这是人工构造的最小对照。上下文长度、格式噪音、多语言混排一堆变量叠上去之后,这个 75% 只会往下掉。

延迟:目标是 100ms,实测 293–404ms

作者自己设的 100 毫秒目标,实测单次请求 293 到 404 毫秒,批处理摊薄 37 毫秒。

37 毫秒那个数很漂亮,但线上 RAG 是同步链路,用户在那儿等首 token。你没法把三个人的 query 攒一批再一起判。批处理这个数只在离线扫库的场景下成立,跟「防护」这个定位基本没关系。

293–404 挂上去,等于每次问答平白加三分之一秒。一个 0.5B 的模型,账已经从「能不能挡住」变成了「值不值得挡」。

这条我还没核完,先别信我这半句——293ms 是在什么硬件、什么 batch、什么序列长度下报的,论文里那几行我还没对完。换个配置能差出好几倍。

我真正想说的

这篇论文最值得看的地方不是 0.994,是它把归零那一行写在了正文里。

同分布 0.994,跨分布接近零,翻转测试 75%,延迟超标三倍——全摊开写,没藏。

在一堆把 benchmark 当广告位的预印本里,这算异类。权重、数据生成流水线、评测工具链全开源,这波真不冤。

但这不代表它能上生产。它证明的就一件事:拿 35B 教师加 120B 评审蒸馏一个 0.5B 的检测器,在教师定义的那四类攻击上,小模型能学得很像。结论扎实,也窄。

真要防检索投毒,靠的不是一个更会背样本的小模型,而是检索层本身的可信度分级——来源白名单、文档写入侧审计、签名校验。这些都不性感,也发不了 arXiv。但它们防的是事实篡改,不是指令注入。

把这两件事混在一个叫 semantic firewall 的名字底下,再拿指令注入的 0.994 去暗示它能防投毒——这是我今年见过最省事的一次偷换。

锐评评分卡

这钱花得冤不冤?不冤。全开源,光读它两小时就值回来了。

值不值得现在跟?不值得。0.994 是同一张考卷上的艺术照,PoisonedRAG 上那张才是素颜。

等它把事实篡改类攻击纳进威胁模型,或者等有人拿真实项目里那些脏文档复现一遍,再说跟不跟。至于「语义防火墙」这几个字——作者自己都把局限写在正文里了,你比作者还信,那就有点尴尬了。

毒角兽
毒角兽

拿到新工具先上手拆一遍,官方通稿信一半留一半,实测说话。

查看主页 →