<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Qmd on KnightLiブログ</title>
        <link>https://www.knightli.com/ja/tags/qmd/</link>
        <description>Recent content in Qmd on KnightLiブログ</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>ja</language>
        <lastBuildDate>Fri, 01 May 2026 03:12:57 +0800</lastBuildDate><atom:link href="https://www.knightli.com/ja/tags/qmd/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>qmd：AI Agent 向けのローカル Markdown ドキュメント検索ツール</title>
        <link>https://www.knightli.com/ja/2026/05/01/qmd-markdown-search-for-ai-agents/</link>
        <pubDate>Fri, 01 May 2026 03:12:57 +0800</pubDate>
        
        <guid>https://www.knightli.com/ja/2026/05/01/qmd-markdown-search-for-ai-agents/</guid>
        <description>&lt;p&gt;&lt;code&gt;qmd&lt;/code&gt; は、ローカル Markdown ドキュメント向けの検索ツールです。主な利用対象は AI Agent です。&lt;/p&gt;
&lt;p&gt;解決する問題は具体的です。プロジェクトに大量の &lt;code&gt;.md&lt;/code&gt; ドキュメントがある場合、AI コーディングアシスタントは、どのファイルを読むべきか、どの段落を引用すべきか、どの説明が最新かを判断しづらくなります。全文 grep はキーワードを見つけられますが、意味の理解は苦手です。ドキュメント全体をコンテキストに詰め込むと、ウィンドウを浪費し、無関係な内容も混ざりやすくなります。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;qmd&lt;/code&gt; の考え方は、まず Markdown ドキュメントにインデックスを作り、その後検索インターフェースを通じて最も関連する断片を AI に渡すことです。CLI ツールとして使うことも、SDK で統合することも、MCP Server として MCP 対応クライアントに接続することもできます。&lt;/p&gt;
&lt;h2 id=&#34;解決する問題&#34;&gt;解決する問題
&lt;/h2&gt;&lt;p&gt;実際のプロジェクトのドキュメントは、README が 1、2 個あるだけではありません。&lt;/p&gt;
&lt;p&gt;たとえば次のようなものがあります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;アーキテクチャ説明&lt;/li&gt;
&lt;li&gt;API ドキュメント&lt;/li&gt;
&lt;li&gt;開発規約&lt;/li&gt;
&lt;li&gt;デプロイ手順&lt;/li&gt;
&lt;li&gt;設計判断記録&lt;/li&gt;
&lt;li&gt;トラブルシューティングメモ&lt;/li&gt;
&lt;li&gt;要件ドキュメント&lt;/li&gt;
&lt;li&gt;AI 利用説明&lt;/li&gt;
&lt;li&gt;各種ツールチェーンのメモ&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;人間はディレクトリをたどってドキュメントを読めますが、AI Agent には明確な検索入口が必要です。そうでないと、次のようなことが起こります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;間違ったドキュメントを読む&lt;/li&gt;
&lt;li&gt;重要な制約を見落とす&lt;/li&gt;
&lt;li&gt;古い説明を使う&lt;/li&gt;
&lt;li&gt;無関係な内容をコンテキストに入れる&lt;/li&gt;
&lt;li&gt;存在しないルールを経験で補完して回答する&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;qmd&lt;/code&gt; の価値はここにあります。ローカル Markdown ドキュメントを検索可能な知識源にし、AI がコンテキストを必要とするときにまず検索し、一致した断片に基づいて回答や作業を行えるようにします。&lt;/p&gt;
&lt;h2 id=&#34;検索方式の特徴&#34;&gt;検索方式の特徴
&lt;/h2&gt;&lt;p&gt;README によると、&lt;code&gt;qmd&lt;/code&gt; は複数の検索方式を組み合わせています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;BM25 キーワード検索&lt;/li&gt;
&lt;li&gt;ベクトル検索&lt;/li&gt;
&lt;li&gt;LLM reranking&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;BM25 は明確なキーワードに向いています。関数名、設定項目、エラーコード、ファイル名を探す場合は直接的です。&lt;/p&gt;
&lt;p&gt;ベクトル検索は意味的な質問に向いています。たとえば「このプロジェクトは権限検証をどう扱っているか」と聞く場合、ドキュメントにその exact な語句がなくても、認証、アクセス制御、ロール判定に関する説明が見つかる可能性があります。&lt;/p&gt;
&lt;p&gt;LLM reranking は候補結果の並べ替えに使われます。最初の 2 つのステップで関連しそうな内容を集め、その後モデルが現在の質問により合う断片を判断します。&lt;/p&gt;
&lt;p&gt;この組み合わせは、単純なキーワード検索より AI Agent に向いています。Agent の質問は固定キーワードではなく、タスク意図であることが多いからです。&lt;/p&gt;
&lt;h2 id=&#34;なぜ-markdown-なのか&#34;&gt;なぜ Markdown なのか
&lt;/h2&gt;&lt;p&gt;Markdown は開発プロジェクトで最もよく使われるドキュメント形式です。&lt;/p&gt;
&lt;p&gt;Git に入れやすいほど単純で、見出し、リスト、コードブロック、リンク、表を持てる程度には構造化されています。AI にとっても、Markdown は PDF、Web スナップショット、スクリーンショットより解析しやすい形式です。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;qmd&lt;/code&gt; が Markdown に集中しているため、開発ドキュメントに対してより直接的な処理ができます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;見出しと段落で内容を分割する&lt;/li&gt;
&lt;li&gt;コードブロックを保持する&lt;/li&gt;
&lt;li&gt;ドキュメントパスを保持する&lt;/li&gt;
&lt;li&gt;引用しやすい断片を返す&lt;/li&gt;
&lt;li&gt;Agent が回答の出典ドキュメントを把握できる&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これは、AI にリポジトリをランダムに走査させるより安定しており、すべてのドキュメントを一度に prompt へ入れるよりコンテキストを節約できます。&lt;/p&gt;
&lt;h2 id=&#34;3-つの利用入口&#34;&gt;3 つの利用入口
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;qmd&lt;/code&gt; は CLI、SDK、MCP Server の 3 つの入口を提供します。&lt;/p&gt;
&lt;h3 id=&#34;1-cli&#34;&gt;1. CLI
&lt;/h3&gt;&lt;p&gt;CLI はターミナルで直接使う場合や、スクリプトに組み込む場合に向いています。&lt;/p&gt;
&lt;p&gt;ドキュメントディレクトリをインデックス化し、コマンドで関連内容を検索できます。開発者にとって CLI は最も効果を確認しやすい入口です。まず正しいドキュメントが見つかるかを確認し、その後より複雑なワークフローへの統合を考えられます。&lt;/p&gt;
&lt;p&gt;この種のツールはローカルプロジェクトで便利です。コード変更前に設計ドキュメントを検索し、デバッグ前に障害メモを確認し、API を書く前に API 規約を調べることができます。&lt;/p&gt;
&lt;h3 id=&#34;2-sdk&#34;&gt;2. SDK
&lt;/h3&gt;&lt;p&gt;SDK は &lt;code&gt;qmd&lt;/code&gt; を自分のツールに組み込む場合に向いています。&lt;/p&gt;
&lt;p&gt;社内開発アシスタント、ドキュメント Q&amp;amp;A システム、コードレビューボット、プロジェクト知識ベースを作っている場合、ユーザーに直接コマンドを打たせるのではなく、SDK から検索機能を呼び出せます。&lt;/p&gt;
&lt;p&gt;SDK では次のような制御がしやすくなります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;検索ディレクトリ&lt;/li&gt;
&lt;li&gt;クエリ内容&lt;/li&gt;
&lt;li&gt;返す件数&lt;/li&gt;
&lt;li&gt;結果形式&lt;/li&gt;
&lt;li&gt;後続でモデルに要約させるか&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;深い統合が必要な場面に向いています。&lt;/p&gt;
&lt;h3 id=&#34;3-mcp-server&#34;&gt;3. MCP Server
&lt;/h3&gt;&lt;p&gt;MCP は、&lt;code&gt;qmd&lt;/code&gt; が AI Agent にとって最も価値を持つ入口です。&lt;/p&gt;
&lt;p&gt;MCP Server を通じて、MCP 対応クライアントは &lt;code&gt;qmd&lt;/code&gt; をドキュメント検索ツールとして呼び出せます。これにより Agent は、タスク実行時にプロジェクトルールを推測するのではなく、まずローカル Markdown ドキュメントを検索できます。&lt;/p&gt;
&lt;p&gt;典型的な流れは次のようになります。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;ユーザーが AI にある機能の変更を依頼する&lt;/li&gt;
&lt;li&gt;AI がまず &lt;code&gt;qmd&lt;/code&gt; を呼び出して関連設計ドキュメントを検索する&lt;/li&gt;
&lt;li&gt;&lt;code&gt;qmd&lt;/code&gt; が最も関連する Markdown 断片を返す&lt;/li&gt;
&lt;li&gt;AI がドキュメント制約に基づいてコードを変更する&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;これは「新しい会話のたびにすべてのルールを手で貼る」より自然で、長期プロジェクトにも向いています。&lt;/p&gt;
&lt;h2 id=&#34;向いている場面&#34;&gt;向いている場面
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;qmd&lt;/code&gt; は次のような場面に向いています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;プロジェクトに大量の Markdown ドキュメントがある&lt;/li&gt;
&lt;li&gt;AI Agent が頻繁にプロジェクトルールを調べる必要がある&lt;/li&gt;
&lt;li&gt;チームが AI の回答にローカルドキュメントを引用させたい&lt;/li&gt;
&lt;li&gt;ドキュメントが複数ディレクトリに分散している&lt;/li&gt;
&lt;li&gt;CLI、SDK、MCP の間で同じ検索機能を再利用したい&lt;/li&gt;
&lt;li&gt;AI コーディングアシスタントがプロジェクト規約を推測するのを減らしたい&lt;/li&gt;
&lt;li&gt;ローカル知識ベースを Claude Desktop、Claude Code、その他の MCP クライアントに接続したい&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;プロジェクトに短い README が 1 つだけなら、AI にそのファイルを読ませれば十分です。&lt;/p&gt;
&lt;p&gt;しかし、ドキュメントが数十、数百ファイルに増えている場合や、Agent に毎回ドキュメントを検索してから行動してほしい場合、この種のインデックスツールには意味があります。&lt;/p&gt;
&lt;h2 id=&#34;grep-との違い&#34;&gt;grep との違い
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;grep&lt;/code&gt; や &lt;code&gt;rg&lt;/code&gt; は正確な検索に非常に向いています。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;DATABASE_URL&lt;/code&gt;、&lt;code&gt;authMiddleware&lt;/code&gt;、&lt;code&gt;404&lt;/code&gt;、&lt;code&gt;docker compose&lt;/code&gt; を探したいと分かっているなら、キーワード検索がたいてい最速です。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;qmd&lt;/code&gt; は、正確な語句が分からない場合に向いています。&lt;/p&gt;
&lt;p&gt;たとえば次のような質問です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;このプロジェクトのリリース手順は何か&lt;/li&gt;
&lt;li&gt;新しい API を追加するときに守る規約は何か&lt;/li&gt;
&lt;li&gt;キャッシュ戦略について過去に記録があるか&lt;/li&gt;
&lt;li&gt;AI がコードを変更する前に読むべきドキュメントはどれか&lt;/li&gt;
&lt;li&gt;あるモジュールの設計背景はどこにあるか&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これらは一語の一致ではなく、意味検索が必要なことが多いです。&lt;code&gt;qmd&lt;/code&gt; の BM25 + ベクトル + reranking の組み合わせは、こうした質問で正しいコンテキストを見つけやすくするためのものです。&lt;/p&gt;
&lt;h2 id=&#34;rag-との関係&#34;&gt;RAG との関係
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;qmd&lt;/code&gt; は、Markdown ドキュメント向けの軽量 RAG コンポーネントと見ることができます。&lt;/p&gt;
&lt;p&gt;完全な Q&amp;amp;A システムを代わりに作るものではありません。「関連するドキュメント断片を見つける」ことに集中しています。その後、それらの断片をどう使うかは、CLI、SDK、MCP クライアント、または自分の Agent ワークフローに任せられます。&lt;/p&gt;
&lt;p&gt;この位置づけは実用的です。多くのプロジェクトは巨大な知識ベースシステムを必要としていません。必要なのは、AI がローカルドキュメントをより正確かつ素早く検索し、その結果を現在のタスクへ戻せることです。&lt;/p&gt;
&lt;h2 id=&#34;利用時の注意&#34;&gt;利用時の注意
&lt;/h2&gt;&lt;p&gt;第一に、ドキュメント品質は依然として重要です。&lt;/p&gt;
&lt;p&gt;検索ツールは既存の内容を見つけるだけです。ドキュメント自体が古い、重複している、矛盾している場合、AI は誤ったコンテキストを受け取る可能性があります。&lt;code&gt;qmd&lt;/code&gt; を Agent に接続する前に、重要なドキュメントを整理した方がよいです。&lt;/p&gt;
&lt;p&gt;第二に、インデックス範囲を広げすぎないことです。&lt;/p&gt;
&lt;p&gt;リポジトリ内のすべての Markdown を入れれば良いとは限りません。依存パッケージのドキュメント、一時メモ、古い案の草稿は結果を汚す可能性があります。どのディレクトリが信頼できるドキュメントソースかを明確にする方がよいです。&lt;/p&gt;
&lt;p&gt;第三に、検索結果には出典を残すことです。&lt;/p&gt;
&lt;p&gt;AI がドキュメント断片を使うとき、それがどのファイル、どの章から来たのか分かる方がよいです。人間が確認しやすくなり、「ドキュメントの結論に見えるが実はモデルの要約」という問題も減ります。&lt;/p&gt;
&lt;p&gt;第四に、人間の判断を完全に置き換えないことです。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;qmd&lt;/code&gt; はコンテキストの再現率を高められますが、プロジェクトの真実の源を置き換えるものではありません。重要な変更では、現在のコード、テスト結果、最新要件を確認する必要があります。&lt;/p&gt;
&lt;h2 id=&#34;向いているチーム&#34;&gt;向いているチーム
&lt;/h2&gt;&lt;p&gt;チームがすでに AI Agent を日常開発フローに入れ始めているなら、&lt;code&gt;qmd&lt;/code&gt; のようなツールは価値があります。&lt;/p&gt;
&lt;p&gt;特に次のようなチームに向いています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ドキュメントを多く書いている&lt;/li&gt;
&lt;li&gt;プロジェクト履歴が長い&lt;/li&gt;
&lt;li&gt;新メンバーと AI の両方が素早く背景を理解する必要がある&lt;/li&gt;
&lt;li&gt;アーキテクチャ決定記録をよく保守している&lt;/li&gt;
&lt;li&gt;Markdown の規約ドキュメントが多い&lt;/li&gt;
&lt;li&gt;AI がコード変更前にルールを確認するようにしたい&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;目的は AI を「全知全能」にすることではありません。AI が推測を減らし、より多く調べるようにすることです。&lt;/p&gt;
&lt;h2 id=&#34;参考&#34;&gt;参考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/tobi/qmd&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;tobi/qmd&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;最後に&#34;&gt;最後に
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;qmd&lt;/code&gt; の価値は、ローカル Markdown ドキュメントを AI Agent が安定して呼び出せる検索入口に変えることです。&lt;/p&gt;
&lt;p&gt;プロジェクトドキュメントが「人間が読む説明」から「人間と AI の両方が検索できるコンテキスト源」になると、AI コーディングアシスタントはプロジェクトルールに従いやすくなります。&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
