multi-format document indexing with recursive folder scanning
Automatically discovers and processes documents across multiple formats (.pdf, .xls, .docx, .txt, .md, .csv) from a configured local directory tree, extracting text content and preparing it for embedding generation. Uses recursive folder traversal to handle nested directory structures without manual file selection, enabling hands-off indexing of large document collections.
Unique: Implements recursive folder scanning with automatic format detection and unified text extraction pipeline, eliminating need for manual file selection or format-specific workflows — all documents in a directory tree are indexed in a single operation without user intervention
vs alternatives: More comprehensive than Pinecone or Weaviate (which require manual document uploads) and more privacy-preserving than cloud RAG solutions like LangChain Cloud, since all processing stays on-premises
sentence-transformer embedding generation with configurable models
Generates dense vector embeddings for document chunks using Sentence Transformers (BAAI models by default), converting text into high-dimensional vectors suitable for semantic similarity search. Supports model selection via environment configuration, allowing users to choose embeddings optimized for their domain (e.g., multilingual, domain-specific fine-tuned models) without code changes.
Unique: Provides environment-variable-based model selection (EMBEDDING_MODEL_ID) allowing runtime switching between Sentence Transformer models without code changes, combined with configurable embedding dimensions (EMBEDDING_SIZE) for memory/accuracy tradeoffs — more flexible than hardcoded embedding pipelines
vs alternatives: More privacy-preserving than OpenAI embeddings API (no data leaves premises) and more cost-effective than cloud embedding services for large-scale indexing, though slower than GPU-accelerated cloud solutions
qdrant vector database storage and semantic search
Stores generated embeddings in Qdrant vector database and performs approximate nearest neighbor (ANN) search to retrieve semantically similar documents for a given query. Uses vector similarity metrics (cosine, Euclidean) to rank documents by relevance without keyword matching, enabling natural language search across document collections.
Unique: Integrates Qdrant as the vector store backend with configurable similarity metrics and optional reranking pipeline, providing both fast approximate search and relevance refinement — architecture separates retrieval (ANN) from ranking (reranker) for modularity
vs alternatives: More privacy-preserving than Pinecone (fully on-premises) and more flexible than Weaviate (supports multiple embedding models and rerankers), though requires manual Qdrant deployment vs managed vector databases
semantic reranking with baai models for result refinement
Applies a second-stage ranking model (typically BAAI cross-encoder) to refine the top-k results from vector search, re-scoring documents based on semantic relevance to the original query. This two-stage retrieval pattern (retrieve-then-rerank) improves precision by filtering out false positives from the initial ANN search without requiring full dataset re-scoring.
Unique: Implements two-stage retrieval (ANN + cross-encoder reranking) as an optional pipeline stage, allowing users to trade latency for precision — reranker is applied only to top-k results, avoiding full-dataset re-scoring cost
vs alternatives: More cost-effective than reranking all documents and more effective than single-stage vector search alone; similar to Cohere's reranking API but fully on-premises with no API calls or data transmission
multi-llm backend integration with pluggable providers
Abstracts LLM interaction behind a provider interface supporting Ollama (local), OpenAI (ChatGPT), and Anthropic (Claude) without code changes. Uses environment configuration to select the active LLM backend, enabling users to switch between fully local inference and cloud LLMs based on deployment mode, privacy requirements, or cost considerations.
Unique: Implements provider abstraction pattern allowing runtime LLM selection via environment variables (LLM_PROVIDER, OLLAMA_BASE_URL, OPENAI_API_KEY, ANTHROPIC_API_KEY) without code changes — supports three distinct deployment modes (fully local, hybrid with OpenAI, hybrid with Anthropic) from single codebase
vs alternatives: More flexible than LangChain (which requires code changes to swap providers) and more privacy-preserving than cloud-only solutions like OpenAI's RAG; enables cost optimization by using local Ollama for development and ChatGPT for production
mcp server protocol implementation for tool integration
Exposes Minima's RAG capabilities as a Model Context Protocol (MCP) server, allowing external LLM clients (Claude Desktop, other MCP-compatible applications) to invoke document search and retrieval as remote tools. Implements MCP's request-response protocol for tool discovery, invocation, and result streaming without requiring direct API integration.
Unique: Implements full MCP server protocol stack enabling Claude Desktop and other MCP clients to invoke RAG search as a remote tool — architecture separates MCP transport layer from core RAG logic, allowing tool-agnostic document retrieval
vs alternatives: More seamless than REST API integration (MCP handles tool discovery and schema automatically) and more privacy-preserving than cloud RAG tools, though requires MCP client support vs universal HTTP API compatibility
web ui and electron desktop application interfaces
Provides dual user interfaces for document search and RAG interaction: a web-based UI (accessible via browser) and a native Electron desktop application. Both interfaces connect to the same backend services (indexer, vector database, LLM) and support chat-style interaction with retrieved context, enabling non-technical users to search documents without CLI or API knowledge.
Unique: Provides parallel web and Electron interfaces sharing the same backend, allowing users to choose between browser-based access and native desktop application — both support chat-style RAG interaction with retrieved context display
vs alternatives: More user-friendly than CLI-only tools like LlamaIndex and more accessible than API-only solutions; Electron app provides offline-capable desktop experience vs web-only competitors
environment-based configuration management
Centralizes all system configuration through environment variables (.env file), including document paths, embedding models, vector database endpoints, LLM providers, and API keys. Eliminates need for code changes when switching deployment modes, models, or providers — configuration is purely declarative and environment-specific.
Unique: Uses environment variables for all configuration (LOCAL_FILES_PATH, EMBEDDING_MODEL_ID, EMBEDDING_SIZE, LLM_PROVIDER, OLLAMA_BASE_URL, OPENAI_API_KEY, ANTHROPIC_API_KEY) enabling complete deployment flexibility without code changes — supports three distinct deployment modes from single codebase via configuration alone
vs alternatives: Simpler than YAML/JSON config files for containerized deployments and more flexible than hardcoded defaults; follows 12-factor app principles for cloud-native applications
+2 more capabilities