{"data":{"slug":"bjornmelin-docmind-ai-llm","name":"docmind-ai-llm","tagline":"DocMind AI is a powerful, open-source Streamlit application leveraging LlamaIndex, LangGraph, and local Large Language Models (LLMs) via Ollama, LMStudio, llama.cpp, or vLLM for advanced document anal","github_url":"https://github.com/BjornMelin/docmind-ai-llm","owner":"BjornMelin","repo":"docmind-ai-llm","owner_avatar_url":"https://avatars.githubusercontent.com/u/48079573?v=4","primary_language":"Python","stars":137,"forks":26,"topics":["ai-agents","document-analysis","hybrid-search","langchain","langgraph-supervisor-py","llama-cpp","llamacpp","lmstudio","local-llm","multimodal-embeddings","ollama","private-ai-agents","python","qdrant","sentence-transformers","streamlit","torch","transformers","vllm"],"archived":false,"github_pushed_at":"2026-07-15T00:25:34+00:00","maintenance_label":"Very active","url":"https://www.graphcanon.com/tools/bjornmelin-docmind-ai-llm","markdown_url":"https://www.graphcanon.com/tools/bjornmelin-docmind-ai-llm.md","api_url":"https://www.graphcanon.com/api/graphcanon/tools/bjornmelin-docmind-ai-llm","graph_url":"https://www.graphcanon.com/api/graphcanon/graph?tool=bjornmelin-docmind-ai-llm","description":"DocMind AI is a powerful, open-source Streamlit application leveraging LlamaIndex, LangGraph, and local Large Language Models (LLMs) via Ollama, LMStudio, llama.cpp, or vLLM for advanced document analysis. Analyze, summarize, and extract insights from a wide array of file formats, securely and privately, all offline.","homepage_url":"https://github.com/BjornMelin/docmind-ai-llm","license":"MIT","open_issues":25,"watchers":5,"ai_summary":null,"readme_excerpt":"### Installation\n\n1. **Clone the repository:**\n\n   ```bash\n   git clone https://github.com/BjornMelin/docmind-ai-llm.git\n   cd docmind-ai-llm\n   ```\n\n2. **Install dependencies:**\n\n   ```bash\n   uv sync --frozen\n   ```\n\n   Install the optional observability extra for LlamaIndex OpenTelemetry instrumentation:\n\n   ```bash\n   uv sync --frozen --extra observability\n   ```\n\n   Searchable-PDF export is POSIX-only (Linux, macOS, or WSL2; native Windows\n   is unsupported) and requires the OCRmyPDF and Tesseract executables:\n\n   ```bash\n   uv sync --frozen --extra searchable-pdf\n   ```\n\n   Prefetch the default retrieval and parser artifacts, then verify the parser\n   manifests:\n\n   ```bash\n   uv run python tools/models/pull.py \\\n     --all \\\n     --cache_dir ./models_cache \\\n     --parser-defaults \\\n     --parser-cache-dir ./cache/models\n   uv run python scripts/parser_health.py --check\n   ```\n\n   Regenerate the schema 3 parser benchmark artifact after the code is frozen:\n\n   ```bash\n   uv run python scripts/benchmark_parsing.py \\\n     --generate-minimal-fixtures \\\n     --repeat 3 \\\n     --output docs/benchmarks/parser-runtime-validation.json\n   ```\n\n   The checked-in schema 3 artifact is bound to its clean source commit and\n   runtime identity. The validation record, current baseline, and measurement\n   limits live in `docs/developers/parser-runtime-validation.md`.\n\n   Start loopback-only Qdrant and run the system gate when you need end-to-end validation:\n\n   ```bash\n   ./scripts/start_qdrant_local.sh\n   DOCMIND_RUN_SYSTEM=1 \\\n     DOCMIND_QDRANT_SYSTEM_URL=http://127.0.0.1:6333 \\\n     uv run pytest tests/system/test_e2e_offline.py -q\n   ```\n\n   **Key Dependencies Included:**\n\n   - **LlamaIndex Core (>=0.14.21,<0.15.0)**: Ingestion, retrieval, selectors, and query engines, with selected LLM, Hugging Face, Qdrant, and DuckDB adapters\n   - **LangGraph (>=1.0.10,<2.0.0)**: Four-worker supervisor orchestration (graph-native `StateGraph`, no external supervisor wrapper)\n   - **Streamlit (>=1.52.2,<2.0.0)**: Web interface framework\n   - **Ollama (0.6.2)**: Local LLM integration\n   - **Qdrant Client (>=1.15.1,<2.0.0)**: Vector database operations\n   - **Docling (>=2.111,<3)**: Multi-format document conversion.\n   - **pypdfium2 (>=5.7,<6)**: PDF inspection and page rasterization.\n   - **RapidOCR (>=3.8,<4)**: CPU-safe local OCR using the locked wheel's hash-verified packaged models.\n   - **FastEmbed (>=0.5.1)**: Direct CPU sparse query encoding\n   - **Loguru (>=0.7.3,<1.0.0)**: Structured logging\n   - **Pydantic (2.13.4)**: Data validation and settings.\n\n3. **Install spaCy language model:**\n\n   spaCy is bundled for optional **NLP enrichment** (sentence segmentation + entity extraction during ingestion). Install a language model if you plan to use enrichment:\n\n   ```bash\n   # Install the small English model (recommended, ~15MB)\n   uv run python -m spacy download en_core_web_sm\n\n   # Optional: Install larger models for better accuracy\n   # Medium model (~50MB): uv run python -m spacy download en_core_web_md\n   # Large model (~560MB): uv run python -m spacy download en_core_web_lg\n   ```\n\n   **Note:** spaCy models are downloaded and cached locally. The app does not auto-download models; install them explicitly for offline use.\n\n   Optional configuration (defaults shown):\n\n   ```bash\n   # Enable/disable enrichment\n   DOCMIND_SPACY__ENABLED=true\n   # Pipeline name or path (blank fallback when missing)\n   DOCMIND_SPACY__MODEL=en_core_web_sm\n   # cpu|cuda|apple|auto (auto prefers CUDA, then Apple, else CPU)\n   DOCMIND_SPACY__DEVICE=auto\n   DOCMIND_SPACY__GPU_ID=0\n   ```\n\n   Cross-platform acceleration:\n\n   - NVIDIA CUDA (validated on Linux x86_64): `uv sync --frozen --no-group cpu --extra gpu` and set `DOCMIND_SPACY__DEVICE=auto|cuda`; WSL2 is best effort\n   - Apple Silicon (best effort, macOS arm64 with CPython 3.12): `uv sync --frozen --extra apple` and set `DOCMIND_SPACY__DEVICE=auto|apple`\n\n   See `docs/specs/spec-015-nlp-enrichment-spacy.md` and","github_created_at":"2025-01-21T23:54:58+00:00","created_at":"2026-07-15T11:02:10.936554+00:00","updated_at":"2026-07-15T11:02:14.022771+00:00","categories":[{"slug":"ai-agents","name":"AI Agents","url":"https://www.graphcanon.com/categories/ai-agents","markdown_url":"https://www.graphcanon.com/categories/ai-agents.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/ai-agents"},{"slug":"llm-frameworks","name":"LLM Frameworks","url":"https://www.graphcanon.com/categories/llm-frameworks","markdown_url":"https://www.graphcanon.com/categories/llm-frameworks.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/llm-frameworks"},{"slug":"vector-databases","name":"Vector Databases","url":"https://www.graphcanon.com/categories/vector-databases","markdown_url":"https://www.graphcanon.com/categories/vector-databases.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/vector-databases"}],"tags":[{"slug":"ai-agents","name":"ai-agents"},{"slug":"document-analysis","name":"document-analysis"},{"slug":"hybrid-search","name":"hybrid-search"},{"slug":"langchain","name":"langchain"},{"slug":"langgraph-supervisor-py","name":"langgraph-supervisor-py"},{"slug":"llama-cpp","name":"llama-cpp"},{"slug":"llamacpp","name":"llamacpp"},{"slug":"lmstudio","name":"lmstudio"}],"trust":{"provenance":{"is_fork":false,"github_id":920317644,"owner_type":"User","methodology":"github_public_v1","parent_repo":null,"near_duplicate_slugs":[]},"computed_at":"2026-07-15T11:02:12.095Z","maintenance":{"label":"Very active","score":96,"methodology":"github_public_v1","releases_90d":7,"days_since_push":0,"last_release_at":"2026-07-14T13:32:01Z"},"security_summary":{"status":"no_lockfile","scanner":null,"low_count":0,"high_count":0,"last_scan_at":"2026-07-15T11:02:12.625Z","medium_count":0,"scan_profile":"none","critical_count":0}},"capability_facts":{"scan":{"source":"repo_scan","observed_at":"2026-07-15T11:02:11.836Z"},"deploy":{"source":"dockerfile:Dockerfile","self_host":true,"observed_at":"2026-07-15T11:02:11.836Z","managed_saas":false},"languages":{"value":["python"],"source":"github.language+pyproject.toml","observed_at":"2026-07-15T11:02:11.836Z"},"has_docker":{"value":true,"source":"dockerfile:Dockerfile","observed_at":"2026-07-15T11:02:11.836Z"},"license_spdx":{"value":"MIT","source":"github.license","observed_at":"2026-07-15T11:02:11.836Z"}}}}