混合检索流水线(FTS5 + 向量 + 重排)
把检索拆成三段:先用 SQLite FTS5 的 BM25 做快速关键词召回,再用向量相似度补齐语义相近内容,最后用本地 GGUF 模型在 node-llama-cpp 上做重排,把“匹配到”升级为“能回答”。
QMD 是一套“设备内运行”的 Markdown 搜索引擎,把你的笔记、会议纪要、文档与知识库索引成一个可被智能体直接调用的检索层。它用 SQLite 的 FTS5(BM25)做关键词召回,用向量相似度做语义召回,再用本地 GGUF 模型在 node-llama-cpp 上完成重排与查询扩展,让结果既快又像人类在翻资料。工程上它把输出格式做成 agent-friendly:支持 --json/--files/--csv,并内置 Model Context Protocol (MCP) Server,把 search/get/status 等能力暴露成工具接口,适合接入各类自动化与“读你自己的文档再回答”的工作流。
| ✕传统痛点 | ✓创新方案 |
|---|---|
| 本地 Markdown 内容规模一大,纯 grep/关键词检索会漏掉同义表达与跨段线索,难以给智能体提供“可用上下文”。 | QMD 用 FTS5(BM25)+向量召回+本地 LLM 重排构成混合检索链路,把“召回率”和“可回答性”分层优化。 |
| 把检索接入智能体时,常见做法要么把大量原文塞进上下文,要么依赖远端向量库,成本与隐私边界都不稳定。 | 通过内置 Model Context Protocol (MCP) Server 将检索能力工具化,配合结构化输出,让智能体只拿需要的片段而不是整库扫读。 |
1bun --version1bun install -g https://github.com/tobi/qmd1qmd collection add ~/notes --name notes && qmd embed1qmd search "auth" # BM25\nqmd vsearch "login flow" # vector\nqmd query "how to deploy" # hybrid+rerank1qmd mcp # 作为本地 stdio MCP server 运行| 核心场景 | 目标人群 | 解决方案 | 最终收益 |
|---|---|---|---|
| 给 Claude Code/桌面端做本地检索工具 | 用智能体写代码/写文档的个人与团队 | 把本地笔记与项目文档索引成检索工具并输出 JSON | 智能体减少“扫全库”的 token 浪费,只取高相关片段再回答 |
| 企业内私有知识库的零出网检索层 | 对数据出网敏感的研发/合规团队 | 在员工电脑或内网机器上跑本地混合检索与重排 | 在不把内容上传到外部向量库的前提下提升可检索性与答复质量 |
| 会议纪要/日志的持续索引与回溯 | 需要追踪决策与行动项的管理者与工程师 | 把会议纪要、变更日志、运维记录按集合组织并定期更新索引 | 用自然语言回溯“当时怎么决定的、在哪里写过” |