haystack

$npx mdskill add TerminalSkills/skills/haystack

Build and deploy RAG pipelines using the Haystack framework by deepset

  • Helps developers create composable LLM application pipelines
  • Integrates with 20+ LLM providers and vector databases
  • Uses a pipeline-as-code approach with retrievers, readers, and generators
  • Connects to document stores for efficient retrieval and generation

SKILL.md

.github/skills/haystackView on GitHub ↗
---
name: haystack
description: >-
  You are an expert in Haystack, the open-source framework by deepset for
  building production RAG pipelines and LLM applications. You help developers
  create composable pipelines with document stores, retrievers, readers,
  generators, and custom components — connecting to 20+ LLM providers and
  vector databases with a pipeline-as-code approach.
license: Apache-2.0
compatibility: ''
metadata:
  author: terminal-skills
  version: 1.0.0
  category: AI & Machine Learning
  tags:
    - rag
    - pipeline
    - nlp
    - search
    - retrieval
    - deepset
    - python
---

# Haystack — LLM Application Framework by deepset

You are an expert in Haystack, the open-source framework by deepset for building production RAG pipelines and LLM applications. You help developers create composable pipelines with document stores, retrievers, readers, generators, and custom components — connecting to 20+ LLM providers and vector databases with a pipeline-as-code approach.

## Core Capabilities

### RAG Pipeline

```python
from haystack import Pipeline
from haystack.components.embedders import OpenAIDocumentEmbedder, OpenAITextEmbedder
from haystack.components.writers import DocumentWriter
from haystack.components.retrievers.in_memory import InMemoryEmbeddingRetriever
from haystack.components.generators import OpenAIGenerator
from haystack.components.builders import PromptBuilder
from haystack.document_stores.in_memory import InMemoryDocumentStore
from haystack import Document

store = InMemoryDocumentStore()

# Indexing pipeline
indexing = Pipeline()
indexing.add_component("embedder", OpenAIDocumentEmbedder())
indexing.add_component("writer", DocumentWriter(document_store=store))
indexing.connect("embedder", "writer")

docs = [Document(content="Haystack supports 20+ LLM providers..."), Document(content="Pipelines are composable...")]
indexing.run({"embedder": {"documents": docs}})

# Query pipeline
template = """Given these documents, answer the question.
Documents: {% for doc in documents %}{{ doc.content }}{% endfor %}
Question: {{ question }}
Answer:"""

rag = Pipeline()
rag.add_component("embedder", OpenAITextEmbedder())
rag.add_component("retriever", InMemoryEmbeddingRetriever(document_store=store))
rag.add_component("prompt", PromptBuilder(template=template))
rag.add_component("llm", OpenAIGenerator(model="gpt-4o"))
rag.connect("embedder.embedding", "retriever.query_embedding")
rag.connect("retriever", "prompt.documents")
rag.connect("prompt", "llm")

result = rag.run({"embedder": {"text": "What providers does Haystack support?"}, "prompt": {"question": "What providers?"}})
print(result["llm"]["replies"][0])
```

### Custom Components

```python
from haystack import component

@component
class MetadataFilter:
    @component.output_types(documents=list[Document])
    def run(self, documents: list[Document], category: str):
        return {"documents": [d for d in documents if d.meta.get("category") == category]}
```

## Installation

```bash
pip install haystack-ai
```

## Best Practices

1. **Pipeline-as-code** — Connect components explicitly; clear data flow, easy debugging
2. **Document stores** — InMemory for dev, Qdrant/Pinecone/Weaviate for production
3. **PromptBuilder** — Jinja2 templates for dynamic prompts; inject documents, history, metadata
4. **Custom components** — Use `@component` decorator; define inputs/outputs, Haystack handles wiring
5. **Branching** — Pipelines support conditional routing; different paths based on query type
6. **Serialization** — `pipeline.dumps()` / `Pipeline.loads()` for saving/loading pipeline configs
7. **Evaluation** — Built-in eval components for faithfulness, relevance, answer correctness
8. **Streaming** — Use `OpenAIGenerator(streaming_callback=...)` for real-time token delivery

More from TerminalSkills/skills