Skip to content

Commit 198aade

Browse files
committed
refactor: revise mixture search and scheduler logger
1 parent 630c21c commit 198aade

File tree

3 files changed

+31
-57
lines changed

3 files changed

+31
-57
lines changed

src/memos/mem_scheduler/general_modules/scheduler_logger.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,10 @@ def create_autofilled_log_item(
4848
mem_cube_id: str,
4949
mem_cube: GeneralMemCube,
5050
) -> ScheduleLogForWebItem:
51+
if mem_cube is None:
52+
logger.error(
53+
"mem_cube is None — this should not happen in production!", stack_info=True
54+
)
5155
text_mem_base: TreeTextMemory = mem_cube.text_mem
5256
current_memory_sizes = text_mem_base.get_current_memory_size(user_name=mem_cube_id)
5357
current_memory_sizes = {

src/memos/mem_scheduler/optimized_scheduler.py

Lines changed: 26 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -166,63 +166,33 @@ def mix_search_memories(
166166
turns=self.history_memory_turns,
167167
)
168168
logger.info(f"Found {len(history_memories)} history memories.")
169-
if not history_memories:
170-
# Post retrieve
171-
raw_memories = self.searcher.post_retrieve(
172-
retrieved_results=raw_retrieved_memories,
173-
top_k=search_req.top_k,
174-
user_name=user_context.mem_cube_id,
175-
info=info,
176-
)
177-
178-
# Enhance with query
179-
enhanced_memories, _ = self.retriever.enhance_memories_with_query(
180-
query_history=[search_req.query],
181-
memories=raw_memories,
182-
)
183-
formatted_memories = [format_textual_memory_item(item) for item in enhanced_memories]
184-
return formatted_memories
185-
else:
186-
# if history memories can directly answer
187-
sorted_history_memories = self.reranker.rerank(
188-
query=search_req.query, # Use search_req.query instead of undefined query
189-
graph_results=history_memories, # Pass TextualMemoryItem objects directly
190-
top_k=search_req.top_k, # Use search_req.top_k instead of undefined top_k
191-
search_filter=search_filter,
192-
)
193-
logger.info(f"Reranked {len(sorted_history_memories)} history memories.")
194-
merged_memories = self.searcher.post_retrieve(
195-
retrieved_results=raw_retrieved_memories + sorted_history_memories,
196-
top_k=search_req.top_k,
197-
user_name=user_context.mem_cube_id,
198-
info=info,
199-
)
200-
memories = merged_memories[: search_req.top_k]
201-
202-
can_answer = self.retriever.evaluate_memory_answer_ability(
203-
query=search_req.query, memory_texts=[one.memory for one in memories]
204-
)
205169

206-
if can_answer:
207-
logger.info("History memories can answer the query.")
208-
209-
else:
210-
logger.info("Submitted memory history async task.")
211-
# Enhance with query
212-
memories, _ = self.retriever.enhance_memories_with_query(
213-
query_history=[search_req.query],
214-
memories=memories,
215-
)
216-
formatted_memories = [format_textual_memory_item(item) for item in memories]
217-
self.submit_memory_history_async_task(
218-
search_req=search_req,
219-
user_context=user_context,
220-
memories_to_store={
221-
"memories": [one.to_dict() for one in memories],
222-
"formatted_memories": formatted_memories,
223-
},
224-
)
225-
return formatted_memories
170+
# if history memories can directly answer
171+
sorted_history_memories = self.reranker.rerank(
172+
query=search_req.query, # Use search_req.query instead of undefined query
173+
graph_results=history_memories, # Pass TextualMemoryItem objects directly
174+
top_k=search_req.top_k, # Use search_req.top_k instead of undefined top_k
175+
search_filter=search_filter,
176+
)
177+
logger.info(f"Reranked {len(sorted_history_memories)} history memories.")
178+
merged_memories = self.searcher.post_retrieve(
179+
retrieved_results=raw_retrieved_memories + sorted_history_memories,
180+
top_k=search_req.top_k,
181+
user_name=user_context.mem_cube_id,
182+
info=info,
183+
)
184+
memories = merged_memories[: search_req.top_k]
185+
186+
formatted_memories = [format_textual_memory_item(item) for item in memories]
187+
self.submit_memory_history_async_task(
188+
search_req=search_req,
189+
user_context=user_context,
190+
memories_to_store={
191+
"memories": [one.to_dict() for one in memories],
192+
"formatted_memories": formatted_memories,
193+
},
194+
)
195+
return formatted_memories
226196

227197
def update_search_memories_to_redis(
228198
self,

src/memos/mem_scheduler/utils/misc_utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ def wrapper(*args, **kwargs):
215215
try:
216216
return func(*args, **kwargs)
217217
except Exception as e:
218-
logger.error(f"Error in {func.__name__}: {e}", exc_info=True)
218+
logger.error(f"Error in {func.__name__}: {e}", stack_info=True)
219219

220220
return wrapper
221221

0 commit comments

Comments
 (0)