查询管道#
概念#
LlamaIndex 提供了一个声明式查询 API,允许您将不同的模块链接在一起,以便在数据上编排简单到高级的工作流程。
这围绕着我们的 QueryPipeline
抽象展开。加载各种模块(从LLMs到提示符到检索器到其他管道),将它们连接成一个顺序链或有向无环图(DAG),然后端对端地运行。
注意:您可以在没有声明式管道抽象的情况下编排所有这些工作流程(通过使用模块的命令式方式并编写自己的函数)。那么,QueryPipeline
有什么优势呢?
- 用更少的代码/样板表达常见的工作流程
- 更易读
- 更高的平行性/更好地集成常见的低代码/无代码解决方案(例如 LangFlow)
- 【未来】声明式接口允许轻松序列化管道组件,提供管道的可移植性/更容易部署到不同的系统。
我们的查询管道还会在所有子模块中传播回调,并与我们的可观察性合作伙伴集成。
要查看 QueryPipeline
的交互式示例,请查看RAG CLI。
使用模式#
以下是设置查询管道的两种简单方式 - 通过简化的语法设置顺序链和设置完整的计算 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
端到端指南,了解在数据上设置编排的标准到高级方式。