RAG跨文档推理可能拼出敏感信息
文章介绍名为Agent Mosaic的研究:Agent可能将多份低密级文档组合成敏感结论,即使用户问题本身无恶意。所述实验覆盖30个场景,检验多步检索中的信息组合泄露风险。
AI 深度解读
Agent 接入内部知识库后,可能把几份单独可读的资料拼成一条无权披露的结论,即使用户问的是普通问题。原文把这种失效称为 Agent Mosaic:泄漏的不是某段原文,而是模型推出来的关系。
作者引用的测试中,表现最好的模型仍有 7.08% 的良性查询回答泄漏了敏感组合结论。对做 RAG 和多 Agent 系统的程序员,关键提醒是:权限不能只检查单份文档,还要检查哪些资料允许同时进入上下文。
每份文档都能看,为什么拼起来就泄密了
「马赛克效应」在情报分析中并不新鲜。航运清单、飞行路线、仓库租约可能都是公开信息,放在一起却能推断出尚未公布的军事部署。单份资料的权限合规,不代表组合后的结论也能公开。
USC Information Sciences Institute 的研究把这个问题放到了企业知识库中,论文编号为 arXiv 2610.30418。研究者构造了覆盖网络安全、医疗和军事物流的 30 个场景,在三个前沿模型上进行了 10,800 次受控模拟,又在两个开源 Agent 执行框架中进行了 1,440 次运行。
其中一组查询刻意设计成普通问题,只靠一份低权限文档就能回答。即便如此,表现最好的 GPT-5.6-Sol 仍在 7.08% 的回答中披露了禁止输出的组合结论,95% 置信区间为 3.75% 至 10.67%。在真实 Agent 执行框架里,工具结果和工作草稿不断积累,泄漏率更高,但原文没有给出具体数值。
研究者还把明确的聚合规则和可见的分级标记写进检索文档。基线泄漏率有所下降,但在覆盖全部受测用户意图的模拟中,不安全组合披露仍达到 32.37%。
这里不能把 7.08% 和 32.37% 直接比较:前者对应良性查询下的最佳模型,后者覆盖全部受测用户意图。原文没有提供足够细的分组结果,不能据此说加规则反而让泄漏增加。
为什么拒答和系统提示词挡不住
原文指出,即使系统提示词明确要求「不要关联 Project A 的记录与 Project B 的部署计划」,也没解决问题。多份检索内容进入同一上下文后,模型仍可能建立关联。
拒答还可能把答案带出来。例如,Agent 回答「我不能告诉你,载荷是否因为 4 号设施冷却系统过热而失效」,表面在拒绝,实际上已经暴露了设施、故障和原因之间的关系。论文的框架运行中,激进的拒答策略经常出现这类问题。
判断是否泄漏,要看回答披露了什么,不能只看它有没有说「不能回答」。
作者据此主张,把权限控制移到检索边界。下面这段流程解决的是:让禁止组合的资料在生成前就被隔离。
[User Request]
│
▼
[Scope & Clearance Guard]
│
├─► Retrieval Partition A (Allowed) ──► In-Context Working Memory
│
└─► Retrieval Partition B (Forbidden) ──► Blocked at Vector/SQL Filter
│
▼
[No Cross-Document Synthesis]
要看的是 Blocked at Vector/SQL Filter:拦截发生在向量检索或 SQL 过滤阶段,早于模型读取资料。
这套做法有三层。第一,按实体限定查询范围:查询客户记录时,就过滤不应一起出现的配套运营日志。第二,处理隔离任务的子 Agent 使用独立上下文,只向主调度器返回结构化结果,不回传完整对话轨迹。第三,记录每次进入提示词的文档 ID,发现互斥分区的文件同时出现,就在生成前终止执行。
权限检查因此多了一道题:除了「这份文件能不能读」,还要问「它能不能和当前已有资料一起读」。
我的判断
我认同把检索控制放在模型自我约束之前。若敏感关系已经进入模型可推理的范围,最后再要求它不要说,确实留下了明显的不确定性。原文报告了泄漏实验,这不只是抽象担忧。
但「唯一可靠防御」说得过满。原文没有展示检索隔离方案的完整对照数据,也没有说明它在复杂业务中的效果与成本,不能把架构建议当成已经验证的防护保证。
落地还有两个前提。团队得知道哪些资料组合属于禁区,并把规则编码到检索系统里;如果这层关系没有定义,过滤器也无从判断。子 Agent 的结构化输出也需要检查字段内容,因为敏感结论照样可以装进 JSON。
与生成后检查相比,检索隔离能更早缩小模型接触的信息范围,但可能限制合法的跨文档分析。两者可以配合使用:前者控制可见范围,后者检查最终披露。提示词仍能表达规则,只是原文的结果不足以支持把它当作主要权限边界。
能拿来做什么
- 给现有 RAG 增加「普通问题、意外关联」测试:让问题只需一份文档即可回答,再放入可能形成敏感关联的资料,检查回答和拒答是否泄漏关系。
- 在 Node 检索服务中落实实体范围与互斥分区过滤,并检查当前会话已经积累的资料,避免单次检索合规、跨轮累积后越界。
- 多 Agent 工作流只回传任务必需的结构化字段,并检查字段是否携带敏感推断,避免把完整工具结果和对话轨迹汇总进主 Agent。
- 为每次生成记录输入文档 ID 和所属分区;发现禁止共存的资料组合时,在调用模型前终止执行,让问题能够定位到具体检索结果。