How mia-platform/ai-rag-template works
This backend serves RAG chat and document ingestion. Chat requests enter the API, retrieve similar MongoDB Atlas documents, and pass query, history, and context through the assistant chain to an LLM; ingestion accepts URLs or uploaded files, parses and chunks text, then writes embeddings to the vector store. It also exposes operational health and Prometheus metrics, and updates the vector index at startup. The README documents these capabilities; some implementation details are unsampled, so their internal links are omitted.
Main entry points: app.py FastAPI application · assistant_service.py Assistant service · embedding_service.py Embedding service · embeddings_handler.py Embedding endpoints
Components 27
API and operations
- FastAPI application
src/app.py - Chat endpoint
src/api/controllers/chat_completions/chat_completions_handler.py - Embedding endpoints
src/api/controllers/embeddings/embeddings_handler.py - Health endpoints
src/api/controllers/core - Metrics endpoint
src/api/controllers/core/metrics/metrics_handler.py - Request context
src/api/middlewares/app_context_middleware.py
RAG chat
- Assistant service
src/application/assistant/assistant_service.py - Assistant chain
src/application/assistant/chains/assistant_chain.py - Prompt builder
src/application/assistant/chains/assistant_prompt.py - Document combine chain
src/application/assistant/chains/combine_docs_chain.py - Vector retriever
src/application/assistant/chains/retriever_chain.py
Document ingestion
- Embedding service
src/application/embeddings/embedding_service.py - File parser
src/application/embeddings/file_parser/file_parser.py - Document chunker
src/application/embeddings/document_chunker.py - Hyperlink parser
src/application/embeddings/hyperlink_parser.py - Vector index updater
src/lib/vector_search_index_updater.py
Models and infrastructure
- Application context
src/context.py - Service configuration
src/configurations/service_model.py - Configuration loader
src/configurations/configuration.py - Embedding provider
src/infrastracture/embeddings_manager/embeddings_manager.py - LLM provider
src/infrastracture/llm_manager/llm_manager.py - Prometheus metrics
src/infrastracture/metrics_manager/metrics_manager.py
Other components
- Chat or ingest client
- MongoDB Atlas vector store
- LLM API
- Website
- Uploaded documents
Connections 32
- Chat or ingest client → FastAPI application: sends requests
README.md - FastAPI application → Chat endpoint: registers route
src/app.py - FastAPI application → Embedding endpoints: registers route
src/app.py - FastAPI application → Health endpoints: registers routes
src/app.py - FastAPI application → Metrics endpoint: registers route
src/app.py - FastAPI application → Request context: installs
src/app.py - Chat endpoint → Assistant service: invokes
src/api/controllers/chat_completions/chat_completions_handler.py - Assistant service → Assistant chain: invokes
src/application/assistant/assistant_service.py - Assistant service → Vector retriever: configures
src/application/assistant/assistant_service.py - Assistant service → Prompt builder: builds prompt
src/application/assistant/assistant_service.py - Assistant service → Document combine chain: configures
src/application/assistant/assistant_service.py - Assistant service → LLM provider: creates model
src/application/assistant/assistant_service.py - Assistant chain → Vector retriever: retrieves documents
src/application/assistant/chains/assistant_chain.py - Vector retriever → MongoDB Atlas vector store: similarity searches
src/application/assistant/chains/retriever_chain.py - Assistant service → MongoDB Atlas vector store: returns references
README.md - LLM provider → LLM API: calls model
- Embedding endpoints → Embedding service: starts generation
src/api/controllers/embeddings/embeddings_handler.py - Embedding endpoints → File parser: parses upload
src/api/controllers/embeddings/embeddings_handler.py - Embedding service → Document chunker: chunks text
src/application/embeddings/embedding_service.py - Embedding service → Hyperlink parser: extracts links
src/application/embeddings/embedding_service.py - Embedding service → Embedding provider: creates embeddings
src/application/embeddings/embedding_service.py - Embedding provider → MongoDB Atlas vector store: writes vectors
- Embedding service → MongoDB Atlas vector store: stores documents
src/application/embeddings/embedding_service.py - Website → Embedding service: provides pages
README.md - Uploaded documents → Embedding endpoints: uploads content
README.md - FastAPI application → Vector index updater: updates index
src/app.py - Vector index updater → MongoDB Atlas vector store: creates or updates index
README.md - FastAPI application → Configuration loader: loads configuration
src/app.py - Configuration loader → Service configuration: validates configuration
src/configurations/configuration.py - FastAPI application → Application context: creates context
src/app.py - Request context → Application context: provides request context
src/api/middlewares/app_context_middleware.py - Metrics endpoint → Prometheus metrics: exposes metrics
src/api/controllers/core/metrics/metrics_handler.py