QMD:在本地搜索 Markdown 笔记
QMD(Query Markup Documents,意为查询标记文档) 是一款在本机运行的搜索引擎,可用于 Markdown 笔记、会议记录、文档和知识库。记得主题却想不起文件名或原文措辞时,它能帮助你查找资料。研究资料库只是其中一种用途,QMD 不要求特定的目录结构或笔记分类方式。
选择搜索方式
QMD 提供三种文档检索方式:
search使用 BM25,按查询词对全文匹配结果排序。已知“先进先出执行”等术语时可以用它,不需要语言模型。vsearch比较嵌入向量,也就是用来估计语义相似程度的数值表示。查询措辞可能与原文不同时,可以尝试这种方式。query结合关键词检索、向量检索、查询扩展和模型重排序。查询扩展生成其他检索表达,重排序则调整候选结果的顺序。
这些模型在本地运行。模型文件首次使用时需要下载,因此初次设置可能需要联网。语义检索还需要先为文档生成嵌入向量。耗时和相关性受资料规模、模型、硬件及查询内容影响;分数高不代表内容已经得到事实核实。
建立集合并查找笔记
先通过官方 npm 软件包 安装 QMD,再把 ./notes 替换为已有的 Markdown 目录。这里的 notes 是自行指定的集合名称,不是工具内置的资料库。
qmd collection add ./notes --name notes
qmd embed
qmd query "量化研究与生产环境隔离" -c notes
qmd search "先进先出执行" -c notes
只做关键词检索时,可以跳过生成嵌入向量这一步。若想比较纯语义检索的结果,可以运行:
qmd vsearch "如何让研究与生产运行相互隔离" -c notes
用搜索结果返回的路径或文档 ID 打开笔记。下面的路径仅作示例,对应文件必须实际存在于你的集合中:
qmd get qmd://notes/quant/portfolio-lifecycle.md
get 默认显示行号。阅读时要看上下文和引用来源,不要只看匹配片段。修改原始笔记后,刷新索引并补充嵌入向量:
qmd update
qmd embed
对自行配置的集合,这两条命令会更新用于搜索的副本。使用他人的配置前,先检查集合的更新命令:QMD 可以在 update 期间执行已配置的 shell 命令。
把结果当作待核对的依据
搜索研究与生产环境隔离,可能找到一篇旧的架构笔记。复用其中的设计前,先检查日期、适用前提和引用来源。QMD 返回的是已建立索引的内容,无法证明笔记仍然有效或内容正确;没有结果也不等于不存在相关文档。
QMD 还通过 MCP 提供搜索和文档读取功能。MCP 是连接 AI 客户端与工具的协议。助手因此可以调用检索工具,但检索到的文本不会自动成为指令,也不会授权助手执行其中提到的操作。
相关工具
Basic Memory 支持跨会话读写相互关联的 Markdown 笔记。如果眼前的需求是搜索已有文档集合,QMD 就是可选工具之一。zvec-grep 则能搜索工作区中的代码和文档,并提供来源位置。这些工具的能力有所重叠,不必全部部署。智能体记忆与检索 介绍如何选择相关上下文,而不把记忆当成权威。