Documentation
¶
Overview ¶
Package router 提供 RAG 系统的查询路由器
QueryRouter 根据查询内容自动选择最合适的检索策略,支持:
- 基于规则的路由:使用关键词匹配和正则表达式
- 基于 LLM 的路由:让 LLM 分析查询并选择最佳检索器
- 基于嵌入的路由:通过语义相似度匹配到预设类别
使用示例:
router := NewQueryRouter(
WithRoute("vector", vectorRetriever, "语义相关的问题"),
WithRoute("keyword", keywordRetriever, "精确搜索"),
WithRoute("sql", sqlRetriever, "数据查询"),
)
docs, err := router.Retrieve(ctx, "最近的销售数据是多少?")
Index ¶
- type MultiRouter
- type QueryRouter
- type Route
- type RouterMode
- type RouterOption
- func WithFallback(retriever rag.Retriever) RouterOption
- func WithRoute(name string, retriever rag.Retriever, description string) RouterOption
- func WithRouteKeywords(name string, retriever rag.Retriever, description string, keywords []string) RouterOption
- func WithRoutePatterns(name string, retriever rag.Retriever, description string, patterns []string) RouterOption
- func WithRouterLLM(provider llm.Provider, model string) RouterOption
- func WithRouterMode(mode RouterMode) RouterOption
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type MultiRouter ¶
type MultiRouter struct {
// contains filtered or unexported fields
}
MultiRouter 多路由器,将查询分发到多个检索器并合并结果
func NewMultiRouter ¶
func NewMultiRouter(mergeTop int, routers ...*QueryRouter) *MultiRouter
NewMultiRouter 创建多路由器
type QueryRouter ¶
type QueryRouter struct {
// contains filtered or unexported fields
}
QueryRouter 查询路由器 根据查询内容自动选择最合适的检索策略
func (*QueryRouter) Retrieve ¶
func (r *QueryRouter) Retrieve(ctx context.Context, query string, opts ...rag.RetrieveOption) ([]rag.Document, error)
Retrieve 根据查询自动路由到合适的检索器
func (*QueryRouter) SelectRoute ¶
Route 返回选中的路由名称(不执行检索)
type Route ¶
type Route struct {
// Name 路由名称
Name string
// Retriever 关联的检索器
Retriever rag.Retriever
// Description 路由描述(用于 LLM 路由判断)
Description string
// Keywords 关键词列表(用于规则路由)
Keywords []string
// Patterns 正则表达式模式(用于规则路由)
Patterns []*regexp.Regexp
// Priority 优先级(数值越小优先级越高)
Priority int
}
Route 路由规则
type RouterMode ¶
type RouterMode int
RouterMode 路由模式
const ( // ModeRule 基于规则的路由 ModeRule RouterMode = iota // ModeLLM 基于 LLM 的路由 ModeLLM // ModeHybrid 混合路由(先规则后 LLM 兜底) ModeHybrid )
type RouterOption ¶
type RouterOption func(*QueryRouter)
RouterOption 路由器配置选项
func WithRoute ¶
func WithRoute(name string, retriever rag.Retriever, description string) RouterOption
WithRoute 添加路由规则
func WithRouteKeywords ¶
func WithRouteKeywords(name string, retriever rag.Retriever, description string, keywords []string) RouterOption
WithRouteKeywords 添加带关键词的路由规则
func WithRoutePatterns ¶
func WithRoutePatterns(name string, retriever rag.Retriever, description string, patterns []string) RouterOption
WithRoutePatterns 添加带正则的路由规则
func WithRouterLLM ¶
func WithRouterLLM(provider llm.Provider, model string) RouterOption
WithRouterLLM 设置 LLM 路由的 Provider
Click to show internal directories.
Click to hide internal directories.