> ## Documentation Index
> Fetch the complete documentation index at: https://mintlify.com/avnlp/vectordb/llms.txt
> Use this file to discover all available pages before exploring further.

# Haystack pipelines

> Pre-built RAG pipeline APIs for Haystack integration

Haystack integration provides pipeline components for building RAG applications with vector databases.

## Pipeline Types

VectorDB provides several pre-built pipeline types for Haystack:

* **Semantic Search**: Dense vector retrieval using embedding models
* **Hybrid Indexing**: Combined dense and sparse vector indexing
* **Sparse Indexing**: BM25-style keyword-based retrieval
* **MMR (Maximal Marginal Relevance)**: Diversity-optimized retrieval
* **Parent Document Retrieval**: Hierarchical chunking with parent-child relationships
* **Query Enhancement**: Multi-query and query expansion techniques
* **Reranking**: Cross-encoder reranking of retrieved results
* **Contextual Compression**: Token optimization through context compression
* **Agentic RAG**: Self-reflective retrieval with routing
* **Multi-tenancy**: Namespace-based data isolation
* **Metadata Filtering**: Advanced filtering on document metadata
* **JSON Indexing**: Indexing and filtering on nested JSON fields
* **Cost-Optimized RAG**: Token-efficient retrieval strategies

## Supported Vector Databases

All Haystack pipelines support these vector databases:

* **Chroma**: `ChromaSemanticSearchPipeline`, `ChromaMmrSearchPipeline`, etc.
* **Milvus**: `MilvusSemanticSearchPipeline`, `MilvusHybridSearchPipeline`, etc.
* **Pinecone**: `PineconeSemanticSearchPipeline`, `PineconeHybridSearchPipeline`, etc.
* **Qdrant**: `QdrantSemanticSearchPipeline`, `QdrantMmrSearchPipeline`, etc.
* **Weaviate**: `WeaviateSemanticSearchPipeline`, `WeaviateHybridSearchPipeline`, etc.

## Common Pipeline Methods

All Haystack pipelines share common initialization patterns and methods:

### Constructor Pattern

```python theme={null}
Pipeline(
    config_path: str,
    collection_name: Optional[str] = None,
    embedding_model: Optional[str] = None,
    **kwargs
)
```

<ParamField path="config_path" type="str" required>
  Path to YAML configuration file containing database credentials and settings
</ParamField>

<ParamField path="collection_name" type="str" optional>
  Override collection name from config
</ParamField>

<ParamField path="embedding_model" type="str" optional>
  Override embedding model from config (e.g., "sentence-transformers/all-MiniLM-L6-v2")
</ParamField>

<ParamField path="**kwargs" type="Any" optional>
  Additional pipeline-specific parameters
</ParamField>

### search

Perform retrieval search.

```python theme={null}
search(
    query: str,
    top_k: int = 10,
    filters: Optional[Dict[str, Any]] = None,
    **kwargs
) -> List[Document]
```

<ParamField path="query" type="str" required>
  Query text to search for
</ParamField>

<ParamField path="top_k" type="int" default="10">
  Number of results to return
</ParamField>

<ParamField path="filters" type="Dict[str, Any]" optional>
  Metadata filters to apply
</ParamField>

<ParamField path="**kwargs" type="Any" optional>
  Pipeline-specific search parameters
</ParamField>

<ResponseField name="documents" type="List[Document]">
  Retrieved Haystack Document objects ordered by relevance
</ResponseField>

### index

Index documents into the vector database.

```python theme={null}
index(
    documents: List[Document],
    namespace: Optional[str] = None,
    **kwargs
) -> None
```

<ParamField path="documents" type="List[Document]" required>
  Haystack Document objects to index
</ParamField>

<ParamField path="namespace" type="str" optional>
  Namespace for multi-tenant isolation
</ParamField>

<ParamField path="**kwargs" type="Any" optional>
  Pipeline-specific indexing parameters
</ParamField>

## Example Usage

### Semantic search

```python theme={null}
from vectordb.haystack.semantic_search import ChromaSemanticSearchPipeline

# Initialize pipeline
pipeline = ChromaSemanticSearchPipeline(
    config_path="config.yaml",
    collection_name="my_docs",
    embedding_model="sentence-transformers/all-MiniLM-L6-v2"
)

# Index documents
from haystack import Document

documents = [
    Document(content="Machine learning is a subset of AI"),
    Document(content="Deep learning uses neural networks")
]
pipeline.index(documents)

# Search
results = pipeline.search(
    query="What is machine learning?",
    top_k=5
)
```

### Hybrid search

```python theme={null}
from vectordb.haystack.hybrid_indexing import MilvusHybridSearchPipeline

pipeline = MilvusHybridSearchPipeline(
    config_path="config.yaml",
    collection_name="hybrid_docs"
)

# Hybrid search combines dense and sparse vectors
results = pipeline.search(
    query="quantum computing applications",
    top_k=10,
    ranker_type="rrf"  # Reciprocal Rank Fusion
)
```

### Multi-tenancy

```python theme={null}
from vectordb.haystack.multi_tenancy import PineconeMultiTenancyPipeline

pipeline = PineconeMultiTenancyPipeline(config_path="config.yaml")

# Index documents for tenant A
pipeline.index(documents, namespace="tenant_a")

# Search within tenant A only
results = pipeline.search(
    query="financial reports",
    namespace="tenant_a",
    top_k=5
)
```
