How ankitkumarai/ragfusion-multimodel-private-rag--backend works
This is a private, owner-scoped multimodal RAG application exposed through FastAPI and a CLI. Its main workflow accepts an authenticated user’s upload, stores the original and metadata, extracts and chunks supported content, embeds it into Qdrant, then retrieves authorized chunks for grounded answer generation. The README also documents authentication, conversation history, document lifecycle and recovery, profile photos, evaluation, and local or Supabase storage. Edges are limited to README statements and shown source references; unsampled subsystem wiring is left unasserted where it cannot be verified.
Main entry points: documents/service.py Document lifecycle · ingestion.py Ingestion orchestration · app.py FastAPI · rag/service.py RAG service
Components 25
API and identity
- FastAPI
src/multimodal_private_rag/api/app.py - Authentication
src/multimodal_private_rag/auth/service.py - User identity
src/multimodal_private_rag/auth/models.py - Chat routes
src/multimodal_private_rag/api/routers/chat.py - Conversation history
src/multimodal_private_rag/conversations/service.py - Document routes
src/multimodal_private_rag/api/routers/documents.py - Profile photos
src/multimodal_private_rag/auth/photos.py
Document lifecycle
- Document lifecycle
src/multimodal_private_rag/documents/service.py - Ingestion orchestration
src/multimodal_private_rag/rag/ingestion.py - Format extraction
src/multimodal_private_rag/ingestion - Chunking
src/multimodal_private_rag/ingestion/chunking.py
Retrieval and answers
- RAG service
src/multimodal_private_rag/rag/service.py - Candidate retrieval
src/multimodal_private_rag/retrieval/retriever.py - Cross-encoder reranking
src/multimodal_private_rag/reranking/fastembed.py - Context selection
src/multimodal_private_rag/rag/context.py - Answer generation
src/multimodal_private_rag/generation/gemini.py
Persistence and providers
- Embeddings
src/multimodal_private_rag/embeddings/fastembed.py - Qdrant vectors
src/multimodal_private_rag/vectorstore/qdrant.py - Document metadata
src/multimodal_private_rag/documents/sqlite.py - Original-file storage
src/multimodal_private_rag/storage/base.py - Supabase Storage
src/multimodal_private_rag/storage/supabase.py - PostgreSQL
src/multimodal_private_rag/persistence/database.py
Operations and evaluation
- RAG evaluation
src/multimodal_private_rag/evaluation - Lifecycle recovery
src/multimodal_private_rag/operations.py
Other components
- User
Connections 28
- User → FastAPI: uses API
README.md - FastAPI → Chat routes: registers routes
src/multimodal_private_rag/api/app.py - FastAPI → Document routes: registers routes
src/multimodal_private_rag/api/app.py - FastAPI → Authentication: registers routes
src/multimodal_private_rag/api/app.py - Authentication → User identity: establishes identity
src/multimodal_private_rag/api/routers/auth.py - Chat routes → RAG service: requests answers
- Chat routes → Conversation history: uses history
- Document routes → Document lifecycle: handles documents
- Document lifecycle → Original-file storage: stores originals
README.md - Document lifecycle → Document metadata: persists metadata
- Document lifecycle → Qdrant vectors: deletes vectors
src/multimodal_private_rag/documents/service.py - Document lifecycle → Ingestion orchestration: processes uploads
src/multimodal_private_rag/documents/service.py - Ingestion orchestration → Format extraction: loads content
src/multimodal_private_rag/rag/ingestion.py - Ingestion orchestration → Chunking: chunks content
src/multimodal_private_rag/rag/ingestion.py - Ingestion orchestration → Embeddings: embeds chunks
src/multimodal_private_rag/rag/ingestion.py - Ingestion orchestration → Qdrant vectors: upserts vectors
src/multimodal_private_rag/rag/ingestion.py - RAG service → Candidate retrieval: retrieves candidates
src/multimodal_private_rag/rag/service.py - Candidate retrieval → Embeddings: embeds query
src/multimodal_private_rag/retrieval/retriever.py - Candidate retrieval → Qdrant vectors: searches vectors
src/multimodal_private_rag/retrieval/retriever.py - Candidate retrieval → Cross-encoder reranking: reranks candidates
src/multimodal_private_rag/retrieval/retriever.py - RAG service → Context selection: selects context
src/multimodal_private_rag/rag/service.py - RAG service → Answer generation: generates answer
src/multimodal_private_rag/rag/service.py - Original-file storage → Supabase Storage: optional adapter
README.md - Document lifecycle → Profile photos: separate from RAG
README.md - User → RAG evaluation: runs evaluation
README.md - Lifecycle recovery → Document metadata: reconciles lifecycle
README.md - Lifecycle recovery → Qdrant vectors: reconciles integrity
README.md - PostgreSQL → Document metadata: stores production metadata
README.md