QMD

Tool snapshot
Best fitResearch · Design · Productivity
In one lineQMD is a local document-search engine combining keyword retrieval, semantic vectors and model reranking, with CLI, MCP and library interfaces.

QMD, short for Query Markup Documents, is a local search engine for notes, documentation, meeting transcripts and knowledge bases. Its publisher repository describes keyword search, semantic search and hybrid retrieval using local GGUF models through node-llama-cpp. It is distributed under the MIT License.

Building a searchable collection

Users register directories as named collections and specify file patterns. The default pattern targets Markdown, while custom masks can include other files. Context descriptions attached to a collection or path explain what its documents contain and return alongside results.

QMD stores the index in SQLite. Updating the index scans the registered files; generating embeddings adds the semantic-search representation. Configuration changes do not re-index files automatically, so the README distinguishes updating a collection from rebuilding embeddings after changing the embedding model.

Choosing a search mode

The CLI provides BM25 keyword search, vector semantic search, and a hybrid query mode with expansion and reranking. Hybrid retrieval combines ranked result lists through reciprocal rank fusion before the reranker assesses relevance. Users can disable reranking when they want a faster result on a CPU.

Results include a document identifier, context, score and snippet. Retrieval commands return a document or a selected line range, and batch retrieval supports patterns and document IDs. JSON, CSV and file-list outputs support scripts or agents that need to consume the results. Metadata filters can restrict results by indexed fields, with typed comparisons and logical groups.

Agent integration and setup limits

QMD exposes an MCP server for search, retrieval and index status, plus a Node.js or Bun library API. The default MCP transport uses a subprocess; an HTTP option keeps a shared server running and binds to localhost by default. The README explicitly says off-host endpoints are unauthenticated and need authentication placed in front of them.

The documented runtime requirements are Node.js 22 or later, or Bun 1.0 or later, with an additional SQLite setup note for macOS. Three GGUF models for embeddings, reranking and query expansion download on first use and are cached locally. The default embedding model is English-optimized; the README describes an alternative for multilingual collections and requires re-embedding after a switch.

QMD suits users who already keep useful material in files and want retrieval inside a local workflow. Its index and models require setup and maintenance, so start with a defined collection and verify returned documents before expanding to a larger knowledge base.