Peterase commited on
Commit
1cb013a
Β·
1 Parent(s): e032d36

Support search_web boolean flag to bypass live web search

Browse files
src/core/domain/schemas.py CHANGED
@@ -8,6 +8,7 @@ class ChatRequest(BaseModel):
8
  top_k: int = 7 # increased from 5 β€” gives multilingual diversity room
9
  source_filter: Optional[str] = None
10
  language_filter: Optional[str] = None
 
11
 
12
  class SourceDocument(BaseModel):
13
  content: str
 
8
  top_k: int = 7 # increased from 5 β€” gives multilingual diversity room
9
  source_filter: Optional[str] = None
10
  language_filter: Optional[str] = None
11
+ search_web: bool = True
12
 
13
  class SourceDocument(BaseModel):
14
  content: str
src/core/use_cases/rag_chat_use_case.py CHANGED
@@ -385,7 +385,7 @@ JSON:"""
385
  logger.warning(f"[RAG] [{lang_code}] search failed: {e}")
386
  return []
387
 
388
- async def _build_context(self, query: str, top_k: int, source_filter=None, language_filter=None, days_back=None) -> Tuple[str, List[Dict[str, Any]]]:
389
  # ── Step 0: Language Detection & Query Enhancement ────────────────────
390
  original_query = query
391
  query_language = "en" # Default
@@ -510,6 +510,11 @@ JSON:"""
510
 
511
  # Decide search strategy (pass full intent_result for v2)
512
  strategy = self.orchestrator.decide_search_strategy(query, intent, intent_result)
 
 
 
 
 
513
  logger.info(f"[RAG] Search strategy: {strategy}")
514
 
515
  # If intent is OTHER (small talk), skip search entirely
@@ -914,7 +919,8 @@ JSON:"""
914
  request.top_k,
915
  request.source_filter,
916
  request.language_filter,
917
- getattr(request, 'days_back', None)
 
918
  )
919
 
920
  # Optional Trend Fusion - Disabled for testing
@@ -1067,7 +1073,12 @@ Answer:"""
1067
  session_id = request.session_id
1068
  history_text = "" if is_guest else self._get_history_text(session_id)
1069
  context_text, final_sources = await self._build_context(
1070
- request.query, request.top_k, request.source_filter, request.language_filter, getattr(request, 'days_back', None)
 
 
 
 
 
1071
  )
1072
 
1073
  # ── Build numbered source index for citations ─────────────────────────
 
385
  logger.warning(f"[RAG] [{lang_code}] search failed: {e}")
386
  return []
387
 
388
+ async def _build_context(self, query: str, top_k: int, source_filter=None, language_filter=None, days_back=None, search_web: bool = True) -> Tuple[str, List[Dict[str, Any]]]:
389
  # ── Step 0: Language Detection & Query Enhancement ────────────────────
390
  original_query = query
391
  query_language = "en" # Default
 
510
 
511
  # Decide search strategy (pass full intent_result for v2)
512
  strategy = self.orchestrator.decide_search_strategy(query, intent, intent_result)
513
+ if not search_web:
514
+ strategy.use_live = False
515
+ strategy.live_weight = 0.0
516
+ strategy.db_weight = 1.0
517
+ strategy.reason = "Web search toggled off by user"
518
  logger.info(f"[RAG] Search strategy: {strategy}")
519
 
520
  # If intent is OTHER (small talk), skip search entirely
 
919
  request.top_k,
920
  request.source_filter,
921
  request.language_filter,
922
+ getattr(request, 'days_back', None),
923
+ search_web=getattr(request, 'search_web', True)
924
  )
925
 
926
  # Optional Trend Fusion - Disabled for testing
 
1073
  session_id = request.session_id
1074
  history_text = "" if is_guest else self._get_history_text(session_id)
1075
  context_text, final_sources = await self._build_context(
1076
+ request.query,
1077
+ request.top_k,
1078
+ request.source_filter,
1079
+ request.language_filter,
1080
+ getattr(request, 'days_back', None),
1081
+ search_web=getattr(request, 'search_web', True)
1082
  )
1083
 
1084
  # ── Build numbered source index for citations ─────────────────────────