Core Concepts
Tenant Isolation
Every tenant in Remem gets hard isolation across all storage layers:| Layer | Isolation Method |
|---|---|
| PostgreSQL | Row-Level Security (RLS) policies |
| Qdrant | Dedicated collection per tenant |
| S3 | Tenant-prefixed object keys |
| Encryption | Per-tenant Data Encryption Key (DEK) |
Encryption Model
Remem uses envelope encryption with application-level field encryption:- Content, titles, and metadata are stored as ciphertext in PostgreSQL
- S3 objects use client-side encryption before upload
- Qdrant vectors contain only embeddings and minimal non-sensitive metadata
- Logs are scrubbed to prevent sensitive data leakage
Crypto-Shredding
When a tenant requests data deletion, Remem can destroy the DEK, making all encrypted data permanently unrecoverable — even if database backups are retained.Processing Pipeline
When a document is ingested, it flows through an async pipeline:job_id immediately. Processing typically completes within seconds.
Query Modes
Fast Mode (mode: "fast")
- Latency:
<500ms(typically 200-600ms) - Method: Hybrid search combining vector similarity (Qdrant) and BM25 keyword matching
- Results: Ranked chunks with Reciprocal Rank Fusion (RRF)
- No LLM call — pure retrieval
Rich Mode (mode: "rich")
- Latency:
<5scold,<3scached - Method: Query expansion → parallel retrieval → RRF fusion → LLM reranking → LLM synthesis (all using Grok 4.1 Fast via xAI API)
- Results: Reranked chunks plus optional natural language
synthesisfield - Budget-aware: Skips reranking/synthesis if time budget exhausted
- Caching: Expansion and rerank results cached in Redis for 15 minutes
Filtering
Query results can be filtered by metadata assigned during classification:| Filter | Type | Example |
|---|---|---|
categories | List[str] | ["meeting_notes", "planning"] |
tags_any | List[str] | ["q1", "priorities"] |
tags_all | List[str] | ["urgent", "approved"] |
tags_prefix | str | "project-" |
sensitivity | List[str] | ["public", "internal"] |
date_from / date_to | str (ISO 8601) | "2026-01-01" |
source_types | List[str] | ["email", "note"] |
storage_types | List[str] | ["document", "chat_history"] |
languages | List[str] | ["en", "fr"] |
has_extractable_data | bool | true |
classifier_models | List[str] | ["grok-4.1-fast"] |