news 2026/7/2 6:22:29

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
QMD:本地运行的智能文档搜索引擎

文章目录

  • QMD:本地运行的智能文档搜索引擎
    • 混合搜索是它的核心能力
    • 接入方式
    • 安装和使用
    • 本地模型
    • 适合什么场景
    • 其他细节

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

最近 GitHub 上出现了一个挺有意思的项目,叫 QMD,Star 数已经到了 2.7 万。它做的事情很明确,把你的 Markdown 笔记、会议记录、技术文档全部索引起来,然后用关键词或者自然语言去搜。

混合搜索是它的核心能力

QMD 最大的特点不是单纯的全文检索,而是把三种搜索方式揉到了一起:BM25 全文检索、向量语义搜索、LLM 重排序。这三样东西全部跑在本地,通过 node-llama-cpp 加载 GGUF 模型实现,不需要联网。

搜索流程大概是这样的:你输入一个查询,QMD 先用微调过的 1.7B 参数模型自动扩展查询词,然后同时跑关键词搜索和语义搜索,再用 RRF(Reciprocal 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 process"

query命令会自动扩展查询词,同时跑关键词和语义搜索,最后用 reranker 精排。如果你只想快速找关键词匹配,用search就够了。

本地模型

QMD 用到三个 GGUF 模型,首次使用时自动从 HuggingFace 下载。embedding 模型大概 300MB,reranker 大概 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 项目需要本地知识库,可以试试。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/2 6:19:02

利用AI助手高效解决IBM MQ AMQ8242E密码套件配置错误

1. 项目概述:当IBM MQ遇上AMQ8242E 如果你正在部署或维护一个基于IBM MQ的消息中间件环境,并且计划启用TLS/SSL加密来保障通道通信安全,那么你极有可能在某个深夜,于队列管理器错误日志里,与这个令人头疼的错误码不期而…

作者头像 李华
网站建设 2026/7/2 6:16:40

用自然语言控制电脑:UI-TARS桌面版完全指南

用自然语言控制电脑:UI-TARS桌面版完全指南 【免费下载链接】UI-TARS-desktop The Open-Source Multimodal AI Agent Stack: Connecting Cutting-Edge AI Models and Agent Infra 项目地址: https://gitcode.com/GitHub_Trending/ui/UI-TARS-desktop 你是否曾…

作者头像 李华
网站建设 2026/7/2 6:16:11

DayZ终极单机离线模式:5分钟快速安装完整免费生存体验

DayZ终极单机离线模式:5分钟快速安装完整免费生存体验 【免费下载链接】DayZCommunityOfflineMode A community made offline mod for DayZ Standalone 项目地址: https://gitcode.com/gh_mirrors/da/DayZCommunityOfflineMode DayZCommunityOfflineMode是一…

作者头像 李华
网站建设 2026/7/2 6:12:41

演示使用C#写的LiveCharts,点击按钮动态生成一些数据。

Android真机运行2. 模拟器运行二、实现原理原理比较简单,如下图所示,将C#写的PixUI应用及C写的Skia引擎编译为WebAssembly,然后通过微信小程序的WXWebAssembly加载,并在canvas(WebGL)通过skia绘制出用户界面,监听微信小…

作者头像 李华
网站建设 2026/7/2 6:12:40

NGA论坛效率提升工具:全面优化你的浏览体验与工作流

NGA论坛效率提升工具:全面优化你的浏览体验与工作流 【免费下载链接】NGA-BBS-Script NGA论坛增强脚本,给你完全不一样的浏览体验 项目地址: https://gitcode.com/gh_mirrors/ng/NGA-BBS-Script NGA论坛增强脚本是一款专为提升NGA论坛浏览效率而设…

作者头像 李华
网站建设 2026/7/2 6:12:29

AI 电动农业机械智能功率 MOSFET 完整选型方案

随着 AI 技术在现代电动农业机械(如智能拖拉机、收割机、植保无人机)中的广泛应用(如自动驾驶路径规划、精准作业、能量优化),其电驱系统对功率 MOSFET 提出了严苛要求:高耐压、大电流、低损耗、高环境适应…

作者头像 李华