メインコンテンツまでスキップ

ナレッジと MCP

RAG パイプライン

PDF をアップロードし、ベクトル類似検索で内容について質問できます。

RAG にはモデルオファリングカタログ(model_offerings.jsonc)の embeddings オファリング が必要です。作成はアプリ内の Model Settings 画面、chatwalaau models add、または手動で 行えます:

{
"id": "embed",
"provider": "azure-openai",
"operations": ["embeddings"],
"model_ref": "text-embedding-3-small"
}

パイプラインの設定値は(モデルルーティングではないため)引き続き通常の .env の値です:

CHROMA_DIR=.chroma
RAG_COLLECTION_NAME=default
RAG_TOP_K=5
RAG_CHUNK_SIZE=800
RAG_CHUNK_OVERLAP=200
# RAG_CHUNK_MIN_SIZE=200 # 未設定 -> RAG_CHUNK_SIZE // 4、0 で末尾結合を無効化

embeddings オファリングが無い場合、RAG 検索・取り込みは追加を促す明確なメッセージを返し ます(アプリは通常どおり起動します)。

手順:

  1. + -> Attach PDF で文書をアップロード
  2. 取り込みジョブを投入 -- エージェントに 「この文書を取り込んで」 と依頼するか、 Pipelines ポータル(下記)を開いてファイルパスを指定し rag-ingest を投入
  3. パイプラインジョブ実行: PDF 解析 -> チャンク化 -> 埋め込み -> ChromaDB 保存
  4. 質問: 「文書には X について何が書いてある?」
  5. エージェントが出典付き(ファイル名・ページ)で回答

ポイント: ファイルベースの ChromaDB 保存、シングルトン埋め込みクライアント (資格情報解決と TLS ハンドシェイクはプロセスごとに 1 回)、末尾結合付きの オーバーラップチャンク化、メタデータによる出典、再取り込み時の自動重複排除、チャット 内の PDF ファイルカード。取り込みは Pipeline ジョブエンジン(下記、組み込み)で実行されます。

Pipeline ジョブ

データ処理タスク(現在は RAG 取り込み、今後ジョブ種別を追加)をインプロセスの パイプラインエンジンと専用の管理画面で実行します。サイドバー下部の Pipelines アイコン(Declarative Agents の隣)から:

  • ジョブ種別フォームから投入(例: rag-ingest に PDF パス)
  • プログレスバーで進捗をライブ表示
  • 実行中ジョブのキャンセル、終了ジョブの削除
  • 実行履歴の確認 -- 各実行は開いて見られる取得ログを保持

既定で有効PIPELINE_ENABLED=true)。パイプラインジョブは curated な インプロセスジョブ種別(shell なし、CODING_ENABLED 不要)で、スケジュールスクリプト を実行し既定で無効の Cron スケジューラとは区別されます。設定:

# Pipeline ジョブ(インプロセスのデータ処理エンジン)
PIPELINE_ENABLED=true
PIPELINE_JOBS_DIR=.pipeline # 1ジョブ1 JSON + output/{job}/{run}/ 実行ログ
PIPELINE_OUTPUT_MAX_BYTES=1048576 # 実行ごとの取得ログ上限
PIPELINE_MAX_CONCURRENT_JOBS=2

エージェントは manage_pipeline ツール(submit / list / get / cancel / delete)でも ジョブを管理できます。エージェントツールと REST API(/api/pipeline/*)は同じエンジンと ストアを共有するため、チャットとポータルが食い違うことはありません。

MCP 連携

Model Context Protocol を介して外部ツールを接続 します(Claude Desktop 互換設定)。ChatWalaʻau は同梱デフォルト (mcp_servers.default.jsonc)を持ち、オペレータ上書き(mcp_servers.jsonc、 gitignore 済み)を優先します。初回のコピーは不要です。

# 任意: 既定は mcp_servers.jsonc。空にすると MCP を無効化。
# MCP_CONFIG_FILE=mcp_servers.jsonc
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/workspace"]
},
"remote-api": {
"url": "https://api.example.com/mcp",
"headers": { "Authorization": "Bearer token" }
}
}
}
  • JSONC -- ///* */ コメントを除去。厳密 JSON もそのまま受理するため、既存 の Claude Desktop / Claude Code / Cursor 設定を再利用可能
  • stdio サーバ(command)は起動され、HTTP/SSE サーバ(url)は接続される
  • MCP ツールは組み込みツールと並び、Plug アイコンで表示
  • サーバのライフサイクルは自動管理(ゾンビプロセス防止つき)
  • 任意のサーバ単位フィールド: "load_prompts": trueprompts/list 実装サーバ向け。 既定 false)、"load_tools": false"request_timeout": 30

MCP ツールを実行中に管理する

MCP ツールが多いと、毎ターンの入力トークンを消費します(各ツールの名前・説明・スキーマ がモデルへ送られます)。MCP Tools マネージャを使うと、使っていないツールを設定編集や 再起動なしで無効化できます。

  • チャット入力欄のコントロール行にある Plug(MCP) アイコンから開きます。アイコンは マネージャのエンドポイントへ到達可能なら常に表示され、サーバが未接続なら設定パスと Reload ボタンを備えた空状態が開きます。
  • モーダルはウィンドウの約 90% で開き、左にサーバ一覧右に詳細ペインを表示します。 サーバ全体、または個別ツールを切り替えられます(サーバが提供していればツールの説明も 表示)。
  • 保存ボタンは変更後にのみ有効化されます。保存時は確認のうえ、適用中は 「エージェント再構築中」のインジケータを表示します。未保存の変更があるまま閉じようと すると、保存か破棄かを確認します。
  • 保存するとエージェントを再構築し、次のメッセージから選択したツールだけを使います。 選択はメモリのみで保持され、再起動するとすべての MCP ツールが再び有効になります。
  • Reload(フッタ+空状態)は mcp_servers.jsonc を再パースしてサーバを完全に再接続し、 エージェントを再構築します。設定で追加・編集したサーバを再起動なしで反映できます。 Reload は確認のうえ、同じブロッキングインジケータを表示します。設定済みだが未接続の サーバは、再接続するまでトグルが無効化され「Reload で反映」のヒントが表示されます。
  • このマネージャはオペレータ向け機能で、他の書き込み系エンドポイントと同じ認証で保護され ます(localhost は除外)。設定はそのサーバの全ユーザに適用されます。

MCP Apps

MCP ツールが _meta.ui リソースを宣言すると、その HTML View がチャット内の インタラクティブ UI として、安全な二重 iframe サンドボックスで描画されます。

# MCP_APPS_SANDBOX_PORT=8081 # 任意のサンドボックスプロキシポート
  • 二重 iframe サンドボックス -- View は別オリジンで動作し、ホストの DOM・ Cookie・ストレージにアクセス不可。CSP が既定で外部リソースを遮断
  • 監査可能 -- View からサーバへの通信はすべてホスト経由でプロキシ
  • 表示モード -- インラインとフルスクリーン。セッション永続化で View HTML を 保存し再読込に対応
  • 段階的強化 -- UI が使えない場合はテキストとして動作

設定不要で自動的に有効化され、サンドボックスプロキシは MCP サーバと同時に起動します。