LLMはインジェストステップで保持されたものしか取得できないので、RAGパイプラインの最初の仕事はWord、PDF、Excel、電子書籍ファイルをクリーンなMarkdownに変換することです。GroupDocs.Markdown.Mcpを使用すると、AIエージェントがローカルで、Claude Desktop、Claude Code、Cursor、または他のMCPクライアントからそれを実行し、ファイルは決してマシンから出ません。

このフォルダー内のすべてのPDFをMarkdownに変換し、画像はファイルとして、フロントマターを付けてください。

設定とトラブルシューティングを含むステップバイステップのバージョンはドキュメントにあります: How to convert documents to Markdown for RAG with an AI agent.

なぜほとんどのRAGパイプラインは間違った変換ステップから始まるのか?

通常の習慣は変換を配管作業として扱うことです。最も近いパーサーにファイルを送信し、返ってくるテキストをそのまま受け入れ、埋め込みに労力を費やします。これは重要度の順序を逆転させます。チャンク化は見出しで分割し、セル値のストリームとして届くテーブルは何の質問にも答えませんし、サードパーティのパーサーにアップロードされたコーパスは計画していなかった情報開示になります。検索結果が悪い場合、原因はパイプラインが最初に触れたファイルにあることがあります。

この投稿では、次の3つの修正を提案します:ステップを自分のマシン上に保つ、出力オプションを意図的に選択する、そして結果を信頼せずに検証する。

ドキュメントインジェストにクラウドパーサーは適切か?

内部コーパスの場合、通常は適切ではありません。インジェストは所有するすべてのドキュメント(ポリシー、価格表、事後分析)を見る唯一の段階です。すべてのファイルを受け取るパーシングサービスは、個々のファイルではなくアーカイブ全体を見たことになります。

GroupDocs.Markdown.McpはMCP stdioトランスポートを使用します。AIクライアントがサーバーを子プロセスとして起動し、データの流れはエージェント → ローカルサーバー → ローカルファイルシステムです。サーバーには受信ポートも外部エンドポイントもテレメトリもありません。エージェントが返信に書き込む内容だけがモデルプロバイダーに送られます。メータリングライセンスはアウトバウンドトラフィックが必要な唯一のケースで、使用量を報告しますがドキュメント内容は送信せず、ライセンスファイルはオフラインで機能します。

Dockerで起動します:

docker run --rm -i -v $(pwd)/documents:/data \
  ghcr.io/groupdocs-markdown/markdown-net-mcp:latest

または、.NET 10 SDKを使用して dnx GroupDocs.Markdown.Mcp --yes と実行します。GROUPDOCS_MCP_STORAGE_PATH をコーパスが格納されているフォルダーに設定してください。

どのGroupDocsサーバーがMarkdownに変換するか:MarkdownかConversionか?

どちらもMarkdownを生成できますが、答える質問が異なります。

必要なもの 使用するもの
画像、フレーバー、ページ選択、フロントマターを制御できる構造保持Markdown GroupDocs.Markdown.Mcp (this server)
多数のターゲットのうちの一つとしてのMarkdown、または同一ワークフローでDOCX→PDF→XLSX変換 GroupDocs.Conversion.Mcp、100以上のフォーマットを双方向でカバー

Markdownが目的地で品質が重要な場合は専用エンジンを選びます。多数のフォーマット間で変換し、Markdownがそのうちの一つに過ぎない場合は汎用コンバータを選びます。そのPDFルートは3 ways to turn PDFs into LLM-ready Markdown (and why local wins)で説明されています。

なぜMarkdownがRAGインジェストに最適なフォーマットなのか?

見出しは残り、テーブルはテーブルのまま、リストはリストのままです。これらがチャンク化と埋め込みで扱う単位です。サーバーはDOCX、DOC、RTF、ODT、XLSX、XLS、ODS、CSV、TSV、EPUB、MOBI、TXT、CHM、その他20以上のフォーマットを convert_to_markdown という単一ツールで変換します。Word系のソースは構造がファイル内に明示的にあるため最もクリーンに変換されます。スプレッドシートはMarkdownテーブルになります。

インデックス作成時に重要になる3つのオプション:

オプション インジェスト設定 理由
images "file"、または文章のみの場合は "skip" デフォルトの base64 は数メガバイトのデータURIをチャンクの真ん中に入れてしまう
frontMatter true タイトル、著者、フォーマット、ページ数を含むYAMLがチャンクメタデータとなり、回答時にファイル名ではなくドキュメントタイトルを引用できる
flavor "github"(デフォルト)または "commonmark" 結果を読むパーサーに合わせる

例示セッション(抜粋)

You:   Before converting anything: what is the license status of the markdown server?
Agent: get_license_status -> mode: licensed, engine GroupDocs.Markdown 26.3, server 26.9.0.
You:   Convert every PDF in this folder to Markdown, images as files, with front matter.
Agent: convert_to_markdown (images: "file", frontMatter: true) for each PDF.
       Saved one .md per document, with extracted images alongside.
You:   For each converted file, give me the source page count and the Markdown length.
Agent: get_document_info for each source, then the length of each saved .md.
       One 300-page file produced only 4 KB of Markdown: likely a scan.

インデックス作成前にコーパスをどうチェックするか?

結果が信頼できると判断するまで実行は未検証とみなしてください。次のプロンプトでほとんどの失敗を捕捉できます:

各変換済みファイルについて、元のページ数と生成されたMarkdownの長さを教えてください。

get_document_info は fileName、fileFormat、pageCount、title、author、isEncrypted を変換せずに返すため、エージェントはページ数を書き出したものと比較できます。300ページのマニュアルが4KBのMarkdownになっている場合はスキャンか途中で切れた実行です。

スキャンされたPDFはハードリミットです。テキスト層がなく、サーバーにはOCRステップがないため、これらのファイルは別途処理してください。

正直な制限:評価キャップ

ライセンスがない場合、サーバーは評価モードで動作し、最初の3ページだけが処理され、各ページに評価用の透かしが入ります。出力は有効なMarkdownですが、残りがスキップされたことは報告されないため、この方法で作成されたインデックスは完全に見えて実際はほぼ空です。各インジェスト実行の最初の呼び出しとして get_license_status を実行してください。

FAQ

RAGインジェストに最適なフォーマットは何ですか?

Markdownは見出し、リスト、テーブルをうまく扱えるチャンク化・埋め込みに適した選択肢です。images: "file" と frontMatter: true を使用すれば、チャンクにbase64が入らず、ソースメタデータが保持されます。

ドキュメントをアップロードせずにWordをMarkdownに変換できますか?

はい。GroupDocs.Markdown.Mcpはstdio上でローカルプロセスとして動作し、エージェントは設定したフォルダーからファイルを読み取ります。

PDFをベクトルデータベース用のMarkdownに変換しますか?

テキスト層を持つPDFは見出し、リスト、テーブルを復元して変換します。スキャンされたPDFはテキストがなく、OCRステップもないため変換できません。

さらに深掘り