SKILL.md
Create Generation Plugin
Workflow
1. Scaffold
autorag-research plugin create my_rag --type=generation
Read the generated pipeline.py, pyproject.toml, YAML config, and test file to understand the structure.
2. Implement
For the shared pipeline implementation and testing rules, read:
aiinstructions/pipelineimplementer.mdaiinstructions/pipelinetest_writer.mdaiinstructions/pipelinearchitecture_mapper.md
Implement the generate(queryid, top_k) method. This is where your RAG strategy lives.
Available attributes inside the pipeline:
self.llm— LangChainBaseLanguageModel(useawait self.llm.ainvoke(prompt))self.retrievalpipeline— composed retrieval pipeline (useawait self.retrievalpipeline.retrievebyid(queryid, top_k))self.service—GenerationPipelineService(useself.service.getchunkcontents(chunkids),self.getquerytext(query_id))
Must return a GenerationResult(text=...) (from autoragresearch.orm.service.generationpipeline).
DO NOT add your own
asyncio.gather,asyncio.Semaphore, or any concurrency control.
The base pipeline'srun()already handles parallel execution of all queries viarunwithconcurrencylimit()(semaphore + gather), controlled by themaxconcurrency
config parameter. Your_generatemethod is called once per single query — just implement
the retrieve-and-generate logic for that one query.
Custom parameters: Add fields to your config class and pass them via getpipelinekwargs() → accept them in the pipeline constructor.
Inherited config fields (from BaseGenerationPipelineConfig):
llm— LLM model string (auto-converted to LangChain model instance)retrievalpipelinename— name of the retrieval pipeline to compose with (Executor injects it)
3. Write tests and install
Use langchaincore.languagemodels.FakeListLLM to mock the LLM in tests.
cd my_rag_plugin
pip install -e . # or: uv pip install -e .
cd .. && autorag-research plugin sync
Verify: ls configs/pipelines/generation/my_rag.yaml
Key Files
| Purpose | Path |
|---|---|
| Base config class | autorag_research/config.py → BaseGenerationPipelineConfig |
| Base pipeline class | autorag_research/pipelines/generation/base.py → BaseGenerationPipeline |
| Service + GenerationResult | autoragresearch/orm/service/generationpipeline.py |
| Plugin entry point discovery | autoragresearch/pluginregistry.py |
Examples
Study these existing implementations for patterns:
autoragresearch/pipelines/generation/basicrag.py— Simple retrieve-then-generate (start here)autorag_research/pipelines/generation/ircot.py— Interleaving retrieval with chain-of-thoughtautorag_research/pipelines/generation/et2rag.py— Entity-aware RAGautoragresearch/pipelines/generation/mainrag.py— Main RAG pipeline- YAML configs:
configs/pipelines/generation/basic_rag.yaml,configs/pipelines/generation/ircot.yaml