QMD:本地运行的智能文档搜索引擎

发布时间:2026/7/2 6:22:38
QMD:本地运行的智能文档搜索引擎 文章目录QMD本地运行的智能文档搜索引擎混合搜索是它的核心能力接入方式安装和使用本地模型适合什么场景其他细节QMD本地运行的智能文档搜索引擎最近 GitHub 上出现了一个挺有意思的项目叫 QMDStar 数已经到了 2.7 万。它做的事情很明确把你的 Markdown 笔记、会议记录、技术文档全部索引起来然后用关键词或者自然语言去搜。混合搜索是它的核心能力QMD 最大的特点不是单纯的全文检索而是把三种搜索方式揉到了一起BM25 全文检索、向量语义搜索、LLM 重排序。这三样东西全部跑在本地通过 node-llama-cpp 加载 GGUF 模型实现不需要联网。搜索流程大概是这样的你输入一个查询QMD 先用微调过的 1.7B 参数模型自动扩展查询词然后同时跑关键词搜索和语义搜索再用 RRFReciprocal Rank Fusion把结果合并最后交给 reranker 模型做精排。整个过程对用户来说就是一条命令的事。实际使用的时候有三种模式可选。search是纯关键词搜索速度最快。vsearch是向量语义搜索适合你记不清原文措辞的场景。query是混合搜索加重排序效果最好但需要加载模型第一次运行会慢一些。接入方式除了命令行直接用QMD 还提供了 MCP Server可以接入 Claude Desktop 或者 Claude Code。它暴露了四个工具query混合搜索、get获取单个文档、multi_get批量获取、status查看索引状态。如果你是做开发的也可以把 QMD 当成 Node.js 库来用。npm 装完之后几行代码就能创建索引、执行搜索、获取文档。SDK 的设计比较干净支持内联配置、YAML 配置文件也可以直接打开已有的数据库。安装和使用装起来很简单Node 或者 Bun 环境下全局安装就行npm install -g tobilu/qmd装好之后先建几个 collection把你的文档目录加进去qmd collection add ~/notes --name notes qmd collection add ~/work/docs --name docs然后跑一次qmd embed生成向量索引。之后就可以搜索了qmd search project timeline qmd query quarterly planning processquery命令会自动扩展查询词同时跑关键词和语义搜索最后用 reranker 精排。如果你只想快速找关键词匹配用search就够了。本地模型QMD 用到三个 GGUF 模型首次使用时自动从 HuggingFace 下载。embedding 模型大概 300MBreranker 大概 640MB查询扩展模型大概 1.1GB。模型下载后缓存在~/.cache/qmd/models/目录下。默认的 embedding 模型是 embeddinggemma-300M英文效果不错。如果你主要搜中文、日文或者韩文内容可以换成 Qwen3-Embedding-0.6B支持 119 种语言MTEB 排名靠前。换模型之后需要重新跑一次qmd embed -f。适合什么场景QMD 比较适合两种人。一种是笔记很多、经常需要翻找历史记录的。把所有 Markdown 文件加进 collection以后搜东西就不用翻文件夹了。另一种是做 AI Agent 开发的。QMD 的--json输出格式可以直接喂给 LLM--files模式可以批量导出匹配的文件路径。搜索结果会显示文件路径、标题、上下文描述和相关度分数。路径在终端里是可以点击的超链接支持 VS Code、Cursor、Zed 等编辑器。其他细节QMD 支持 AST 感知的代码分块对 TypeScript、JavaScript、Python、Go、Rust 这几种语言会按函数、类、import 边界来切分而不是按固定字符数切。这对搜代码场景有帮助。它还支持给 collection 设置上下文描述搜到子文档的时候会把上下文一起返回帮 LLM 做更好的判断。另外 collection 可以配置update命令每次qmd update之前自动执行比如git pull --rebase保持文档和远程仓库同步。项目是 MIT 协议代码全在 GitHub 上。如果你手头有大量 Markdown 文档需要管理或者在做 AI 项目需要本地知识库可以试试。协议代码全在 GitHub 上。如果你手头有大量 Markdown 文档需要管理或者在做 AI 项目需要本地知识库可以试试。