フォルダを自動でインデックス化し、Elasticsearch APIに対応するRust製ローカルAI検索エンジン
tobi/qmd
Markdownのメモ、会議の文字起こし、ドキュメントを対象に、BM25、ベクトル検索、LLMによる再ランキングを組み合わせたローカル実行型のCLI検索エンジン。
- スター
- 30,493
- フォーク
- 1,916
- 未解決の Issue
- 231
- 最終コミット
- 5 日前
これは何?
QMD(Query Markup Documents)は、Markdownのメモ、会議の文字起こし、ドキュメント、ナレッジベースなど、個人やチームのナレッジを検索するオンデバイス検索エンジンです。ソースを名前付きコレクションに整理し、コマンドライン、TypeScript SDK、またはMCPサーバーから、キーワードや自然言語で検索できます。
QMDはBM25による全文検索、ベクトルによるセマンティック検索、LLMによる再ランキングを組み合わせています。クエリを型付きのサブクエリ(lexical、vector、HyDE)に展開し、Reciprocal Rank Fusionで結果を統合した後、上位候補をローカルモデルで再ランキングします。モデルはすべてnode-llama-cppを通じてローカルで実行され、GGUFファイルは初回使用時にダウンロードされます。
QMDはJSON、CSV、Markdown、ファイル一覧形式での出力、HTTPエンドポイント、frontmatterに基づくメタデータフィルタリングを提供します。コレクションやパスに説明用のコンテキストを設定すると、一致した結果とともに返されるため、エージェントが適切なドキュメントを選びやすくなります。Node.js 22以降またはBunが必要です。
主な機能
- 01BM25によるキーワード検索、ベクトル類似度検索、LLMによる再ランキングを組み合わせたハイブリッド検索
- 02node-llama-cppを通じてGGUFモデルを使用し、すべてローカルで実行
- 03名前付きコレクションにパスベースのコンテキストを設定でき、検索結果とともに返却
- 04連携用のMCPサーバー、HTTPエンドポイント、TypeScript SDK
- 05エージェントのワークフローを想定したJSONおよびファイル一覧形式での出力
- 06型付きYAML frontmatterによるメタデータフィルタリングと、コードファイル向けの任意のAST対応チャンク分割
ユースケース
- 個人用のObsidian風ノートフォルダを、完全一致する単語ではなく意味で検索する
- チームの共有フォルダから過去の会議の文字起こしや決定事項を探す
- プロジェクトのドキュメントを対象としたローカル検索ツールをAIエージェントに提供する
- コードベースのドキュメントやソースファイルをインデックス化してセマンティック検索する
クイックスタート
- 1
npmでグローバルにインストールする
npm install -g @tobilu/qmd - 2
ノートのコレクションを追加する
qmd collection add ~/notes --name notes - 3
セマンティック検索用の埋め込みを生成する
qmd embed - 4
リランキングを使ってハイブリッド検索を実行する
qmd query "quarterly planning process"
使う前に知っておきたいこと
- セマンティック検索とリランキングには、node-llama-cpp経由でローカルのGGUFモデルを使用するため、ディスク容量とメモリが必要です。
- 検索で最良の結果を得るには、コレクションとコンテキストを追加し、埋め込みを生成しておく必要があります。
トピック
よくある質問
- qmd とは?
- Markdownのメモ、会議の文字起こし、ドキュメントを対象に、BM25、ベクトル検索、LLMによる再ランキングを組み合わせたローカル実行型のCLI検索エンジン。 QMD(Query Markup Documents)は、Markdownのメモ、会議の文字起こし、ドキュメント、ナレッジベースなど、個人やチームのナレッジを検索するオンデバイス検索エンジンです。ソースを名前付きコレクションに整理し、コマンドライン、TypeScript SDK、またはMCPサーバーから、キーワードや自然言語で検索できます。
- qmd は無料で使えますか?ライセンスは?
- qmd は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- qmd は今もメンテナンスされていますか?
- 活発にメンテナンス中。qmd の最終コミットは 2026年10月15日 です。
- qmd は何に使えますか?
- 個人用のObsidian風ノートフォルダを、完全一致する単語ではなく意味で検索する チームの共有フォルダから過去の会議の文字起こしや決定事項を探す プロジェクトのドキュメントを対象としたローカル検索ツールをAIエージェントに提供する コードベースのドキュメントやソースファイルをインデックス化してセマンティック検索する
- qmd のインストール方法は?
- npmでグローバルにインストールする: npm install -g @tobilu/qmd ノートのコレクションを追加する: qmd collection add ~/notes --name notes セマンティック検索用の埋め込みを生成する: qmd embed リランキングを使ってハイブリッド検索を実行する: qmd query "quarterly planning process"
- qmd はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/tobi/qmd
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
コーディングエージェント向けの永続メモリ。セッション中の活動を記録してAIで圧縮し、後続セッションに関連するコンテキストを引き継ぎます。
ブロック単位の参照、Markdown WYSIWYG編集、AIエージェント連携に対応した、プライバシー重視のセルフホスト型ナレッジワークスペース。
エディター向けLSPとCLI、AIエージェントが同じノートを読み書きできるMCPサーバーを備えたMarkdownナレッジグラフ。
音声クローン、音声生成、あらゆるアプリへの音声入力、AIエージェントの音声化に対応するローカルファーストのオープンソースAI音声スタジオ。
LangGraphを使った、階層型インデックスや会話メモリ、質問の明確化に対応するモジュール式Agentic RAGチュートリアル。