MCPcopy Create free account
hub / github.com/Enfoirer/Text2GraphRAG / IntelligentQueryRouter

Class IntelligentQueryRouter

rag_modules/intelligent_query_router.py:35–304  ·  view source on GitHub ↗

智能查询路由器 核心能力: 1. 查询复杂度分析:识别简单查找 vs 复杂推理 2. 关系密集度评估:判断是否需要图结构优势 3. 策略自动选择:路由到最适合的检索引擎 4. 结果质量监控:基于反馈优化路由决策

Source from the content-addressed store, hash-verified

33 reasoning: str # 推荐理由
34
35class IntelligentQueryRouter:
36 """
37 智能查询路由器
38
39 核心能力:
40 1. 查询复杂度分析:识别简单查找 vs 复杂推理
41 2. 关系密集度评估:判断是否需要图结构优势
42 3. 策略自动选择:路由到最适合的检索引擎
43 4. 结果质量监控:基于反馈优化路由决策
44 """
45
46 def __init__(self,
47 traditional_retrieval, # 传统混合检索模块
48 graph_rag_retrieval, # 图RAG检索模块
49 llm_client,
50 config):
51 self.traditional_retrieval = traditional_retrieval
52 self.graph_rag_retrieval = graph_rag_retrieval
53 self.llm_client = llm_client
54 self.config = config
55
56 # 路由统计
57 self.route_stats = {
58 "traditional_count": 0,
59 "graph_rag_count": 0,
60 "combined_count": 0,
61 "total_queries": 0
62 }
63
64 def analyze_query(self, query: str) -> QueryAnalysis:
65 """
66 深度分析查询特征,决定最佳检索策略
67 """
68 logger.info(f"分析查询特征: {query}")
69
70 # 使用LLM进行智能分析
71 analysis_prompt = f"""
72 作为RAG系统的查询分析专家,请深度分析以下查询的特征:
73
74 查询:{query}
75
76 请从以下维度分析:
77
78 1. 查询复杂度 (0-1):
79 - 0.0-0.3: 简单信息查找(如:干眼症有哪些症状?)
80 - 0.4-0.7: 中等复杂度(如:青光眼手术后的护理要点?)
81 - 0.8-1.0: 高复杂度推理(如:糖尿病视网膜病变与青光眼的关系?)
82
83 2. 关系密集度 (0-1):
84 - 0.0-0.3: 单一实体信息(如:白内障的手术方式)
85 - 0.4-0.7: 实体间关系(如:干眼症与隐形眼镜佩戴的关系?)
86 - 0.8-1.0: 复杂关系网络(如:糖尿病、视网膜病变与黄斑水肿的关联?)
87
88 3. 推理需求:
89 - 是否需要多跳推理?
90 - 是否需要因果分析?
91 - 是否需要对比分析?
92

Callers 1

initialize_systemMethod · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected