用途
create-generation-plugin 是一项指导技能,用于帮助开发者为 AutoRAG-Research 创建自定义的生成管线(generation pipeline)插件。它覆盖从脚手架搭建到实现、测试与安装的完整流程。
主要能力
- 通过命令
autorag-research plugin create my_rag --type=generation生成插件骨架。 - 引导开发者阅读生成的 pipeline.py、pyproject.toml、YAML 配置与测试文件以理解结构。
- 说明需要实现的方法
_generate(query_id, top_k),即 RAG 策略的核心逻辑所在。 - 列出在管线内可用的属性:
self._llm— LangChain BaseLanguageModel,可用await self._llm.ainvoke(prompt)。self._retrieval_pipeline— 组合的检索管线,可用await self._retrieval_pipeline._retrieve_by_id(query_id, top_k)。self._service— GenerationPipelineService,可用self._service.get_chunk_contents(chunk_ids)、self._get_query_text(query_id)。
- 约定返回值必须为
GenerationResult(text=...),来自autorag_research.orm.service.generation_pipeline。
使用方式
- 脚手架:运行带
--type=generation的创建命令,阅读生成文件。 - 实现:参考
ai_instructions/pipeline_implementer.md、ai_instructions/pipeline_test_writer.md、ai_instructions/pipeline_architecture_mapper.md,实现_generate方法。自定义参数可加入配置类,并通过get_pipeline_kwargs()传入管线构造函数。 - 测试与安装:在测试中使用
langchain_core.language_models.FakeListLLM模拟 LLM;执行cd my_rag_plugin && pip install -e .(或uv pip install -e .),再cd .. && autorag-research plugin sync,并用ls configs/pipelines/generation/my_rag.yaml验证。
关键文件
- 基类配置:
autorag_research/config.py→ BaseGenerationPipelineConfig - 基类管线:
autorag_research/pipelines/generation/base.py→ BaseGenerationPipeline - 服务与结果:
autorag_research/orm/service/generation_pipeline.py - 插件入口发现:
autorag_research/plugin_registry.py
可参考的现有实现
basic_rag.py:简单的先检索后生成(建议从这里开始)ircot.py:检索与思维链交织et2rag.py:实体感知 RAGmain_rag.py:主 RAG 管线
对应 YAML 配置:configs/pipelines/generation/basic_rag.yaml、configs/pipelines/generation/ircot.yaml。
限制与注意事项
- 不要在
_generate中自行添加 asyncio.gather、asyncio.Semaphore 或任何并发控制。基类管线的 run() 已通过 run_with_concurrency_limit()(信号量 + gather)处理所有查询的并行执行,由 max_concurrency 配置参数控制;_generate每条查询只调用一次,只需实现该单条查询的检索与生成逻辑。 - 继承自 BaseGenerationPipelineConfig 的配置字段包括:
llm(LLM 模型字符串,会自动转换为 LangChain 模型实例)、retrieval_pipeline_name(与其组合的检索管线名称,由 Executor 注入)。 - 该插件的其他信息(如收费、价格、平台支持等)暂未提供。