Files
ragflow/rag/advanced_rag/harness/config.py
Kevin Hu d5d04ad639 Feat: compilation result navigation in agentic search (#17002)
### Summary

Compilation result navigation in agentic search.
2026-07-16 20:19:32 +08:00

102 lines
3.1 KiB
Python

"""Thinking mode configurations."""
from rag.advanced_rag.harness.types import ExecutionStrategy
THINKING_MODES: dict[str, ExecutionStrategy] = {
"low": ExecutionStrategy(
label="low",
execution_strategy="direct_search",
requires_decomposition=False,
requires_agent_loop=False,
requires_sufficiency_judge=False,
requires_selective_gen=False,
allows_dynamic_claims=False,
allows_replan=False,
max_orchestrator_cycles=1,
max_agent_cycles=0,
max_parallel_agents=1,
available_tools=["hybrid_search"],
sufficiency_threshold=0.85,
partial_threshold=0.50,
fallback_to_direct_llm=False,
),
"medium": ExecutionStrategy(
label="medium",
execution_strategy="decompose_and_search",
requires_decomposition=True,
requires_agent_loop=False,
requires_sufficiency_judge=True,
requires_selective_gen=True,
allows_dynamic_claims=False,
allows_replan=False,
max_orchestrator_cycles=3,
max_agent_cycles=0,
max_parallel_agents=1,
available_tools=["hybrid_search"],
sufficiency_threshold=0.75,
partial_threshold=0.40,
fallback_to_direct_llm=False,
),
"high": ExecutionStrategy(
label="high",
execution_strategy="agentic_research",
requires_decomposition=True,
requires_agent_loop=True,
requires_sufficiency_judge=True,
requires_selective_gen=True,
allows_dynamic_claims=False,
allows_replan=False,
max_orchestrator_cycles=3,
max_agent_cycles=2,
max_parallel_agents=2,
available_tools=[
"hybrid_search",
"web_search",
"catalog_navigate",
"graph_explore",
"inspector_open_context",
"inspector_compare",
],
sufficiency_threshold=0.65,
partial_threshold=0.30,
fallback_to_direct_llm=False,
),
"ultra": ExecutionStrategy(
label="ultra",
execution_strategy="deep_research",
requires_decomposition=True,
requires_agent_loop=True,
requires_sufficiency_judge=True,
requires_selective_gen=True,
allows_dynamic_claims=True,
allows_replan=True,
max_orchestrator_cycles=4,
max_agent_cycles=2,
max_parallel_agents=3,
available_tools=[
"hybrid_search",
"bm25_search",
"web_search",
"structured_query",
"catalog_navigate",
"mindmap_navigate",
"graph_explore",
"wiki_query",
"inspector_open_context",
"inspector_compare",
"inspector_grep_within",
"inspector_request_adjacent",
],
sufficiency_threshold=0.55,
partial_threshold=0.20,
fallback_to_direct_llm=True,
),
}
def get_mode(label: str) -> ExecutionStrategy:
mode = THINKING_MODES.get(label)
if not mode:
raise ValueError(f"Unknown thinking mode: {label}. Available: {list(THINKING_MODES.keys())}")
return mode