Create multitenancy
AutoRAG supports multitenancy by letting you segment content by tenant, so each user, customer, or workspace can only access their own data. This is typically done by organizing documents into per-tenant folders and applying metadata filters at query time.
When uploading files to R2, structure your content by tenant using unique folder paths.
Example folder structure:
Directorycustomer-a
Directorylogs/
- …
Directorycontracts/
- …
Directorycustomer-b
Directorycontracts/
- …
When indexing, AutoRAG will automatically store the folder path as metadata under the folder
attribute. It is recommended to enforce folder separation during upload or indexing to prevent accidental data access across tenants.
To ensure a tenant only retrieves their own documents, apply a folder
filter when performing a search.
Example using Workers Binding:
const response = await env.AI.autorag("my-autorag").search({ query: "When did I sign my agreement contract?", filters: { type: "eq", key: "folder", value: `customer-a/contracts/`, },});
To filter across multiple folders, or to add date-based filtering, you can use a compound filter with an array of comparison filters.
While an eq
filter targets files at the specific folder, you'll often want to retrieve all documents belonging to a tenant regardless if there are files in its subfolders. For example, all files in customer-a/
with a structure like:
Directorycustomer-a
- profile.md
Directorycontracts
Directoryproperty
- contract-1.pdf
To achieve this starts with behavior, use a compound filter like:
filters: { type: "and", filters: [ { type: "gt", key: "folder", value: "customer-a//", }, { type: "lte", key: "folder", value: "customer-a/z", }, ], },
This filter identifies paths starting with customer-a/
by using:
- The
and
condition to combine the effects of thegt
andlte
conditions. - The
gt
condition to include paths greater than the/
ASCII character. - The
lte
condition to include paths less than and including the lower casez
ASCII character.
This filter captures both files profile.md
and contract-1.pdf
.
Was this helpful?
- Resources
- API
- New to Cloudflare?
- Products
- Sponsorships
- Open Source
- Support
- Help Center
- System Status
- Compliance
- GDPR
- Company
- cloudflare.com
- Our team
- Careers
- 2025 Cloudflare, Inc.
- Privacy Policy
- Terms of Use
- Report Security Issues
- Trademark
-