查询管道#
Warning
查询管道功能目前已进入特性冻结/弃用阶段。如需编排模块,建议改用工作流。
概念#
LlamaIndex 提供声明式查询 API,允许将不同模块串联起来,从而在数据上编排从简单到复杂的工作流。
该功能围绕我们的 QueryPipeline
抽象实现。您可以加载各类模块(从 LLM 到提示词,从检索器到其他管道),将它们连接成顺序链或 DAG(有向无环图),并端到端地运行整个流程。
注意:您也可以不使用声明式管道抽象来编排这些工作流(通过命令式使用模块并编写自定义函数)。那么 QueryPipeline
的优势何在?
- 用更少的代码/样板表达常见工作流
- 更高的可读性
- 更好的兼容性/与常见低代码/无代码解决方案(如 LangFlow)的集成点
- [未来] 声明式接口便于序列化管道组件,实现管道可移植性/更轻松部署到不同系统
我们的查询管道还会在所有子模块间传播回调函数,这些回调与我们的可观测性合作伙伴集成。
要查看 QueryPipeline
的实际交互示例,请参阅 RAG 命令行工具。
使用模式#
以下是两种设置查询管道的简单方法——从建立顺序链的简化语法到构建完整计算 DAG。
from llama_index.core.query_pipeline import QueryPipeline
# 顺序链
p = QueryPipeline(chain=[prompt_tmpl, llm], verbose=True)
# DAG
p = QueryPipeline(verbose=True)
p.add_modules({"prompt_tmpl": prompt_tmpl, "llm": llm})
p.add_link("prompt_tmpl", "llm")
# 运行管道
p.run(prompt_key1="<input1>", ...)
更多信息请参阅以下使用模式指南:
模块指南#
查看我们的 QueryPipeline
端到端指南,学习从标准到高级的数据编排方法。