Skip to main content
Reusable components for building custom Haystack RAG pipelines.

AgenticRouter

Route and orchestrate RAG with agent-like behavior for tool selection and self-reflection.

Constructor

str
default:"llama-3.3-70b-versatile"
LLM model name for routing decisions
str
API key for the LLM provider. Falls back to GROQ_API_KEY environment variable
str
default:"https://api.groq.com/openai/v1"
Base URL for OpenAI-compatible API endpoint

Methods

select_tool

Select the best tool for a given query.
str
required
User query to route
str
Selected tool name: “retrieval”, “web_search”, “calculation”, or “reasoning”

evaluate_answer_quality

Evaluate generated answer quality with relevance, completeness, and grounding scores.
str
required
Original user query
str
required
Generated answer to evaluate
str
default:""
Retrieved context used to generate the answer (for grounding check)
dict[str, Any]
Dictionary containing:
  • relevance (0-100): Does it answer the query?
  • completeness (0-100): Is it sufficiently detailed?
  • grounding (0-100): Is it grounded in the context?
  • issues (list): List of identified problems (max 3)
  • suggestions (list): List of improvement suggestions (max 2)

self_reflect_loop

Run self-reflection loop to iteratively improve answer quality.
str
required
Original user query
str
required
Initial answer to refine
str
default:""
Retrieved context for grounding
int
default:"2"
Maximum refinement iterations
int
default:"75"
Target quality score (0-100) to stop refinement early
str
Final refined answer after iterative improvement

ContextCompressor

Compress and summarize retrieved context to reduce token usage and improve answer quality.

Constructor

str
default:"llama-3.3-70b-versatile"
LLM model for compression (Groq API)
str
Groq API key. Falls back to GROQ_API_KEY environment variable

Methods

compress

Compress context using specified compression technique.
str
required
Retrieved context to compress
str
required
Original query for relevance filtering
str
default:"abstractive"
Compression technique: “abstractive”, “extractive”, or “relevance_filter”
Any
Additional parameters:
  • max_tokens (int): For abstractive compression (default: 2048)
  • num_sentences (int): For extractive compression (default: 5)
  • relevance_threshold (float): For relevance filtering (default: 0.5)
str
Compressed context text

compress_abstractive

Abstractive compression using LLM summarization.
str
required
Context to compress
str
required
Query for relevance
int
default:"2048"
Maximum tokens in compressed output
str
Compressed context summary

compress_extractive

Extractive compression by selecting key sentences.
str
required
Context to compress
str
required
Query for relevance
int
default:"5"
Number of sentences to extract
str
Selected sentences joined together

filter_by_relevance

Filter context chunks by relevance threshold.
str
required
Context to filter
str
required
Query for relevance scoring
float
default:"0.5"
Minimum relevance score (0-1) to keep chunks
str
Filtered context containing only relevant chunks

QueryEnhancer

Enhance queries using multi-query generation and query expansion techniques.

Constructor

str
default:"llama-3.3-70b-versatile"
LLM model for query enhancement
str
API key. Falls back to GROQ_API_KEY environment variable

Methods

generate_multi_queries

Generate multiple query variations for better retrieval coverage.
str
required
Original query
int
default:"3"
Number of query variations to generate
list[str]
List of query variations including the original

ResultMerger

Merge and deduplicate results from multiple retrieval sources.

Methods

merge_results

Merge document results using specified strategy.
list[list[Document]]
required
List of result lists from different sources
str
default:"rrf"
Merging strategy: “rrf” (Reciprocal Rank Fusion) or “interleave”
int
default:"10"
Number of results to return after merging
list[Document]
Merged and deduplicated document list