From ad0c8dd6339f0dbaf70e1d23a6d0857480bcdce1 Mon Sep 17 00:00:00 2001 From: dengjiaji Date: Thu, 6 Nov 2025 18:16:42 +0800 Subject: [PATCH] fix bug: update vector store access and memory list handling --- reme_ai/summary/task/comparative_extraction_op.py | 8 ++++---- reme_ai/summary/task/memory_deduplication_op.py | 12 +++++------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/reme_ai/summary/task/comparative_extraction_op.py b/reme_ai/summary/task/comparative_extraction_op.py index 71e72a7d..0c4576c6 100644 --- a/reme_ai/summary/task/comparative_extraction_op.py +++ b/reme_ai/summary/task/comparative_extraction_op.py @@ -188,10 +188,10 @@ class ComparativeExtractionOp(BaseAsyncOp): failure_texts = [merge_messages_content(seq) for seq in failure_step_sequences] # Get embedding vectors - if hasattr(self.context, 'vector_store') and self.context.vector_store and hasattr( - self.context.vector_store, 'embedding_model'): - success_embeddings = self.context.vector_store.embedding_model.get_embeddings(success_texts) - failure_embeddings = self.context.vector_store.embedding_model.get_embeddings(failure_texts) + if hasattr(self, 'vector_store') and self.vector_store and hasattr( + self.vector_store, 'embedding_model'): + success_embeddings = self.vector_store.embedding_model.get_embeddings(success_texts) + failure_embeddings = self.vector_store.embedding_model.get_embeddings(failure_texts) # Calculate similarity and find most similar pairs similarity_threshold = self.op_params.get("similarity_threshold", 0.3) diff --git a/reme_ai/summary/task/memory_deduplication_op.py b/reme_ai/summary/task/memory_deduplication_op.py index e5b86a32..b27974b0 100644 --- a/reme_ai/summary/task/memory_deduplication_op.py +++ b/reme_ai/summary/task/memory_deduplication_op.py @@ -13,7 +13,7 @@ class MemoryDeduplicationOp(BaseAsyncOp): async def async_execute(self): """Remove duplicate task memories""" # Get task memories to deduplicate - task_memories: List[BaseMemory] = self.context.memory_list + task_memories: List[BaseMemory] = self.context.response.metadata.get("memory_list", []) if not task_memories: logger.info("No task memories found for deduplication") @@ -28,7 +28,7 @@ class MemoryDeduplicationOp(BaseAsyncOp): f"Deduplication complete: {len(deduplicated_task_memories)} deduplicated task memories out of {len(task_memories)}") # Update context - self.context.memory_list = deduplicated_task_memories + self.context.response.metadata["memory_list"] = deduplicated_task_memories async def _deduplicate_task_memories(self, task_memories: List[BaseMemory]) -> List[BaseMemory]: """Remove duplicate task memories""" @@ -70,11 +70,11 @@ class MemoryDeduplicationOp(BaseAsyncOp): async def _get_existing_task_memory_embeddings(self, workspace_id: str) -> List[List[float]]: """Get embeddings of existing task memories""" try: - if not hasattr(self.context, 'vector_store') or not self.context.vector_store or not workspace_id: + if not hasattr(self, 'vector_store') or not self.vector_store or not workspace_id: return [] # Query existing task memory nodes - existing_nodes = await self.context.vector_store.async_search( + existing_nodes = await self.vector_store.async_search( query="...", # Empty query to get all workspace_id=workspace_id, top_k=self.op_params.get("max_existing_task_memories", 1000) @@ -97,12 +97,10 @@ class MemoryDeduplicationOp(BaseAsyncOp): def _get_task_memory_embedding(self, task_memory: BaseMemory) -> List[float] | None: """Generate embedding for task memory""" try: - if not hasattr(self.context, 'vector_store') or not self.context.vector_store: - return None # Combine task memory description and content for embedding text_for_embedding = f"{task_memory.when_to_use} {task_memory.content}" - embeddings = self.context.vector_store.embedding_model.get_embeddings([text_for_embedding]) + embeddings = self.vector_store.embedding_model.get_embeddings([text_for_embedding]) if embeddings and len(embeddings) > 0: return embeddings[0]