返回博客

模型调用前如何审计上下文来源与版本

人工智能9107
模型调用前如何审计上下文来源与版本

知识库、对话历史和工具结果常被直接拼成一个大字符串送给模型。这样做难以回答:某条结论来自当前文档还是旧摘要,资料是否属于当前用户权限,工具错误是否被当成事实,以及模型上一轮的推测为什么进入任务状态。本文只解决调用前审计:把系统规则、主体权限、任务状态、检索证据、会话历史和当前请求分层;每段内容携带来源、版本、可信状态与权限;在请求发送前生成上下文清单,发现过期、越权或未验证内容时停止或缩小范围。

1. 什么是上下文污染

上下文污染指不应影响当前任务的内容进入模型输入,或必要信息被错误版本、摘要和噪声替代。常见来源包括:

text
已经失效但仍可检索的文档。
模型生成后未经核对的候选结论。
失败、超时或过期的工具结果。
与当前任务无关的历史消息。
权限范围外的资料。
互相冲突且没有优先级的系统规则。

模型可能把这些材料组织成流畅回答。语言是否自然不能证明上下文正确,因此审计点要放在调用前,而不是只检查最终文本。

2. 将上下文拆成可追踪的层

内容主要检查
系统规则职责、安全边界、输出和工具规则版本、所有者、冲突
主体与权限租户、角色、允许资料与工具当前授权是否有效
任务状态目标、阶段、已确认事实、待办状态证据与更新时间
检索证据当前问题需要的文档片段来源、版本、有效性、权限
会话历史相关消息和已核对阶段摘要是否仍与任务相关
当前请求用户问题和本轮动态参数是否完整、是否与旧规则冲突

分层不是为了增加模板,而是为了在出错时定位哪一层提供了错误输入。

3. 模型输出默认是候选内容

模型上一轮的回答不应自动进入“已确认事实”。任务状态可以使用:

text
verified:由当前权威资料、规则或人工确认。
unverified:有待核对的候选结论。
rejected:已经证明错误或不再采用。
expired:曾经有效,但不适用于当前版本或时间。

状态变化需要依据。模型重复同一结论不会让它从 unverified 变成 verified;只有来源核对、确定性工具结果或负责人的确认才能升级。

4. 检索必须先过滤再排序

RAG 请求的安全顺序是:

text
验证当前主体。

按租户、角色、状态和有效期过滤候选文档。

在允许范围内进行关键词或向量检索。

重排与当前问题相关的片段。

把来源和版本随片段送入上下文。

不能先检索全库,再依赖提示词告诉模型忽略越权结果。权限错误发生在资料进入请求时,即使最终回答没有逐字泄露,也不能视为通过。

5. 文档需要哪些元数据

元数据可以沿用现有内容系统,至少应能回答:

text
document_id:是哪份资料。
version:使用哪一版。
status:草稿、有效、失效或归档。
owner:谁负责内容。
permission_scope:哪些主体可以读取。
source_location:原始资料在哪里。
checksum 或受控版本标识:内容是否变化。

是否需要生效时间取决于业务。没有时间语义的代码说明不必强行添加日期;有明确有效期的制度或合同则必须保存并在检索前过滤。

6. 工具结果不要全部塞回历史

工具返回可分为:

原始证据

数据库结果、测试日志和合同原文需要可回查,但可以保存在受控外部存储;上下文只放任务需要的片段与引用标识。

结构化状态

退出码、失败测试、数据版本和操作状态适合进入任务记录。字段必须来自真实工具输出,不能由模型补写。

临时噪声

进度条、重复警告、已解决错误和大段调试信息通常不需要长期保留。删除噪声前要确认它不是失败证据。

7. 压缩历史时保留状态而非措辞

阶段摘要至少保留:

text
当前目标与范围。
已验证事实及来源。
未验证与已否决内容。
关键决策及理由。
外部操作和人工审批状态。
未解决问题、下一步和停止条件。

压缩后要检查是否把“计划执行”写成“已经执行”,把“模型推测”写成“已确认”,或遗漏权限和审批条件。原始证据仍保存在可回查位置,摘要不能成为唯一存档。

8. 在模型调用前生成上下文清单

应用可以在发送请求前生成不含敏感正文的清单:

text
请求、任务和主体标识。
系统规则版本。
权限范围。
任务状态版本。
检索文档 ID 与版本。
会话摘要版本。
工具结果引用。
未验证或过期内容数量。

发送前执行阻断检查:

text
是否存在权限范围外资料。
是否混入失效或未知版本。
verified 事实是否都能追到依据。
失败工具结果是否被标记为成功。
当前请求是否依赖未批准的外部操作。

阻断后应报告具体缺失项,不要自动扩大权限或改用旧资料。

9. 用故障注入验证审计

测试集应主动包含错误输入:

注入场景预期行为
新旧文档同时可检索只选择任务要求的有效版本
模型历史含错误结论不升级为 verified,并标记冲突
工具返回失败退出码任务状态保持失败或待处理
其他租户资料相似度更高权限过滤后不进入候选集
摘要声称操作已完成但无外部记录保持待验证并查询真实状态
关键来源缺失缩小结论或停止,不补全事实

检查模型最终回答之前,先检查请求清单和实际资料片段。这样能区分检索、状态、摘要和生成阶段的问题。

10. 结论与限制

上下文污染的治理重点不是让模型“更努力地记住”,而是让每次调用只接收当前任务需要、权限允许、版本有效且来源可追踪的内容。分层、可信状态、先过滤后检索、工具结果外置和调用前清单共同提供可审计边界。

本文只覆盖应用侧上下文组装,不替代身份系统、文档生命周期、日志安全或模型供应商的数据处理评估。元数据字段需要适配现有系统;没有真实请求清单、检索结果和工具证据时,也不能声称上下文已经干净。

标签:上下文工程RAG数据治理

推荐阅读

探索更多前沿洞察与行业干货。