How amith-ganta/tessera-multi-tenant-rag works
Tessera is a multi-tenant document question-answering API. Users authenticate, upload tenant documents for indexing, then ask questions that are routed through retrieval and answer generation; optional evaluation can run synchronously or through a judge queue. The map also includes documented A2A agents, tenant safeguards, streaming, and the quality gate. Request and subsystem links follow the README; sampled code confirms selected API, indexing, routing, and worker behavior, but not every internal call.
Main entry points: app.py FastAPI · orchestrator.py RAG Orchestrator · a2a_supervisor.py A2A Supervisor · redis_queue.py Judge Queue
Components 32
Access And API
- Streamlit UI
src/ui/app_streamlit_auth.py - FastAPI
src/api/app.py - User Authentication
src/auth/auth.py - A2A Service Auth
src/auth/service_auth.py - Tenant Governance
src/resilience/tenant_governance.py - Rate Limiting
src/resilience/rate_limiter.py
Knowledge And Answers
- Document Ingestion
src/rag/ingest.py - Tenant Vector Index
src/rag/retriever_dense.py - RAG Orchestrator
src/rag/orchestrator.py - Query Router
src/rag/router.py - Semantic Cache
src/cache/semantic_cache.py - Hybrid Retrieval
src/rag/retriever_hybrid.py - Dense Retrieval
src/rag/retriever_dense.py - Sparse Retrieval
src/rag/retriever_sparse.py - Reranking
src/rag/reranker.py - Answer Generation
src/rag/generator.py
Evaluation And Agents
- Answer Guard
src/rag/answer_guard.py - Evaluation Gate
evals/gate.py - Judge Queue
src/judge/redis_queue.py - Judge Worker
judge_worker.py - Judge Results
src/judge/judge_store.py - A2A Supervisor
src/orchestrator/a2a_supervisor.py - Drafter Agent
src/agents/drafter_agent.py - Judge Agent
src/agents/judge_agent.py - Agent Checkpoint
src/state/redis_checkpointer.py
Operations And State
- Redis
- RAG Quality Signals
src/observability/rag_signals.py - Analytics Log
src/rag/analytics.py - User Database
src/auth/auth.py
Other components
- User / Client
- LLM Provider
- Tavily Search
Connections 36
- User / Client → Streamlit UI: uses
- Streamlit UI → FastAPI: sends requests
- User / Client → FastAPI: queries / uploads
- FastAPI → User Authentication: authenticates
- User Authentication → User Database: reads / writes
- FastAPI → Rate Limiting: checks limits
- FastAPI → Tenant Governance: checks tenant limits
- FastAPI → Document Ingestion: indexes uploads
- Document Ingestion → Tenant Vector Index: builds index
- FastAPI → RAG Orchestrator: runs strategy
- RAG Orchestrator → Query Router: routes query
- Query Router → Tavily Search: searches current info
- RAG Orchestrator → Semantic Cache: checks cache
- RAG Orchestrator → Hybrid Retrieval: retrieves context
- Hybrid Retrieval → Dense Retrieval: retrieves vectors
- Hybrid Retrieval → Sparse Retrieval: retrieves terms
- Dense Retrieval → Tenant Vector Index: queries
- RAG Orchestrator → Reranking: reranks results
- RAG Orchestrator → Answer Generation: generates answer
- Answer Generation → LLM Provider: requests completion
- FastAPI → Answer Guard: guards answer
- Answer Guard → LLM Provider: evaluates / refines
- FastAPI → Judge Queue: enqueues evaluation
- Judge Queue → Redis: stores jobs
- Judge Worker → Judge Queue: claims jobs
- Judge Worker → LLM Provider: evaluates answer
- Judge Worker → Judge Queue: stores result
- FastAPI → Judge Results: reads evaluation
- FastAPI → A2A Supervisor: dispatches A2A
- A2A Supervisor → A2A Service Auth: authenticates calls
- A2A Supervisor → Drafter Agent: requests draft
- A2A Supervisor → Judge Agent: requests judgment
- A2A Supervisor → Agent Checkpoint: persists state
- FastAPI → Evaluation Gate: runs quality gate
- FastAPI → RAG Quality Signals: records metrics
- RAG Quality Signals → Analytics Log: writes signals