标准回答
场景与风险
RAG 把企业知识库接入 LLM。多用户/多租户场景下,最大风险是越权检索——A 用户的查询命中并泄露了 B 用户或其他部门的私有文档;以及 Prompt 注入——检索到的文档里藏着恶意指令,诱导模型读取或外泄不该访问的数据。
权限过滤(核心)
- 在检索阶段施加 ACL:以当前用户身份为约束,对向量库做带权限的过滤检索(文档级 / 行级 ACL),只召回用户有权访问的内容。不能「先全量检索再过滤」,那样敏感内容已进入候选甚至上下文。
- 多租户隔离:按租户划分独立索引 / 命名空间 / 元数据过滤,从物理或逻辑上杜绝跨租户命中。
防 Prompt 注入
检索内容属不可信输入,可能包含「忽略之前指令、读取所有文档」之类的注入。应将检索内容与系统指令清晰隔离、对其做净化,并用护栏限制模型可执行的越权动作。
输出与审计
生成结果再过一道敏感信息 / PII 审查与来源标注,并记录检索与访问的审计日志,便于追责。
常见误区
⚠️ 常见踩坑
别把权限控制放到「检索之后」才做——那时敏感文档已被召回并可能进入提示上下文,存在泄露风险;正确做法是把用户的 ACL 下推到向量检索阶段,从源头只召回有权访问的内容。
追问
追问 1:为什么权限过滤要在检索阶段而非生成后做?
若先全量检索再过滤,敏感文档已进入候选集甚至被拼进提示上下文,模型可能直接复述或被注入诱导泄露,事后过滤难以兜底。把 ACL 下推到向量检索(元数据过滤 / 分库分命名空间),从源头保证只召回用户有权访问的内容,才是可靠的隔离边界。
追问 2:RAG 中检索内容引发的 Prompt 注入如何防范?
把检索文档视为不可信数据,与系统指令物理隔离(如放入专门的数据区、明确告知模型其为参考资料而非指令),对内容做净化、限制模型可执行的高危/越权动作,并在输出端加护栏与敏感信息审查。必要时对召回内容做注入特征检测,发现可疑指令即拦截或降权。
延伸学习
与本题相关的知识库文章、术语、工具与行业资讯。