Skip to content

Commit 49eb6cb

Browse files
authored
feat: memos add moscube turnoff (#247)
1 parent 6477d6e commit 49eb6cb

File tree

6 files changed

+23
-10
lines changed

6 files changed

+23
-10
lines changed

src/memos/api/product_models.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ class ChatRequest(BaseRequest):
8484
mem_cube_id: str | None = Field(None, description="Cube ID to use for chat")
8585
history: list[MessageDict] | None = Field(None, description="Chat history")
8686
internet_search: bool = Field(True, description="Whether to use internet search")
87+
moscube: bool = Field(False, description="Whether to use MemOSCube")
8788

8889

8990
class UserCreate(BaseRequest):

src/memos/api/routers/product_router.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,7 @@ def generate_chat_response():
248248
cube_id=chat_req.mem_cube_id,
249249
history=chat_req.history,
250250
internet_search=chat_req.internet_search,
251+
moscube=chat_req.moscube,
251252
)
252253

253254
except Exception as e:

src/memos/mem_os/core.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -546,6 +546,8 @@ def search(
546546
top_k: int | None = None,
547547
mode: Literal["fast", "fine"] = "fast",
548548
internet_search: bool = False,
549+
moscube: bool = False,
550+
**kwargs,
549551
) -> MOSSearchResult:
550552
"""
551553
Search for textual memories across all registered MemCubes.
@@ -603,6 +605,7 @@ def search(
603605
"session_id": self.session_id,
604606
"chat_history": chat_history.chat_history,
605607
},
608+
moscube=moscube,
606609
)
607610
result["text_mem"].append({"cube_id": mem_cube_id, "memories": memories})
608611
logger.info(

src/memos/mem_os/product.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -523,7 +523,7 @@ def _send_message_to_scheduler(
523523
self.mem_scheduler.submit_messages(messages=[message_item])
524524

525525
def _filter_memories_by_threshold(
526-
self, memories: list[TextualMemoryItem], threshold: float = 0.20, min_num: int = 3
526+
self, memories: list[TextualMemoryItem], threshold: float = 0.50, min_num: int = 3
527527
) -> list[TextualMemoryItem]:
528528
"""
529529
Filter memories by threshold.
@@ -717,6 +717,7 @@ def chat_with_references(
717717
history: MessageList | None = None,
718718
top_k: int = 10,
719719
internet_search: bool = False,
720+
moscube: bool = False,
720721
) -> Generator[str, None, None]:
721722
"""
722723
Chat with LLM with memory references and streaming output.
@@ -742,6 +743,7 @@ def chat_with_references(
742743
top_k=top_k,
743744
mode="fine",
744745
internet_search=internet_search,
746+
moscube=moscube,
745747
)["text_mem"]
746748

747749
yield f"data: {json.dumps({'type': 'status', 'data': '1'})}\n\n"

src/memos/memories/textual/tree.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ def search(
9696
mode: str = "fast",
9797
memory_type: str = "All",
9898
manual_close_internet: bool = False,
99+
moscube: bool = False,
99100
) -> list[TextualMemoryItem]:
100101
"""Search for memories based on a query.
101102
User query -> TaskGoalParser -> MemoryPathResolver ->
@@ -122,13 +123,15 @@ def search(
122123
self.graph_store,
123124
self.embedder,
124125
internet_retriever=None,
126+
moscube=moscube,
125127
)
126128
else:
127129
searcher = Searcher(
128130
self.dispatcher_llm,
129131
self.graph_store,
130132
self.embedder,
131133
internet_retriever=self.internet_retriever,
134+
moscube=moscube,
132135
)
133136
return searcher.search(query, top_k, info, mode, memory_type)
134137

src/memos/memories/textual/tree_text_memory/retrieve/searcher.py

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ def __init__(
2727
graph_store: Neo4jGraphDB,
2828
embedder: OllamaEmbedder,
2929
internet_retriever: InternetRetrieverFactory | None = None,
30+
moscube: bool = False,
3031
):
3132
self.graph_store = graph_store
3233
self.embedder = embedder
@@ -38,6 +39,7 @@ def __init__(
3839

3940
# Create internet retriever from config if provided
4041
self.internet_retriever = internet_retriever
42+
self.moscube = moscube
4143

4244
@timed
4345
def search(
@@ -157,16 +159,17 @@ def _retrieve_paths(self, query, parsed_goal, query_embedding, info, top_k, mode
157159
memory_type,
158160
)
159161
)
160-
tasks.append(
161-
executor.submit(
162-
self._retrieve_from_memcubes,
163-
query,
164-
parsed_goal,
165-
query_embedding,
166-
top_k,
167-
"memos_cube01",
162+
if self.moscube:
163+
tasks.append(
164+
executor.submit(
165+
self._retrieve_from_memcubes,
166+
query,
167+
parsed_goal,
168+
query_embedding,
169+
top_k,
170+
"memos_cube01",
171+
)
168172
)
169-
)
170173

171174
results = []
172175
for t in tasks:

0 commit comments

Comments
 (0)