QMD
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.
