Architektur & Datenfluss
Wie eine Anirag-Query intern verarbeitet wird — vom User-Browser über Vercel-Edge bis zum LLM-Provider.
Eine RAG-Query bei Anirag durchläuft 8 dokumentierte Schritte. Alle Schritte werden im Audit-Log protokolliert (siehe Sicherheit).
Vereinfachter Request-Flow
[1] User Browser / API-Caller
│ TLS 1.3 + HSTS + Cert-Pinning
▼
[2] Vercel Edge (eu-fra-1)
│ CSRF-Token, Rate-Limit, Auth-Check
▼
[3] API-Gateway (Vercel Function)
│ Workspace-Resolution, Audit-Log-Eintrag
▼
[4] Embedding-Service
│ Question → 1024-d Vector (Voyage-3)
▼
[5] Qdrant (Railway eu-west1)
│ Hybrid-Search: BM25 + Vector
│ Re-Ranker (Cohere Rerank-3) → Top-K Chunks
▼
[6] Multi-LLM-Router
│ Provider-Auswahl (Claude / GPT / Mistral / Aleph Alpha)
│ Zero-Retention-Header gesetzt
▼
[7] LLM-Provider (EU-Region)
│ Generation mit Citations
▼
[8] Response-Assembly + Trace-Log
│ Answer + Citations + Cost + Trace-ID
▼
User
Komponenten im Detail
Frontend & Edge
- Vercel Edge in eu-fra-1 (Frankfurt) und eu-cdg-1 (Paris) als Failover.
- TLS 1.3 + HSTS + Cert-Pinning auf der API-Domain.
- Rate-Limiting via Upstash-Redis (sliding window, per-API-Key + per-IP).
Storage-Layer
- Postgres (Neon, eu-central-1) für Workspaces, Memberships, API-Keys, Audit-Logs.
- Qdrant (Railway, eu-west1) als Vector-DB. Open-Source (Apache-2.0), self-hostable für Sovereign-Kunden.
- Redis (Upstash, eu-de) als Cache + BullMQ-Queue für asynchrone Embedding-Jobs.
LLM-Provider
Alle Provider in EU-Region mit Zero-Retention-Vereinbarung:
- Anthropic Ireland (Claude Haiku 4.5, Sonnet 4.6, Opus 4.7)
- OpenAI Ireland (GPT-4-aktuell, GPT-4o-mini)
- Mistral (Frankreich) (Mistral Large, Mistral Medium)
- Aleph Alpha (Heidelberg, DE) (Pharia-1, Luminous Base)
- Llama-EU (für On-Prem-Deployments)
Was im Trace gespeichert wird
Jede Query erzeugt einen Trace, abrufbar via GET /v1/traces/{id}:
- Original-Frage
- Kandidaten-Chunks mit Scores (BM25 + Vector + Hybrid)
- Verworfene Chunks (mit Begründung)
- Re-Ranker-Output
- Final-Prompt ans LLM
- LLM-Response (raw + parsed)
- Citations + Confidence-Scores
- Latency-Breakdown (retrieval, rerank, generation, total)
- Cost-Breakdown (Embedding-Tokens, LLM-Input-Tokens, LLM-Output-Tokens, EUR)
Performance-Charakteristiken
Stand Q2/2026, gemessen über 30 Tage in eu-fra-1:
- Embedding-only: p50 = 60 ms, p95 = 140 ms, p99 = 180 ms
- RAG-Query (4 Chunks + Claude Haiku): p50 = 380 ms, p95 = 720 ms, p99 = 1.2 s
- RAG-Query (4 Chunks + Claude Sonnet): p50 = 580 ms, p95 = 980 ms, p99 = 1.8 s
- Streaming-First-Token: p50 = 220 ms
Public-Latency-Dashboard: status.anirag.io.
Workspace-Isolation
Jeder Workspace hat einen physisch getrennten Qdrant-Collection-Index. Cross-Workspace-Suche ist technisch ausgeschlossen — auch für Admin-Tokens. Die Isolation gilt:
- Auf Vector-Index-Ebene (eigene Collection pro Workspace)
- Auf Postgres-Row-Level (RLS-Policies pro Workspace)
- Auf Cache-Ebene (Redis-Key-Prefix pro Workspace)
- Auf LLM-Prompt-Ebene (System-Prompts referenzieren nur Workspace-internes Wissen)
Für Branchen mit § 203-StGB-Pflicht (Klinik, Kanzlei) ist die Isolation auf Mandanten-Ebene weiter granulierbar via mandant_id-Filter.