1818from memos .api .product_models import APISearchRequest , SearchResponse
1919from memos .context .context import ContextThreadPoolExecutor
2020from memos .log import get_logger
21- from memos .mem_scheduler .schemas .general_schemas import SearchMode
21+ from memos .mem_scheduler .schemas .general_schemas import FINE_STRATEGY , FineStrategy , SearchMode
2222from memos .types import MOSSearchResult , UserContext
2323
2424
@@ -40,7 +40,7 @@ def __init__(self, dependencies: HandlerDependencies):
4040 dependencies: HandlerDependencies instance
4141 """
4242 super ().__init__ (dependencies )
43- self ._validate_dependencies ("naive_mem_cube" , "mem_scheduler" )
43+ self ._validate_dependencies ("naive_mem_cube" , "mem_scheduler" , "searcher" )
4444
4545 def handle_search_memories (self , search_req : APISearchRequest ) -> SearchResponse :
4646 """
@@ -211,11 +211,17 @@ def _fast_search(
211211
212212 return formatted_memories
213213
214+ def _deep_search (
215+ self , search_req : APISearchRequest , user_context : UserContext , max_thinking_depth : int
216+ ) -> list :
217+ logger .error ("waiting to be implemented" )
218+ return []
219+
214220 def _fine_search (
215221 self ,
216222 search_req : APISearchRequest ,
217223 user_context : UserContext ,
218- ) -> list :
224+ ) -> list [ str ] :
219225 """
220226 Fine-grained search with query enhancement.
221227
@@ -226,19 +232,22 @@ def _fine_search(
226232 Returns:
227233 List of enhanced search results
228234 """
235+ if FINE_STRATEGY == FineStrategy .DEEP_SEARCH :
236+ return self ._deep_search (
237+ search_req = search_req , user_context = user_context , max_thinking_depth = 3
238+ )
239+
229240 target_session_id = search_req .session_id or "default_session"
230241 search_filter = {"session_id" : search_req .session_id } if search_req .session_id else None
231242
232- searcher = self .mem_scheduler .searcher
233-
234243 info = {
235244 "user_id" : search_req .user_id ,
236245 "session_id" : target_session_id ,
237246 "chat_history" : search_req .chat_history ,
238247 }
239248
240249 # Fine retrieve
241- fast_retrieved_memories = searcher .retrieve (
250+ raw_retrieved_memories = self . searcher .retrieve (
242251 query = search_req .query ,
243252 user_name = user_context .mem_cube_id ,
244253 top_k = search_req .top_k ,
@@ -250,8 +259,8 @@ def _fine_search(
250259 )
251260
252261 # Post retrieve
253- fast_memories = searcher .post_retrieve (
254- retrieved_results = fast_retrieved_memories ,
262+ raw_memories = self . searcher .post_retrieve (
263+ retrieved_results = raw_retrieved_memories ,
255264 top_k = search_req .top_k ,
256265 user_name = user_context .mem_cube_id ,
257266 info = info ,
@@ -260,22 +269,22 @@ def _fine_search(
260269 # Enhance with query
261270 enhanced_memories , _ = self .mem_scheduler .retriever .enhance_memories_with_query (
262271 query_history = [search_req .query ],
263- memories = fast_memories ,
272+ memories = raw_memories ,
264273 )
265274
266- if len (enhanced_memories ) < len (fast_memories ):
275+ if len (enhanced_memories ) < len (raw_memories ):
267276 logger .info (
268- f"Enhanced memories ({ len (enhanced_memories )} ) are less than fast memories ({ len (fast_memories )} ). Recalling for more."
277+ f"Enhanced memories ({ len (enhanced_memories )} ) are less than raw memories ({ len (raw_memories )} ). Recalling for more."
269278 )
270279 missing_info_hint , trigger = self .mem_scheduler .retriever .recall_for_missing_memories (
271280 query = search_req .query ,
272- memories = fast_memories ,
281+ memories = raw_memories ,
273282 )
274- retrieval_size = len (fast_memories ) - len (enhanced_memories )
283+ retrieval_size = len (raw_memories ) - len (enhanced_memories )
275284 logger .info (f"Retrieval size: { retrieval_size } " )
276285 if trigger :
277286 logger .info (f"Triggering additional search with hint: { missing_info_hint } " )
278- additional_memories = searcher .search (
287+ additional_memories = self . searcher .search (
279288 query = missing_info_hint ,
280289 user_name = user_context .mem_cube_id ,
281290 top_k = retrieval_size ,
@@ -286,7 +295,7 @@ def _fine_search(
286295 )
287296 else :
288297 logger .info ("Not triggering additional search, using fast memories." )
289- additional_memories = fast_memories [:retrieval_size ]
298+ additional_memories = raw_memories [:retrieval_size ]
290299
291300 enhanced_memories += additional_memories
292301 logger .info (
0 commit comments