论文学习《RAG-WM——首个面向 RAG 的黑盒知识水印方案》
论文精读:RAG-WM——首个面向 RAG 的黑盒知识水印方案
论文:RAG-WM: An Efficient Black-Box Watermarking Method for Retrieval-Augmented Generation
会议:CCS 2025
关键词:RAG、知识产权保护、知识水印、黑盒验证、实体关系三元组、二项检验
它第一次把 RAG 的版权保护问题,真正做成了一个可黑盒验证、可抵抗改写、可用于现实侵权取证的方案。
相比传统文本水印、数据库水印或模型水印,RAG-WM 抓住的不是字面表达,而是知识本身。这让它即使面对 LLM 的复述、改写和重生成,也仍然能保持很强的可验证性。
论文结论
-
RAG 被盗后,为什么传统方法难以确权?
因为攻击者通常不会开放知识库,原作者只能通过 API 黑盒访问系统,传统需要白盒读取数据库内容的水印方法几乎都失效。 -
RAG-WM 的核心思路是什么?
不去给文本表面加水印,而是把水印编码成“实体-关系-实体”形式的知识三元组,再把这些知识注入知识库中,最后通过黑盒问答验证系统是否掌握这些特定水印知识。 -
为什么它比文本水印更稳?
因为文本可以被改写,但知识关系通常不会轻易消失。只要 RAG 仍然依赖被盗知识库提供回答,水印就有机会被检出。
RAG 的版权保护问题
1. RAG 最值钱的部分不是模型,而是知识库
一个高质量 RAG 系统通常由三部分组成:
- 知识库
- 检索器
- 大语言模型
其中真正昂贵、真正难复制的,很多时候不是 LLM 本身,而是经过长期清洗、标注、组织、更新后形成的高质量知识库。尤其在医疗、金融、法律、企业内部文档等场景里,这部分往往才是商业价值核心。
2. 被盗用的方式并不复杂
论文的威胁模型很现实。知识库可能通过以下方式泄露:
- 内部人员拷贝
- 数据库或向量库被入侵窃取
- 通过接口反复查询被重建
- 知识库被直接复制后重新部署
一旦知识库被盗,攻击者完全可以换自己的检索器、换自己的 LLM,再包装成新系统上线。此时原作者通常只能访问外部接口,而不能直接打开对方的知识库内容。
3. 传统方法为什么不适合 RAG
| 方法 | 问题 |
|---|---|
| 数据库水印 | 通常需要白盒访问原始数据,现实中难以取得 |
| 文本水印 | 很容易被改写、复述、摘要后破坏 |
| 模型水印 | 攻击者更换检索器或 LLM 后可能绕过 |
| WARD 等文本型黑盒方案 | 对复述和伪造所有权的抵抗力不足 |
所以论文要解决的,不是“给文本打标记”,而是“在黑盒条件下为知识本身确权”。
核心思想:把水印写进知识,而不是写进文本表面
RAG-WM 最关键的设计是:水印“知识化”。
这一步其实非常关键,因为它直接绕开了传统文本水印最脆弱的地方。传统文本水印往往依赖:
- 特定词汇选择
- 固定句法模式
- 特殊表达风格
- 某种可统计检测的语言偏置
这些信号一旦经过 LLM 改写、总结、复述,很容易被冲掉。但知识水印不一样,它关注的是“系统是否还掌握某个特定事实关系”,而不是“系统是否还保留某种原始表述方式”。
它不是往文档里强行插入固定句式、固定词表或者格式特征,而是把水印设计成一个个实体-关系-实体三元组:
(e1,r,e2) (e_1, r, e_2) (e1,r,e2)
直观理解就是:
- 选两个实体
- 为它们生成一个特定关系
- 把这个关系作为水印知识注入知识库
这样即使文本形式发生变化,只要系统依然保留了这段知识,作者就仍然能通过黑盒问答检测出来。
这也是它比普通文本水印更鲁棒的根本原因。
从更直白的角度说,RAG-WM 的思路是:
- 不去保护“这句话怎么说”
- 而去保护“这件事是否还成立”
这就是为什么论文把自己的方案称为知识水印,而不是文本水印。
整体方法:3 步完成水印生成、注入与验证
第一步:生成水印知识
论文先从知识库中抽取高频实体与关系,形成候选实体集合 EEE 和关系集合 RRR。接着利用 HMAC 和作者私钥,生成一系列只有作者自己知道的水印三元组。
这里的设计有两个非常实际的考虑:
- 不能随便编实体和关系。如果水印内容和原知识库完全脱节,那么它既不容易被检索,也容易显得突兀。
- 不能让别人轻易猜出水印模式。如果水印三元组是拍脑袋随便写的,攻击者可能伪造类似内容来争夺所有权。
所以论文才会选择“从真实知识库中抽候选实体/关系 + 用密钥控制组合”的方式。
水印实体与关系的索引生成公式如下:
index(ewmi+1)=HMAC(key,ewmi) mod ∣E∣ \text{index}(e_{wm}^{i+1}) = \text{HMAC}(key, e_{wm}^{i}) \bmod |E| index(ewmi+1)=HMAC(key,ewmi)mod∣E∣
index(rwmi,j)=HMAC(key,ewmi,ewmj) mod ∣R∣ \text{index}(r_{wm}^{i,j}) = \text{HMAC}(key, e_{wm}^{i}, e_{wm}^{j}) \bmod |R| index(rwmi,j)=HMAC(key,ewmi,ewmj)mod∣R∣
这一步的意义很明确:
- 作者可以稳定生成自己的水印知识
- 不知道密钥的人很难伪造同样的三元组
- 水印和作者身份之间建立了可验证绑定
这里的 HMAC 不是点缀,而是安全核心。它保证了两件事:
- 唯一性:同一个作者、同一个密钥会生成稳定的水印模式
- 防伪造性:别人即使知道方法框架,也难以反推出你的水印集合
第二步:把水印知识注入知识库
RAG-WM 并不是简单把三元组生硬写进文档,而是设计了一个多模块协作流程:
- WM-Gen:把三元组转换成自然语言水印文本
- Shadow-LLM & RAG:模拟攻击者的部署方式,测试水印是否真的能被检索和回答出来
- WM-Disc:判断注入是否成功,验证系统是否掌握该水印知识
论文采用的注入策略是相关文本拼接:
- 先构造对应的水印问题
- 检索出与问题最相关的原始文档片段
- 再把水印文本拼接到最相关文本后面
这样做的好处是,水印更容易在检索阶段被召回,同时也不会像随机插入那样过于突兀。
这里其实体现了论文一个很务实的工程思路:
- 水印不是只要“写进去”就行
- 还必须保证后续检索得到、生成得出、验证得稳
如果某段水印文本理论上存在,但检索阶段永远召不回来,那么它对黑盒验证几乎没有意义。因此,相关文本拼接本质上是在优化“可召回性”。
第三步:黑盒验证侵权
一旦怀疑某个 RAG 系统盗用了知识库,作者只需:
- 用预先保存的水印问题去查询对方系统
- 统计回答中正确命中水印关系的数量
- 使用二项检验判断命中结果是否显著高于随机猜中
如果显著高于随机水平,就可以据此认定侵权。
这一点很重要,因为论文不是靠“回答有点像”这种模糊标准来判断,而是给出了一个明确的统计判定机制。换句话说,它试图把版权检测从“主观怀疑”推进到“可量化举证”。
RAG-WM 全流程
如果把整篇论文压缩成最直观的三条链路,其实就是:生成水印、注入水印、验证侵权。
1. 水印生成链路
输入原知识库 KD
→ 抽取候选实体集合 E 与关系集合 R
→ 使用作者密钥 key 做 HMAC 映射
→ 生成专属水印实体与水印关系
→ 组合为一组三元组 (e1, r, e2)
→ 得到仅作者掌握的水印知识集合
这条链路解决的是:水印从哪里来,以及为什么别人难以伪造。
2. 水印注入链路
输入水印三元组
→ WM-Gen 把三元组转换成自然语言水印文本
→ 构造对应的水印问题 WQ
→ 用 Shadow-RAG 检索最相关原文片段
→ 把水印文本拼接到相关文本后面
→ 用 Shadow-LLM 测试能否稳定回答出目标关系
→ WM-Disc 判断注入是否成功
→ 成功后得到带水印知识库
这条链路解决的是:水印不仅要存在,还要保证后续能被检索到、能被模型稳定说出来。
3. 黑盒验证链路
输入可疑 RAG 系统
→ 作者取出预先保存的水印问题集合
→ 黑盒发起 n 次查询
→ 收集回答并做关系匹配
→ 统计命中数 c_wm
→ 用二项检验计算 p-value
→ 若 p-value < 0.05,则认定存在侵权
这条链路解决的是:在看不到知识库内部的情况下,如何把“怀疑盗用”变成“统计上可举证的侵权结论”。
4. 三条链路并排看,论文的系统思路就很完整了
- 生成链路:保证水印唯一、可验证、难伪造
- 注入链路:保证水印自然、可召回、可生成
- 验证链路:保证作者在纯黑盒条件下也能完成取证
这也是为什么 RAG-WM 更像一个完整系统,而不是单点技巧。
核心模块
1. WM-Gen:Watermark Generator
WM-Gen 的作用是把结构化水印三元组转成自然语言文本,使其能够自然地嵌入知识库文档中。
它解决的问题是:
- 三元组本身是结构化的
- 知识库大多是自然语言文档
- 所以必须把“水印知识”翻译成可读、可检索、可生成的文本形式
如果从系统角度理解,WM-Gen 做的是“结构化知识 → 语言化知识”的转换。它不能只追求语法正确,还要兼顾三点:
- 写得自然,别太假
- 和原始文档语境相容,别一眼像外来插入
- 后续检索时能被真正召回
因此,WM-Gen 不是简单模板替换,而更像是一个受约束的水印文本生成器。
2. Shadow-LLM & RAG:影子系统
这个模块非常关键,因为它模拟了攻击者部署后的环境。
作者用一个影子 RAG 系统来提前测试:
- 水印文本能不能被检索到
- 检索到后,LLM 会不会在回答中保留这段知识
- 这段知识是否足够稳定,能支撑后续黑盒验证
你可以把它理解成“先在本地模拟一遍小偷系统,确认水印真的能活下来”。
这也是为什么论文强调多 LLM 交互。因为作者并不是只关心水印文本“能写出来”,而是更关心:
- 它会不会被检索器忽略
- 它会不会被生成模型弱化
- 它会不会在真实问答时输出不稳定
影子系统的作用,就是把这些问题提前在本地跑一遍。
3. WM-Disc:Watermark Discriminator
WM-Disc 是判别器,用来检查回答中是否真的包含目标水印关系。
在论文框架里,它承担两种任务:
- 注入阶段:检查影子系统是否已经学会或能稳定召回水印知识
- 检测阶段:检查可疑系统回答中是否命中水印三元组
从你的笔记来看,后续如果要继续写成研究笔记,可以把 WM-Disc 单独扩展成一节,重点讲规则匹配、实体对齐、语义相似度判定等实现细节。
如果用一句话概括这三个模块的分工,可以写成:
- WM-Gen 负责“写进去”
- Shadow-LLM & RAG 负责“跑一遍看能不能活下来”
- WM-Disc 负责“最后判断到底算不算命中”
三者拼起来,才构成一个完整可用的黑盒版权检测链路。
3.1 WM-Disc 到底在判什么
如果把 WM-Disc 说得更严格一点,它判的不是“回答像不像带水印”,而是:
- 回答里是否出现了目标实体对
- 回答里是否表达了预设关系
- 这个关系命中到底是明确命中、语义命中,还是随机巧合
所以 WM-Disc 本质上是一个关系命中判别器,而不是简单的文本分类器。
3.2 WM-Disc 在注入阶段做什么
在注入阶段,WM-Disc 的任务是判断:刚刚写入知识库的水印文本,是否已经满足“可被后续验证”的条件。
可以把这一步拆成下面的逻辑:
输入:水印问题 WQ、Shadow-RAG 检索结果、Shadow-LLM 回答
→ 检查回答是否包含目标实体 e1 与 e2
→ 检查回答是否表达目标关系 r
→ 若命中,则说明该水印已可被稳定召回与表达
→ 若未命中,则返回上一阶段继续调整水印文本
这意味着 WM-Disc 在注入阶段并不是“最后才出现”,而是直接参与了一个闭环优化:
- 写进去
- 跑一遍
- 判一下
- 不行就继续改
因此它对整套方案的工程可用性非常关键。
3.3 WM-Disc 在检测阶段做什么
到了黑盒侵权检测阶段,WM-Disc 的任务会从“验证水印可用”变成“统计命中次数”。
这一步可以理解成下面的流水线:
输入:n 个水印问题与可疑系统的 n 个回答
→ 对每个回答做实体识别与关系提取
→ 判断是否命中对应水印三元组
→ 对每个问题输出 0/1 命中结果
→ 汇总得到总命中数 c_wm
→ 把 c_wm 送入二项检验
所以从功能上看,WM-Disc 是二项检验之前的“证据整理器”。如果没有它,后面的统计检验就没有可靠输入。
3.4 WM-Disc 为什么不能只是关键词匹配
如果只做简单关键词匹配,WM-Disc 会很脆弱,因为黑盒问答系统的回答可能出现这些情况:
- 同一实体换一种表述方式
- 同一关系被换一种说法
- 回答没有严格复述原句,但语义上已经表达了目标关系
因此,一个更合理的 WM-Disc 通常至少要覆盖两层判定:
- 显式命中:实体和关系直接出现
- 语义命中:关系没按原词出现,但语义已等价表达
也正因为如此,你后续如果把 WM-Disc 单独拆成方法细节,最值得展开的就是:
- 实体归一化
- 关系模板匹配
- 语义相似度判定
- 命中阈值设计
3.5 WM-Disc 的方法视角:它其实在连接“语言层”和“统计层”
这是 WM-Disc 在整篇论文里最容易被低估的一点。
RAG-WM 的前半部分在做语言和知识层面的事情:
- 生成水印三元组
- 生成自然语言水印文本
- 让影子系统能够稳定回答出这些知识
而后半部分在做统计层面的事情:
- 统计命中次数
- 进行二项检验
- 给出显著性结论
WM-Disc 正好卡在这两层之间。它负责把“回答里似乎有这个关系”转换成“这一条算命中还是不算命中”的离散证据。因此它既是语言理解模块,也是法证统计链路中的证据接口。
3.6 如果把 WM-Disc 单独当成论文方法小节,可以怎么写
可以直接把它概括成下面这段:
WM-Disc 是 RAG-WM 中负责水印判定的核心模块,贯穿水印注入和黑盒检测两个阶段。在注入阶段,WM-Disc 用于验证水印文本是否已被 Shadow-RAG 成功召回并被 Shadow-LLM 稳定表达;在检测阶段,WM-Disc 用于判定可疑系统回答是否命中预设水印关系,并将回答层面的语义证据转换为可供二项检验使用的离散命中结果。其本质功能不是简单关键词匹配,而是将实体识别、关系匹配与命中判决整合为一个可服务于版权取证的判别接口。
这一版写法会比现在更像论文方法细拆,而不是博客式概括。
黑盒侵权检测为什么成立
1. 检测前,作者手里掌握什么
作者会提前保存:
- 一组水印三元组
- 与这些三元组对应的问题模板
- 生成这些三元组时使用的密钥
这些信息本质上就是“版权证明材料”。
2. 黑盒检测时,作者具体怎么做
论文中采用的做法是:
- 从水印问题集合中抽取 n=30n=30n=30 个问题
- 用这些问题黑盒查询可疑 RAG 系统
- 统计回答中正确命中水印关系的次数 cwmc_{wm}cwm
- 用二项检验计算显著性
对应公式为:
p-value=P(X≥cwm)=∑x=cwmn(nx)p0x(1−p0)n−x p\text{-value}=P(X\ge c_{wm})=\sum_{x=c_{wm}}^{n} \binom{n}{x} p_0^x (1-p_0)^{n-x} p-value=P(X≥cwm)=x=cwm∑n(xn)p0x(1−p0)n−x
其中:
- nnn 是查询次数
- cwmc_{wm}cwm 是命中次数
- p0p_0p0 是随机命中某一关系的概率
如果 p-value<0.05p\text{-value} < 0.05p-value<0.05,则可拒绝“随机命中”的原假设,认定系统存在侵权。
这一步的价值在于,作者不需要证明“每次回答都完美命中水印”,只需要证明“命中频率高到不可能是随机巧合”。这就大幅降低了黑盒验证的脆弱性。
3. 为什么这个统计判断很有力
因为在大型知识库中,关系总数往往非常多,随机猜中某一特定关系的概率极低。论文给出的结论是:在其设置下,30 次查询中命中 3 次以上就足以构成极强证据。
这使得 RAG-WM 不只是“感觉上像有水印”,而是提供了一套统计意义上可解释的侵权判定流程。
如果换成法证思维来理解,它的逻辑非常像:
- 单次命中未必足够
- 但多次命中且远超随机概率,就能构成强证据
所以二项检验在这里不是装饰性的数学公式,而是整套黑盒侵权检测可信度的基础。
关键公式
除了上面的水印生成与二项检验公式,这篇论文还有几组值得一起记住的基础公式。
1. RAG 检索公式
{r1,r2,…,rk}=top-k(sim(e(Q),e(ri))),ri∈KD \{r_1,r_2,\ldots,r_k\} = \text{top-}k\big(\text{sim}(e(Q), e(r_i))\big), \quad r_i \in KD {r1,r2,…,rk}=top-k(sim(e(Q),e(ri))),ri∈KD
含义:根据问题 QQQ 与知识库文本的表示相似度,取出最相关的 kkk 个片段。
这条公式虽然基础,但在这篇论文里非常重要。因为 RAG-WM 并不是直接改 LLM,而是要想办法让“带水印的知识”进入 top-k 检索结果。只要检索阶段进不去,后面的生成和验证都不会成立。
2. RAG 生成公式
answer=LLM(Q,{r1,…,rk}) \text{answer} = \text{LLM}(Q, \{r_1, \ldots, r_k\}) answer=LLM(Q,{r1,…,rk})
含义:把问题和检索到的文本一起输入 LLM,生成最终回答。
这条公式对应的是第二个关键瓶颈:即便水印文本被检索出来,LLM 也不一定会按你想要的方式表达出来。所以论文才需要影子系统和判别器去反复检查生成稳定性。
3. 实体关系抽取公式
{E,R}=ParseER(Sample(KD,d)) \{E, R\} = \text{ParseER}(\text{Sample}(KD, d)) {E,R}=ParseER(Sample(KD,d))
含义:从知识库中采样文档,抽取实体集合和关系集合,用于后续水印三元组生成。
这一步决定了水印知识是否“像是从原知识库里长出来的”。如果实体和关系抽得好,水印会更自然,也更不容易被发现和清理。
4. Shadow-LLM 验证公式
Ans=Shadow-LLM(WQ,RAG(WQ)) \text{Ans} = \text{Shadow-LLM}(WQ, \text{RAG}(WQ)) Ans=Shadow-LLM(WQ,RAG(WQ))
含义:用影子系统模拟真实部署环境,验证水印问题是否真的能召回并输出目标水印知识。
从方法链路上说,这一步是“离线自测”。它让作者在真正发布带水印知识库之前,就能先知道这套水印是不是可用,而不是把所有验证都留到被盗之后。
实验设计
1. 数据集
论文覆盖了多个场景的数据集,包括通用问答和隐私敏感领域,如:
- NQ
- HotpotQA
- MS MARCO
- TREC-COVID
- NFCorpus
这意味着论文不是只在单一通用数据集上展示效果,而是验证了方法在多类型知识库中的适用性。
这一点很重要,因为 RAG 系统的知识库差异通常非常大:
- 通用知识库语言更开放
- 专业知识库术语更密集
- 隐私数据场景对准确性和侵入性更敏感
如果方案只在单一问答数据集上成立,它的说服力会弱很多。论文覆盖通用与专业领域,正是为了证明自己不只是“某个数据集上的技巧”。
2. LLM 与检索器
论文测试了多个大模型与检索器组合,包括:
- GPT-3.5-Turbo
- PaLM 2
- Llama-2
- Vicuna
以及多种检索器设置。
这很重要,因为它说明 RAG-WM 不是绑定某一个具体模型,而是更偏系统层方案。
换句话说,这篇论文想证明的不是“某个模型配某个检索器时有效”,而是“只要系统遵循 RAG 这一基本范式,这种知识水印思路就有可迁移性”。
3. 评价指标
你的笔记里整理得很全,核心指标包括:
- WSN:命中水印关系的次数
- WIRR:水印信息被检索到的比例
- CDPA:水印后原任务性能保留程度
- CIRA:水印后检索一致性
- 以及更直观的 TPR/FPR 等检测指标
这些指标各自回答的问题不一样:
- WSN 关心“能命中多少次”
- WIRR 关心“水印知识能不能被检索回来”
- CDPA 关心“原任务有没有被明显伤到”
- CIRA 关心“加水印后检索行为是否仍然稳定”
这意味着论文并不是只追求“检测成功”,而是在同时考察可用性、可部署性和鲁棒性。
实验结果
1. 检测效果非常强
论文报告的核心结果是:
- TPR = 100%
- FPR = 0%
也就是说,在其实验设置下,RAG-WM 可以稳定检出侵权系统,同时没有误报。
在版权检测任务里,这种结果尤其关键。因为只要误报率明显上升,水印方案就会迅速失去证据价值;而如果检测率不足,又起不到真正的威慑作用。论文在这两点上给出了非常强的结果。
2. 对原任务影响很小
论文给出原任务性能保留率约为 97.87%。
这意味着水印不是靠大幅破坏知识库换来的,而是在相对低侵入条件下实现的。
这也是判断一个水印方案能不能落地的关键标准之一。因为企业不会为了可追责性,接受一个显著降低业务问答质量的方案。
3. 对多种攻击具有鲁棒性
论文重点测试了以下攻击:
- 复述攻击
- 删除无关内容
- 插入干扰知识
- 知识膨胀
在这些情况下,RAG-WM 依然保持很强的可检出性。尤其是对复述攻击的抗性,是它相对文本水印方案最显著的优势。
这一点其实非常符合直觉:
- 如果你保护的是词句本身,复述会直接冲掉水印
- 如果你保护的是知识关系,复述往往只是换个说法
而 RAG-WM 正是把自己的优势建立在这条差异上。
4. 隐蔽性也不错
你的笔记里提到困惑度检测 F1 很低,这意味着仅从语言异常或文本重复角度,并不容易直接发现这些水印文本。
从攻击者角度看,这意味着两件事:
- 不容易仅靠简单文本异常检测就把水印批量扫出来
- 不容易通过去重、简单清洗这类低成本手段直接消除水印
局限
1. 小知识库场景下水印占比可能偏高
如果知识库本身很小,那么即使水印文本绝对量不大,占比也可能偏高,这会影响隐蔽性与实用性。
2. 当前主要聚焦文本 RAG
论文主要验证的是文本型 RAG,对图像、表格、音频、多模态知识库的扩展还没有真正展开。
3. 公开第三方可验证能力仍有限
当前方案核心依赖作者掌握密钥,因此它非常适合作者自己维权,但若要支持第三方、司法机构或公共审计,还需要结合更强的密码学机制。
换句话说,RAG-WM 已经非常接近“实用版权检测系统”,但距离“公共可审计版权基础设施”还差一步。这一步很可能需要密码学承诺、时间戳、公证机制甚至链上登记来补齐。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)