目次: 制約 · スタック比較 · インストール早見 · 手順 · 切り分け · 運用指標 · FAQ
リモート MacでHaystack 2.x Pipelineに RAG を固定します。LiteLLMの多プロバイダ集約とは異なり、Schema と検索遮断はコンポーネント側です。LangGraphの代わりに Pipeline なら、Schema・再試行、チャンク、可観測性を合わせます。外向きは要約のみ。購入・料金はログインなし。
制約の三層
第一 無 Schema 引数が API を汚染。第二 Retriever と LLM が同一タイムアウトだと遅い検索が全体へ波及。第三 段階名のない夜間バッチは stderr だけでは切り分け困難。
技術スタックの違い(LiteLLM / LangGraph 対比)
| 観点 | 本稿(Haystack 2.x) | 他記事の焦点 |
|---|---|---|
| オーケストレーション | Pipeline・Component で生成器・Retriever・ツールを直列接続 | LiteLLM:多プロバイダプロキシ;LangGraph:グラフと checkpoint |
| 遮断の置き場所 | Retriever の deadline・ツール短絡・パイプライン共通再試行 | LiteLLM:RPM・TPM;LangGraph:retry_policy とヘルスプローブ |
| 共通 | OpenClaw 認証・最小スコープ・失敗要約 | |
インストールとゲートウェイ早見
| 項目 | 推奨 | 補足 |
|---|---|---|
| Python・Haystack | uv / venv で固定、pip install haystack-ai | torch 系スタックと版を揃える |
| ベクトル保存 | 索引ディスクを分離 | 夜間索引とオンライン IO を分ける |
| OpenClaw | launchd・ループバック・Bearer | ツール HTTP は 127.0.0.1、X-Request-ID 付与 |
再現手順(六段階)
其一 専用アカウントと書き込みルート・ベクトル権限を絞り、鍵は環境変数とキチェーンのみにしリポジトリへ入れません。
其二 OpenClaw の最小スコープを検証したうえで、Haystack のツール HTTP はループバック背後に置き、外向きはゲートウェイだけを公開します。
其三 ツールごとに draft-07 JSON Schema を置き、失敗時は TOOL_SCHEMA_INVALID で短絡します。
其四 Retriever に別 deadline を与え、連続タイムアウト時は半開で少量プローブに切り替えます。
其五 再試行は指数バックオフと full jitter、上限は設定ハッシュへ記録します。
其六 出口で段階・コンポーネント・HTTP・サブコード・短いスニペットのみを出し、原文は保存しません。
# validate(tool_inputs); retriever_timeout_ms < llm_timeout_ms
# on_failure: {stage, component, code, trace_id, snippet}切り分け
- 401:同一 Bearer でループバック curl、X-Request-ID でログ結合。
- Schema 急増:プロンプトと Schema を同じリリースタグで固定。
- 検索誤判定:テナント別 deadline とミスブロックで幻覚を抑止。
- ウェブフック過多:キューでレート制限しプローブ流量と分離。
運用で残す指標
- Schema と設定ハッシュを同一タグで束ね一括追跡。
- Retriever と LLM のタイムアウトを分け SLA を薄めない。
- 失敗要約を OpenTelemetry GenAI と揃え、テナントキーでコストと信頼性を切る。
FAQ
OpenClaw は必須? 運用では推奨。無いとツール面と鍵の露出が広がります。
LiteLLM と併用? 生成器背後のプロバイダとしてだけ置き、RPM 遮断は別層で。
夜間バッチ? 専用リモート Macで索引とオンラインを分離。