How abdessamadr/bank-rag-mcp works
Bank RAG MCP extracts bank annual reports, indexes page-aware chunks, retrieves relevant passages, and generates French answers with source citations. The main workflow is PDF extraction → chunking → embedding and storage → hybrid retrieval → answer generation. Evaluation and vector-store auditing are additional capabilities. The README documents an MCP server, but no corresponding source directory appears in the supplied tree, so that integration is shown as unverified; the excerpts do not establish a runtime connection to it.
Main entry points: retriever.py Hybrid retriever · answer_generator.py Answer generator · data Chroma vector store · embedder.py Embedding indexer
Components 18
Document ingestion
- PDF extraction
extract_pdfs.py - Extracted pages
- Page chunking
src/chunking/chunker.py - Page-aware chunks
Search and storage
- Embedding indexer
src/ingestion/embedder.py - E5 embeddings
- Chroma vector store
data - Hybrid retriever
src/retrieval/retriever.py
Answer generation
- Answer generator
src/generation/answer_generator.py - Cited answer
src/generation/answer_generator.py - MCP search server
Evaluation and audit
- Retriever evaluation
src/retrieval/evaluate_retriever.py - Embedding benchmark
src/evaluation/benchmark_embeddings.py - Model configurations
src/evaluation/model_config.py - Vector-store audit
src/audit/audit_vectorstore.py
Other components
- Questioner
- Bank report PDFs
- Ollama LLM
Connections 18
- Questioner → Answer generator: asks question
src/generation/answer_generator.py - Bank report PDFs → PDF extraction: provides PDFs
extract_pdfs.py - PDF extraction → Extracted pages: writes pages
extract_pdfs.py - Extracted pages → Page chunking: reads pages
src/chunking/chunker.py - Page chunking → Page-aware chunks: writes chunks
src/chunking/chunker.py - Page-aware chunks → Embedding indexer: loads chunks
src/ingestion/embedder.py - Embedding indexer → E5 embeddings: encodes passages
src/ingestion/embedder.py - Embedding indexer → Chroma vector store: indexes chunks
src/ingestion/embedder.py - Hybrid retriever → E5 embeddings: encodes queries
src/retrieval/retriever.py - Hybrid retriever → Chroma vector store: queries and reads
src/retrieval/retriever.py - Answer generator → Hybrid retriever: searches passages
src/generation/answer_generator.py - Answer generator → Ollama LLM: sends context
src/generation/answer_generator.py - Answer generator → Cited answer: returns citations
src/generation/answer_generator.py - Retriever evaluation → Hybrid retriever: evaluates vectors
src/retrieval/evaluate_retriever.py - Embedding benchmark → Model configurations: loads settings
src/evaluation/benchmark_embeddings.py - Embedding benchmark → Chroma vector store: builds and queries
src/evaluation/benchmark_embeddings.py - Vector-store audit → Chroma vector store: checks collection
src/audit/audit_vectorstore.py - MCP search server → Hybrid retriever: may expose search