21 / 28
Как реализовать ACL filtering и tenant isolation в RAG retrieval: per-document permissions, row-level security, namespaces?
ACL в RAG — это про утечку данных, не про UX. Три pattern'а: (1) metadata filter в vector DB (filter={"user_ids":{"$in":[uid]}} в Qdrant/Pinecone/pgvector), (2) Row-Level Security в Postgres + pgvector (CREATE POLICY + SET app.current_user_id), (3) namespace isolation (Pinecone namespaces, Qdrant collections per tenant, Weaviate multi-tenancy). Главное правило — filter then rank (pre-filter), никогда post-filter: post-filtering утекает в latency, recall и при выборке top_k=10 может вернуть 0 разрешённых документов. GDPR / SOC2 / HIPAA — обязательны.