生产级检索增强生成(RAG)与知识系统
权限过滤、租户隔离与知识治理
学习目标
- 理解检索增强生成(RAG)权限问题为什么不能交给模型处理。
- 能设计文档级和片段级权限字段。
- 知道知识治理需要 owner、版本和过期策略。
核心概念
检索增强生成(RAG)的权限风险比普通搜索更隐蔽。用户可能没有看到原文,但模型答案可能泄露原文中的结论、数字或内部政策。因此权限过滤必须发生在上下文进入模型之前。
权限可以在多个层次实现:租户隔离、数据源权限、文档权限、片段权限和字段脱敏。最保守的策略是在检索查询中带上租户和权限条件,再在返回片段后做二次过滤。
知识治理解决的是“这份材料是否还应该被回答”。每份知识最好有 owner、source、version、effective_at、expires_at、sensitivity 和 deletion_policy。否则系统会把过期文档当成长期事实。
示例与拆解
文档片段可以带上这样的元数据:
1{ 2 "chunk_id": "policy_enterprise_refund_2026_01", 3 "tenant_id": "acme", 4 "source": "refund-policy.md", 5 "acl": ["support", "finance_admin"], 6 "sensitivity": "internal", 7 "effective_at": "2026-01-01", 8 "expires_at": "2026-12-31", 9 "owner": "finance_ops" 10}
检索时不能只按语义相似度:
1where tenant_id = current_tenant 2and acl intersects current_user_roles 3and effective_at <= now 4and (expires_at is null or expires_at > now)
这会降低召回范围,但换来明确的权限边界。
常见误区
- 误区一:先检索全部,再让模型“不要说”。模型不该看到无权资料。
- 误区二:只按文档过滤。一个文档里可能同时有公开段落和敏感段落。
- 误区三:没有过期策略。过期知识比没有知识更危险,因为答案看起来有依据。
小练习
为一个企业知识库设计片段 metadata,至少包含租户、来源、权限、敏感级别、owner、有效期和删除策略。
实操检查点
写 3 个访问场景,并判断每个用户能看到哪些片段。
1用户:support_agent 2问题:企业版退款规则是什么? 3允许片段:support 可见、同租户、未过期退款政策 4禁止片段:finance_admin only 的内部赔付上限
如果你无法解释禁止原因,权限模型还不够清楚。
随堂测验
完成本章测验,重点检查你是否能把权限控制放在程序侧。
本章总结
检索增强生成权限过滤必须在模型看到上下文之前完成。知识治理让系统知道哪些材料有效、谁负责、何时过期和如何删除。
下一步学习指引
下一章学习混合检索、重排和查询改写,用更稳的召回链路提升答案质量。