RAG 不能只按相似度检索:元数据过滤与租户隔离 📅 2026/7/22 4:27:52 纯向量检索只回答“哪些内容和问题最像”却不回答“这些内容是否允许当前用户查看”。时间范围、内容类别、租户归属和访问权限都属于硬约束如果检索管线只看相似度轻则引用过期或错误类别的资料重则把别的租户或无权文档送进模型上下文。一、权限必须在检索阶段执行不要指望模型在生成阶段自行忽略无权内容。一旦敏感片段进入上下文边界已经失守。每个文档分块都应携带租户 ID、来源文档 ID、版本、时间戳、类别和访问控制信息检索时把这些字段作为强制过滤条件。二、前过滤和后过滤解决不同问题前过滤是在计算相似度之前先缩小候选集例如只在当前租户、有效时间范围和允许类别中检索。它能避免禁止内容进入候选集也能减少后续排序范围。后过滤是在召回后逐条调用授权服务处理用户级、用户组级或资源关系这类细粒度规则。单独依赖后过滤容易出现一个问题候选结果大量被剔除后可用召回不足。因此更稳妥的组合是先做租户和类别等粗粒度前过滤再由授权服务完成细粒度后过滤。在实现过滤策略时可以用生产就绪自查表核对租户隔离、权限继承和检索过滤确认硬约束没有遗漏。三、多租户边界要在索引层做硬隔离租户 ID 不应只是一个“可选过滤字段”。对于高风险数据可以使用独立分区、命名空间或索引让一个租户的查询从物理或逻辑上无法触碰另一个租户的向量。应用层还要从已验证的会话身份生成过滤条件不能接受模型或用户文本直接指定租户范围。上线前至少验证四类场景无权限文档不能召回跨租户查询返回空结果权限变更能及时传播到索引检索日志能够说明使用了哪些过滤条件和授权结果。RAG 的权限问题不是相关性调参问题而是访问控制问题。只有让源系统权限、索引隔离和检索过滤保持一致模型生成才建立在可信的数据边界上。