LlamaIndex中的路由器:使用LLM进行决策的强大模块
在LlamaIndex中,路由器(Routers)是一组模块,它们接收用户查询和一组由元数据定义的“选择”,并返回一个或多个选定的选择。路由器可以单独使用(作为“选择器模块”),也可以作为查询引擎或检索器使用(例如,在其他查询引擎/检索器之上)。
概念
路由器是简单但强大的模块,使用LLM进行决策。它们可以用于以下用例以及更多:
- 从多样化的数据源中选择正确的数据源
- 决定是进行总结(例如使用总结索引查询引擎)还是语义搜索(例如使用向量索引查询引擎)
- 决定是否“尝试”一堆选择并组合结果(使用多路由功能)
核心路由器模块以以下形式存在:
- LLM选择器:将选择作为文本转储放入提示中,并使用LLM文本完成端点进行决策
- Pydantic选择器:将选择作为Pydantic模式传递给函数调用端点,并返回Pydantic对象
使用模式
作为查询引擎使用
以下是一个将路由器模块作为查询引擎一部分的简单示例:
from llama_index.core.query_engine import RouterQueryEngine
from llama_index.core.selectors import PydanticSingleSelector
from llama_index.core.tools import QueryEngineTool
list_tool = QueryEngineTool.from_defaults(
query_engine=list_query_engine,
description="Useful for summarization questions related to the data source",
)
vector_tool = QueryEngineTool.from_defaults(
query_engine=vector_query_engine,
description="Useful for retrieving specific context related to the data source",
)
query_engine = RouterQueryEngine(
selector=PydanticSingleSelector.from_defaults(),
query_engine_tools=[
list_tool,
vector_tool,