mcpField
H
haystack

haystack

github.com/magnus919開発15358 回インストール1 日前に更新
リポジトリ

haystack について

Haystackで検索・NLPパイプラインを構築する開発者向けのリファレンススキルです。検証可能なコンポーネントDAGに加え、設計ガイド、テンプレート、トラブルシューティングを収録しています。

主な機能

  1. 01検証可能なコンポーネントDAG
  2. 02インデックスとクエリの分離
  3. 03Jinja2プロンプトテンプレート
  4. 04埋め込み・BM25・ハイブリッド検索
  5. 05パイプライン評価のガイド
  6. 06テンプレートとトラブル対応資料

活用シーン

  1. 01ドキュメントのインデックス設計
  2. 02検索と回答生成フローの構築
  3. 03BM25と埋め込み検索の併用
  4. 04評価器による出力の測定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/magnus919/agent-skills --skill haystack

インストール後、Claude Code で/haystackを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

README.md
evals/
evals.json
references/
deployment.md
document-stores.md
evaluation.md
faq-and-troubleshooting.md
file-converters.md
pipeline-design.md
retrievers.md
validation-audit.md
scripts/
check-setup.py
templates/
hybrid-rag.py
indexing-pipeline.py
query-pipeline.py

詳細

Haystack エキスパートスキル

Haystack(deepset 製)は、検索および NLP パイプラインを構築するための本番環境向けフレームワークです。中心となる抽象概念は Pipeline です。これは、型付きコンポーネントを明示的な接続で結んだ有向非巡回グラフです。LangChain の LCEL(パイプ演算子)や LlamaIndex のクエリエンジンとは異なり、Haystack のパイプラインは add_component と connect を使って事前に宣言するため、検証済みでデバッグしやすい DAG を構築できます。

コアパラダイム

from haystack import Pipeline
from haystack.components.embedders import SentenceTransformersTextEmbedder
from haystack.components.retrievers.in_memory import InMemoryEmbeddingRetriever
from haystack.components.builders import PromptBuilder
from haystack.components.generators import OpenAIGenerator
from haystack.document_stores.in_memory import InMemoryDocumentStore

# Build a pipeline
document_store = InMemoryDocumentStore()
pipeline = Pipeline()
pipeline.add_component("embedder", SentenceTransformersTextEmbedder())
pipeline.add_component("retriever", InMemoryEmbeddingRetriever(document_store=document_store))
pipeline.add_component("prompt_builder", PromptBuilder(template="Answer using: {{documents}}\n\nQuestion: {{question}}"))
pipeline.add_component("generator", OpenAIGenerator())

# Connect components
pipeline.connect("embedder.embedding", "retriever.query_embedding")
pipeline.connect("retriever.documents", "prompt_builder.documents")
pipeline.connect("prompt_builder", "generator")

# Run
result = pipeline.run({"embedder": {"text": "What is Haystack?"}, "prompt_builder": {"question": "What is Haystack?"}})

コア原則

  1. パイプラインは検証済みの DAG です。 add_component + connect を使います。パイプラインの検証では実行前にエラーが検出されるため、開発中に活用してください。
  2. コンポーネントには型があります。 各コンポーネントには入力/出力スロットがあります。接続するには型が一致している必要があります。これにより、実行時エラーを防げます。
  3. PromptBuilder は Jinja2 を使用します。 テンプレートは f-string ではなく、Jinja2 文字列です。{{documents}}、{{query}}、{{question}} は変数のプレースホルダーです。
  4. インデックス作成とクエリは別々のパイプラインです。 一方のパイプラインでドキュメントの読み込み、クリーニング、埋め込み、書き込みを行い、もう一方で検索と回答の生成を行います。両者は DocumentStore を共有します。
  5. 評価もパイプラインです。 評価コンポーネントを追加して、忠実性、関連性、またはカスタム指標を測定します。

どこから始めるか

すでにあるものここから始める
何もない — Haystack を試している基本的なインデックス作成+クエリのパイプラインを構築する
インデックスを作成するドキュメントインデックス作成パイプラインを構築する(コンバーター、スプリッター、エンベッダー、ライター)
検索のユースケースクエリパイプラインを構築する(エンベッダー、リトリーバー、プロンプト、ジェネレーター)
本番環境へのデプロイHayhooks と評価パイプラインを追加する

クイックリファレンス

タスク方法リファレンス
インデックス作成パイプラインの構築add_component -> connect -> runreferences/pipeline-design.md
クエリパイプラインの構築retriever -> prompt_builder -> generatorreferences/pipeline-design.md
ドキュメントストアの選択InMemory(開発)、Elasticsearch/Pinecone(本番)references/document-stores.md
埋め込み検索SentenceTransformersTextEmbedder + EmbeddingRetrieverreferences/retrievers.md
ハイブリッド検索BM25 + Embedding を並列実行し、DocumentJoiner を使用references/retrievers.md
プロンプトテンプレートPromptBuilder で Jinja2 を使用references/pipeline-design.md
評価DeepEvalEvaluator、SASEvaluatorreferences/evaluation.md
デプロイHayhooks REST APIreferences/deployment.md

フレームワーク選択ガイド

シナリオ選択するもの理由
検索/NLP パイプラインHaystackパイプライン DAG モデルは、検索中心のワークロードにおいて最も成熟しています
クエリ対象のドキュメント/RAGLlamaIndexデータの取り込みが主な基本機能です
チェーン/エージェントの構成LangChain汎用的なチェーン構築に適した LCEL パイプ演算子を備えています
コンパイル済みプロンプトプログラムDSPy指標に基づいてプロンプトを自動最適化します
ロールベースのマルチエージェントCrewAIより高水準のエージェント抽象化を提供します

リファレンスファイル

リファレンス読み込むタイミングファイル
パイプライン設計インデックス作成とクエリのパイプラインを構築するときreferences/pipeline-design.md
ドキュメントストアストアの選択と設定を行うときreferences/document-stores.md
リトリーバー埋め込み、BM25、ハイブリッド検索について調べるときreferences/retrievers.md
検証監査すべての API に関する主張の調査・検証を行うときreferences/validation-audit.md
ファイルコンバーター複数形式のインデックス作成、YAML シリアル化、コンポーネントの種類について調べるときreferences/file-converters.md
評価指標、評価器、パイプライン評価について調べるときreferences/evaluation.md
デプロイHayhooks、コンテナ化、本番環境について調べるときreferences/deployment.md
FAQ とトラブルシューティングよくあるエラーと解決方法を調べるときreferences/faq-and-troubleshooting.md

テンプレート

テンプレート使用する場面ファイル
インデックス作成パイプライン読み込み、分割、埋め込み、ストアへの書き込みtemplates/indexing-pipeline.py
クエリパイプライン検索、プロンプトの作成、回答の生成templates/query-pipeline.py
ハイブリッド RAGBM25 と埋め込みを並列実行templates/hybrid-rag.py

トラブルシューティング

症状考えられる原因解決方法参照先
パイプラインの実行エラーコンポーネントの接続の不一致コンポーネントの入力/出力スロットの型を確認しますreferences/pipeline-design.md
ドキュメントが検索されないドキュメントストアが空先にインデックス作成パイプラインを実行しますreferences/pipeline-design.md
プロンプトがレンダリングされないJinja2 テンプレート内の変数名が正しくない{{variables}} がパイプラインの入力と一致しているか確認しますreferences/pipeline-design.md
検索が遅いANN ではなく全件スキャンを実行している近似最近傍インデックスを設定しますreferences/retrievers.md
埋め込みの不一致インデックス作成とクエリで異なるモデルを使用している両方のパイプラインで同じモデルを使用しますreferences/retrievers.md
Hayhooks が起動しないポートの競合または設定の不足ポートを確認し、オプションを確認するには --help を指定して実行しますreferences/deployment.md

コメント