手元のPCだけで動く!メモ・議事録・ドキュメントを横断検索するAIミニ検索エンジン — qmd

tobi/qmdTypeScript19.9k

QMDは、パソコン内のMarkdownファイル(メモ、議事録、ドキュメントなど)を丸ごとインデックス化して高精度に検索できるローカル検索エンジンです。キーワード検索、意味を理解したAI検索、さらにAIによる結果の並べ替えを組み合わせた「ハイブリッド検索」で、Google検索のようにパソコン内の情報を素早く見つけ出せます。すべての処理がパソコン上で完結するため、クラウドにデータを送る必要がなく、プライバシーを守りながら利用できます。AI エージェント(Claude DesktopやClaude Codeなど)との連携機能も充実しており、AIアシスタントに「自分の過去のメモから情報を引き出させる」といった使い方が可能です。

🔥 なぜ話題?

AIエージェント(Claude CodeやClaude Desktopなど)の普及で「AIに自分のローカル資料を参照させたい」というニーズが急増しており、MCP対応のローカル検索ツールとしてQMDが注目されています。すべてローカルで動作し最新のAI検索手法(BM25+ベクトル検索+LLMリランキング)を小型モデルで実現している点が、プライバシー意識の高まりとも合致しています。

💡 こう使える!

例えば、過去半年分の会議議事録が100ファイルほどフォルダにたまっている状況で、「第3四半期の予算について話し合った回はいつだったか」と自然言語で検索すると、QMDが該当する議事録ファイルの関連箇所をスコア付きで一覧表示してくれるので、わざわざ1ファイルずつ開いて探す手間がなくなります。

ユースケース: パソコン内に散らばったメモ、議事録、ドキュメントをAIの力で横断的に検索し、欲しい情報を素早く見つけ出すツールとして使えます。

  • キーワード検索・意味検索・AI並べ替えの3段構えハイブリッド検索で高精度な結果を実現
  • すべてローカルで動作し、約2GBの小型AIモデルを自動ダウンロード。クラウド不要でプライバシーも安心
  • MCP対応でClaude DesktopやClaude Codeなど最新AIエージェントと直接連携可能
  • SDK(プログラム部品)としても利用でき、自作アプリに検索機能を組み込める
  • TypeScript, Python, Go, Rustなどのコードファイルも構文解析してかしこく分割・検索できる
GitHubで見る →

mini cli search engine for your docs, knowledge bases, meeting notes, whatever. Tracking current sota approaches while being all local

技術情報

言語

TypeScript

ライセンス

MIT

最終更新

2026-04-05

スター数

19,871

フォーク数

1,189

Issue数

286

技術詳細

アーキテクチャ・仕組み

QMDは3つの検索手法を組み合わせたハイブリッド検索パイプラインを採用しています:

  1. BM25全文検索: SQLite FTS5を利用したキーワードベースの高速検索
  2. ベクトル意味検索: 文書をベクトル化(埋め込み)し、意味的な類似度で検索
  3. LLMリランキング: AI(大規模言語モデル)が検索結果の関連度を再評価して並べ替え

検索パイプラインの流れ

  • ユーザーのクエリをLLMで2つの変形クエリに拡張(元のクエリは×2の重み付け)
  • 各クエリでBM25とベクトル検索を並列実行
  • **RRF(Reciprocal Rank Fusion)**で結果を統合(k=60)
  • 上位30件をLLMで再ランキング
  • 位置対応ブレンディング:上位1-3位はRRF 75%/リランカー 25%、4-10位は60%/40%、11位以降は40%/60%

使用AIモデル(すべてローカル実行)

モデル用途サイズ
embeddinggemma-300M-Q8_0ベクトル埋め込み約300MB
qwen3-reranker-0.6b-q8_0リランキング約640MB
qmd-query-expansion-1.7B-q4_k_mクエリ拡張(ファインチューニング済)約1.1GB

モデルは初回利用時にHuggingFaceから自動ダウンロードされ、~/.cache/qmd/models/にキャッシュされます。

スマートチャンキング

文書を約900トークン単位、15%オーバーラップで分割。Markdownの見出し・コードブロック・水平線などの構造を考慮してスコアリングし、意味的なまとまりを保つ位置で分割します。

AST対応チャンキング--chunk-strategy auto): tree-sitterでソースコードの構文木を解析し、関数・クラス・import文の境界で分割。対応言語は .ts, .tsx, .js, .jsx, .py, .go, .rs

対応環境

  • Node.js >= 22 または Bun >= 1.0.0
  • macOS: Homebrewでsqliteのインストールが必要
  • LLM実行は node-llama-cpp を使用(GGUF形式モデル)

多言語対応

QMD_EMBED_MODEL環境変数でカスタム埋め込みモデルに切り替え可能。日本語・中国語・韓国語にはQwen3-Embedding-0.6Bが推奨(119言語対応)。

MCP(Model Context Protocol)サーバー

  • stdio(デフォルト)とHTTPトランスポートに対応
  • HTTP版はデーモンとして起動可能で、モデルをVRAMに常駐させて応答速度を向上
  • Claude Desktop、Claude Codeと直接連携可能
  • 公開ツール: query, get, multi_get, status

SDK(ライブラリとしての利用)

@tobilu/qmdをnpmパッケージとしてインストールし、Node.js/Bunアプリケーションに検索機能を組み込める。createStore()で初期化し、search(), get(), multiGet()などのAPIを利用可能。TypeScriptの型定義も完備。

データストレージ

SQLiteベース(~/.cache/qmd/index.sqlite)。sqlite-vecエクステンションでベクトルインデックスを管理。

出力形式

CLI(カラー出力、OSC 8ターミナルハイパーリンク対応)、JSON、CSV、Markdown、XMLに対応。QMD_EDITOR_URIでVS Code、Cursor、Zed、Sublime Textへのリンクをカスタマイズ可能。

ライセンス

MIT(商用利用含め自由に利用可能)

インストール・クイックスタート

# グローバルにインストール(Node.js または Bun)
npm install -g @tobilu/qmd
# または
bun install -g @tobilu/qmd

# インストールなしで直接実行も可能
npx @tobilu/qmd ...
# コレクション(検索対象フォルダ)を登録
qmd collection add ~/notes --name notes
qmd collection add ~/Documents/meetings --name meetings

# コンテキスト(説明文)を追加して検索精度を向上
qmd context add qmd://notes "Personal notes and ideas"

# ベクトル埋め込みを生成(初回のみ必要、モデルは自動ダウンロード)
qmd embed

# 検索開始!
qmd search "project timeline"      # キーワード検索
qmd vsearch "how to deploy"        # 意味検索
qmd query "quarterly planning"     # ハイブリッド検索(最高品質)

参考になる外部の関連記事

過去のトレンド履歴

関連リポジトリ

WhatsApp・Telegram・Slack…22以上のチャットアプリを1つのAIアシスタントに統合! — openclaw

openclaw/openclawTypeScript301.9k

OpenClawは、自分のパソコンやサーバーで動かせる個人用AIアシスタントです。WhatsApp、Telegram、Slack、Discord、LINE、iMessageなど22以上のメッセージアプ

daytonaio/daytona

daytonaio/daytonaTypeScript57.6k

DaytonaはAI生成コードを安全かつ柔軟に実行するためのインフラストラクチャプラットフォームです。AI開発者がコード生成後の実行環境を気にすることなく、セキュアな環境でコードをテストできます。クラ

AIコーディング助手の「記憶喪失」を解決!セッションをまたいで文脈を自動保存・復元 — claude-mem

thedotmack/claude-memTypeScript56.7k

claude-memは、AIコーディングツール「Claude Code」のプラグインで、コーディングセッション中にClaudeが行ったすべての操作を自動的に記録し、AIで圧縮・要約した上で、次回のセッ

プログラミング不要!ドラッグ&ドロップでAIエージェントを作れるビジュアルツール — Flowise

FlowiseAI/FlowiseTypeScript50.3k

Flowiseは、AIエージェント(自律的に判断して動くAIプログラム)をプログラミングなしで構築できるオープンソースのツールです。パズルのピースを組み合わせるように、画面上でブロックをドラッグ&ドロ

Claude Codeの内部設計を12ステップで完全理解!AIエージェントの「乗り物」を自分で作る学習教材 — learn-claude-code

shareAI-lab/learn-claude-codeTypeScript43.4k

learn-claude-codeは、Anthropic社のClaude Codeというコーディングエージェントがどのような仕組みで動いているかを、12段階のレッスンで段階的に学べる教材リポジトリです