diff --git a/api/core/orchestrator_rule_parser.py b/api/core/orchestrator_rule_parser.py index 4f87e45e0d..310fb0ae15 100644 --- a/api/core/orchestrator_rule_parser.py +++ b/api/core/orchestrator_rule_parser.py @@ -283,6 +283,7 @@ class OrchestratorRuleParser: def _dynamic_calc_retrieve_k(cls, dataset: Dataset, rest_tokens: int) -> int: DEFAULT_K = 2 CONTEXT_TOKENS_PERCENT = 0.3 + MAX_K = 10 if rest_tokens == -1: return DEFAULT_K @@ -311,5 +312,5 @@ class OrchestratorRuleParser: if context_limit_tokens <= segment_max_tokens * DEFAULT_K: return DEFAULT_K - # Expand the k value when there's still some room left in the 30% rest tokens space - return context_limit_tokens // segment_max_tokens + # Expand the k value when there's still some room left in the 30% rest tokens space, but less than the MAX_K + return min(context_limit_tokens // segment_max_tokens, MAX_K)