Skip to content

Generation Pipelines

Algorithms that take a query and retrieved documents to generate an answer.

Available Pipelines

Pipeline Algorithm
BasicRAG Single retrieve + generate
IRCoT Iterative retrieve + chain-of-thought reasoning

Base Class

All generation pipelines extend BaseGenerationPipeline:

from autorag_research.pipelines.generation import (
    BaseGenerationPipeline,
    GenerationResult,
)


class MyRAGPipeline(BaseGenerationPipeline):
    def _generate(self, query: str, top_k: int) -> GenerationResult:
        # 1. Retrieve documents
        retrieved = self._retrieval_pipeline.retrieve(query, top_k)

        # 2. Build context and generate
        answer = self._llm.complete(...)

        return GenerationResult(
            text=answer.text,
            token_usage={"prompt": 100, "completion": 50},
            metadata={},
        )

    def _get_pipeline_config(self):
        return {"type": "my_rag"}

Composition

Generation pipelines compose with retrieval pipelines:

_target_: autorag_research.pipelines.generation.basic_rag.BasicRAGPipelineConfig
name: my_rag
retrieval_pipeline_name: bm25  # References a retrieval pipeline
llm: gpt-4o-mini

Methods

Method Description
run(top_k, batch_size) Batch generation for all queries