用Spring AI实现权限感知RAG检索器:租户过滤、文档ACL、缓存隔离与引用校验完整实战
文章摘要本文实现一个可用于企业项目的权限感知RAG检索服务。系统不允许业务直接调用VectorStore.similaritySearch(),而是要求所有检索先解析可信AccessContext,构造租户与文档状态过滤条件,在向量数据库中完成粗粒度安全过滤,再通过文档ACL服务进行用户、角色和组权限复核。完整项目还会处理混合检索、Reranker、父文档补全、权限哈希、缓存隔离、稳定Evidence ID、引用详情鉴权、安全审计和跨租户蜜罐测试。示例以Spring Boot和Spring AI模块化RAG能力为基础,VectorStore可以替换为Qdrant、pgvector、Milvus或其他支持元数据过滤的实现。一、项目目标系统需要满足:1. tenantId只能来自认证上下文 2. 向量检索必须强制tenant过滤 3. 只检索EFFECTIVE版本文档 4. 支持租户内文档级ACL 5. 所有召回通道继承同一AccessContext 6. Reranker不得接收未授权候选 7. 父文档补全再次校验tenant 8. 缓存按权限哈希隔离 9. Evidence ID稳定可追踪 10. 引用详情按当前权限再次鉴权 11. 越权候选触发安全告警 12. 自动化测试覆盖跨租户攻击二、总体架构┌───────────────