【M4 Mac mini / 16GB】AI検証ログ #05:ナレッジパイプライン導入
はじめに
こんにちは、daduです。
前回(#04)の記事では、基本のナレッジ機能を使って架空アニメ『ネクサス・コア』のRAG環境を構築しました。
今回は、「ナレッジパイプライン」に挑戦します。「何が違うの?」と思われるかもしれませんが、これはデータの取り込みからクリーニング、チャンク分割までを一つの「フロー」として可視化し、カスタマイズできる強力な機能となっています。
(といいつつ、よくわからないと思うのでとりあえずやってみたほうが理解が早いと思います)
しかし、ローカル環境(OrbStack / Docker)でこれを使おうとすると、「通信エラー」が発生したりなどちょっと面倒でしたのでそこもお伝えできればと思います。
1. ナレッジパイプラインを採用する理由
普通のナレッジ登録が「ファイルのアップロード」なら、パイプラインは「情報の加工ラインの構築」になります。
または、ざっくりいうと、PDFやWordなどをナレッジ登録前に手元でAIが覚えやすいように工夫、つまりはマークダウン形式などで出力したりしてた作業を代替してくれるというものです。
フローはこんな感じ

※Dify Extractor、General Chunkerはフローからブロック追加→ツールからインストールが必要

抽出器(Dify Extractor)
アップロードされたファイル(PDF, Word, Excel, Markdownなど)から、AIが処理できる「生のテキスト」を引き出す役割を担います。
- 手作業の代替: 以前はPDFの内容をコピペして.txtに保存し直していましたが、これを全自動で行ってくれます。
- クリーンアップ: 不要な制御コードやメタデータを除去し、純粋な本文だけを抽出して次の工程へ渡します。
設定例)

分割器(General Chunker)
抽出された長いテキストを、AI(Llama 3.2など)が一度に処理できる適切なサイズに「刻む」役割です。
- 文脈の維持: 闇雲に切るのではなく、。や\n(改行)などの区切り文字を認識して分割します。
- オーバーラップ(のりしろ): チャンクの末尾と次のチャンクの先頭を少し重複させることで、文章が途切れても文脈が失われないように調整します。
- 16GB Mac miniへの恩恵: 一つのチャンクを適切なサイズ(800文字程度)に抑えることで、メモリ消費を抑えつつ、検索精度を最大化できます。
設定例)

2. 遭遇したエラー:Dify Extractorの反乱
意気揚々とパイプラインを組んで実行した直後、Dify Extractor ノードで以下のエラーを吐いて停止しました。
ValueError: Invalid file URL ... missing an 'http://' or 'https://' protocol.
プロトコルがないと言われますが、入力変数は正しく繋いでいたのですが、
Dify内部で生成されるファイル一時保存先のURL解決に失敗していたようです。
3. 【重要】OrbStack環境でのネットワーク設定
原因は、Dockerコンテナ内のDifyが「自分自身の居場所(URL)」を正しく認識できていないようなので、.env ファイルを修正して、コンテナの外(Mac本体)と中(Dify内部)の住所を教えてあげる必要があります。
解決策:.envの書き換え
dockerフォルダ内にある隠しファイル.envを開き、以下の通り修正してコンテナを再起動(docker compose down && docker compose up -d)します。
# docker/.env
# ブラウザから見える自分の住所
FILES_URL=http://localhost:5001
# Dockerコンテナ同士が内部ネットワークで通信するための住所
INTERNAL_FILES_URL=http://api:5001
4. テストラン
.envファイルの修正も終わったので改めて実行(テストランというらしい)問題なし。

公開ボタンを押下すると下記メッセージがでる。

そうするとナレッジの画面にパイプラインのナレッジアイコンができているので通常のナレッジと同様にナレッジを登録する(テストランの際に実行したデータは保存されない)

5. チャットフローに組み込んで動作確認
前回検証のチャットフローのナレッジをパイプラインに差し替えます。
(パイプラインはナレッジ作るまでなので以降は問題でないはず)

今回はやたら長い話をしてくれますが大丈夫そうな感じ。

文末にちゃんと引用元を提示しているので問題なさそうです。(前回もこれを見ればよかった)

6. まとめ
今回はDifyの新機能「ナレッジパイプライン」に挑戦しました。
環境構築特有のネットワークトラブルもありましたが、無事にローカル環境での「高度なRAG」を実現することができました。
今回の検証で得られた知見は以下の通りです。
-
パイプラインは「将来の自動化」への投資
手動でのファイル加工(.txt化など)を自動化できるため、大量のドキュメントを扱うようになればなるほど、この仕組みが効いてくるはずです。 -
ローカル環境の「壁」は設定で越えられる
.envの設定ミスによるエラーは絶望感がありますが、Dockerコンテナ同士の「住所(URL)」を正しく教えてあげることで、16GB Mac miniでも安定して動作します。 -
引用元の提示がRAGの信頼性を担保する
チャットの回答にしっかりと引用元が表示されることで、AIの「嘘(ハルシネーション)」を見抜きやすくなり、実務での安心感が増しました。
16GB Mac miniの現在地
「画像認識(VLM)」ではリソースの限界を感じましたが、「テキスト処理基地(RAG)」としての運用であれば、M4 Mac mini(16GB)は極めて優秀なパフォーマンスを発揮してくれています。スワップも抑えられ、メモリプレッシャーも健全な状態をキープできています。
今後の展望
これで、ローカル環境でもRAGを活用したチャットボットが構築できました。 実用に向けては、まだ細かいパラメータの調整やモデルの再選定などが必要になるかと思いますが、そこは継続してブラッシュアップしていくつもりです。
次のステップとしては、「AIエージェント」への進化を目指します。といっても、無料のMCP(Filesystemでローカルファイルを操作したり、Google Search APIの無料枠で最新情報を取得したり)を組み合わせて、単なる回答を超えた「動けるAI」を試していければと考えています。
Discussion