ローカル環境でAIエージェントを動かしたい。でもフレームワーク選びで迷って手が止まる——そんな経験はないでしょうか。

Google Gemmaチームが2026年5月1日、オープンソースのAIオーケストレーションフレームワーク「Haystack」とGemma 4を組み合わせた公式実習ノートブックを公開しました。RAG、画像QA、マルチモーダルエージェント、MCP連携の4つを、1本のノートブックで一気に試せます。

この記事でわかること

  • Haystackの設計思想と基本構造
  • Gemma 4との組み合わせで動く4つの実践デモの中身
  • セットアップに必要なパッケージと手順
  • LangChainやLlamaIndexとの設計上の違い

Haystackとは何か

Haystackは、ドイツのdeepset社が開発するオープンソースのAIオーケストレーションフレームワークです。GitHubスター数は25,000超、ライセンスはApache 2.0で、2026年5月時点の最新バージョンは2.28です。

Haystackの中心概念は「パイプライン」と「コンポーネント」の2つです。パイプラインは、検索・前処理・生成といった処理ステップをコンポーネントとして定義し、それらを接続して一連のワークフローを構成します。各コンポーネントの入出力は型が明示されており、接続時に型の不一致があればエラーで教えてくれます。

もう一つの重要な概念が「Agent」です。AgentはチャットLLMとツールを組み合わせた自動実行ループで、モデルがツール呼び出しを要求すると実行し、結果をモデルに戻して最終回答が出るまで繰り返します。

4つの実践デモの内容

公開されたノートブックでは、Ollamaを使ってGemma 4 E4Bモデル(実効パラメータ4.5B、埋め込み込みで8B)をローカルで動かし、4種類のアプリケーションを構築します。

デモ1:WikipediaデータでRAGパイプライン

最初のデモは、Wikipediaから取得したロックバンドの記事をBM25検索でインデックスし、Gemma 4で回答を生成するRAGパイプラインです。

構成はシンプルで、InMemoryDocumentStoreにドキュメントを格納し、BM25Retrieverで関連文書を取得、ChatPromptBuilderでプロンプトを組み立て、OllamaChatGeneratorで回答を生成します。ここではGemma 4のthinkingモード(推論過程を表示する機能)をオフにして、応答速度を優先しています。

Haystackのパイプラインは、コンポーネント同士をconnectメソッドでつなぐだけで構築できます。retrieverの出力をprompt_builderへ、prompt_builderの出力をllmへ渡す、という流れが明示的に記述されるため、データの流れが追いやすい設計です。

デモ2:PDFの図表を読み取る画像QA

2つ目は、Gemma 4のマルチモーダル機能を使った画像質問応答です。Googleの「Scaling Instruction-Finetuned Language Models」論文のPDFから特定ページを画像に変換し、図表の内容について質問します。

このデモではthinkingモードをオンにしているため、Gemma 4がグラフの軸・凡例・データ系列を段階的に分析する推論過程がそのまま出力されます。「Figure 6の主な結論は何か」という質問に対し、Chain-of-Thought promptingがFlan-PaLMの性能を押し上げるという正確な回答を返しています。

HaystackのPDFToImageContentコンポーネントがPDFのページ画像変換を担当し、ChatMessage.from_userでテキストと画像を一つのメッセージにまとめてモデルに渡します。

デモ3:地図画像から都市を特定する天気エージェント

3つ目は、HaystackのAgent機能を使ったマルチモーダルエージェントです。フィレンツェの観光地図画像を渡し、「地図の都市を特定して天気を調べ、おすすめの観光地3つと天気を教えて」と指示します。

エージェントはまず画像からアルノ川やドゥオーモを認識してフィレンツェと判断し、次にget_weatherツールを呼び出して現在の気象データを取得します。最終回答では都市名・観光地トップ3・天気情報がまとまって返されます。

Haystackでは、Pythonの関数に@toolデコレーターを付けるだけでAgentが使えるツールになります。Agentの初期化時にツールのリストを渡すと、モデルが必要に応じて自動的にツールを選択・実行します。

デモ4:GitHub MCPサーバーと連携する検索エージェント

4つ目は、MCPを使ったツール自動発見のデモです。MCP(Model Context Protocol)は、LLMが外部ツールを発見・呼び出すための標準プロトコルです。

このデモでは、GitHubの公式MCPサーバー(https://api.githubcopilot.com/mcp/)にHaystackのMCPToolsetで接続します。mcp-haystackパッケージがMCPサーバーとの通信を担当し、サーバーが公開するツール群(リポジトリ検索、Issue読み取り、PR作成など)をAgentが動的に発見して使います。

注目すべき点は、事前にどのツールを使うか指定していないことです。Agentがサーバーから利用可能なツール一覧を受け取り、タスクに応じて適切なものを選択します。「karpathyユーザーの人気プロジェクトトップ5は?」と質問すると、Agentが自らsearch_repositories等のツールを見つけて実行します。

セットアップ手順

必要なパッケージは以下の1行でインストールできます。

pip install haystack-ai mcp-haystack ollama-haystack

Gemma 4のモデル配信にはOllamaを使います。Ollamaのインストール後、以下のコマンドでモデルをダウンロードします。

ollama pull gemma4:e4b

E4Bモデルは実効4.5Bパラメータで、8GB程度のVRAMがあれば動作します。Google Colabの無料GPU環境でも実行可能です。ノートブック自体はColabで直接開けるリンクが公式ページに用意されています。

MCPデモを動かす場合は、GitHub Personal Access Token(読み取り権限)が追加で必要です。

LangChainやLlamaIndexとの違い

Haystackの特徴は、パイプラインの構造が明示的なことです。LangChainがチェーンの内部で暗黙的にデータを受け渡すのに対し、Haystackではコンポーネント間の接続をconnectで宣言し、データの流れを可視化できます。デバッグ時にどのコンポーネントで問題が起きたか特定しやすい設計です。

LlamaIndexがドキュメント検索・インデックスに特化しているのに対し、Haystackはエージェント、RAG、マルチモーダル処理を同一のパイプライン概念で統一的に扱います。MCPToolsetのようなプロトコル統合も、パイプラインの一部として自然に組み込めます。

モデル対応の幅広さも強みです。OpenAI、Google、Anthropic、Hugging Faceのモデルに加え、Ollamaを介したローカルモデルまでサポートしており、同じパイプライン構造のままモデルだけ差し替えられます。

ローカルAIエージェント開発の出発点として

今回のノートブックは、RAG・画像QA・マルチモーダルエージェント・MCP連携という4つのユースケースを一本のノートブックに凝縮しています。Gemma 4 E4Bという軽量モデルでこれだけの処理が動く点は、ローカルLLM活用の実用性を示しています。

Haystackを触ったことがない人にとっては、4つのデモを通じてパイプラインとAgentの両方を体験できる効率的な入門教材です。すでにLangChainやLlamaIndexを使っている人にとっては、Haystackの明示的なパイプライン設計を比較検討する材料になります。