路由器(Routers)概念讲解
概念解释
路由器(Routers)是模块化的组件,它们接收用户查询和一组由元数据定义的“选择”,并返回一个或多个选定的选择。路由器可以单独使用(作为“选择器模块”),也可以作为查询引擎或检索器的一部分(例如,在其他查询引擎/检索器之上)。
路由器简单但功能强大,使用大型语言模型(LLMs)进行决策。它们可以用于以下用例以及更多:
- 从多种数据源中选择正确的数据源。
- 决定是进行总结(例如使用总结索引查询引擎)还是语义搜索(例如使用向量索引查询引擎)。
- 决定是否“尝试”一组选择并组合结果(使用多路由功能)。
核心路由器模块有以下形式:
- LLM选择器:将选择作为文本转储放入提示中,并使用LLM文本完成端点进行决策。
- Pydantic选择器:将选择作为Pydantic模式传递给函数调用端点,并返回Pydantic对象。
使用模式
定义选择器
定义路由器的核心是定义一个选择器。以下是一些使用LLM和Pydantic选择器的示例:
from llama_index.core.selectors import LLMSingleSelector, LLMMultiSelector
from llama_index.core.selectors import (
PydanticMultiSelector,
PydanticSingleSelector,
)
# pydantic selectors feed in pydantic objects to a function calling API
# single selector (pydantic)
selector = PydanticSingleSelector.from_defaults()
# multi selector (pydantic)
selector = PydanticMultiSelector.from_defaults()
# LLM selectors use text completion endpoints
# single selector (LLM)
selector = LLMSingleSelector.from_defaults()