Multi-Tenant Legal RAG Assistant
A legal-document retrieval system with two ingestion engines, hybrid search and per-session document isolation: a FastAPI backend behind a Cloudflare tunnel serving a static React SPA.
Retrieval fuses BM25 and dense-vector *ranks*, not scores. A cosine distance and a BM25 score share no scale, so any normalisation between them ends up tuned to one corpus and wrong on the next. The lexical leg exists because an embedding blurs exactly the rare token, “Section 302”, that made the question specific.
- FastAPI
- Celery
- Redis
- ChromaDB
- BM25
- +3
