Skip to content

Commit 6e9cebf

Browse files
committed
Merge branch 'dev' of github.com:pursues/MemOS into dev
# Conflicts: # docker/requirements.txt
2 parents c71c4d6 + 2f10198 commit 6e9cebf

File tree

8 files changed

+64
-19
lines changed

8 files changed

+64
-19
lines changed

docker/requirements.txt

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,21 @@
11
annotated-types==0.7.0
2-
anyio==4.11.0
3-
attrs==25.4.0
4-
Authlib==1.6.5
5-
beartype==0.22.5
6-
cachetools==6.2.2
7-
certifi==2025.11.12
8-
cffi==2.0.0
9-
charset-normalizer==3.4.4
10-
chonkie==1.1.0
11-
click==8.3.0
2+
anyio==4.9.0
3+
async-timeout==5.0.1
4+
attrs==25.3.0
5+
authlib==1.6.0
6+
beautifulsoup4==4.13.4
7+
certifi==2025.7.14
8+
cffi==1.17.1
9+
charset-normalizer==3.4.2
10+
chonkie==1.1.1
11+
click==8.2.1
12+
cobble==0.1.4
13+
colorama==0.4.6
14+
coloredlogs==15.0.1
1215
concurrent-log-handler==0.9.28
13-
cryptography==46.0.3
14-
cyclopts==4.2.3
15-
diskcache==5.6.3
16+
cryptography==45.0.5
17+
cyclopts==3.22.2
18+
defusedxml==0.7.1
1619
distro==1.9.0
1720
dnspython==2.8.0
1821
docstring_parser==0.17.0

poetry.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
##############################################################################
55

66
name = "MemoryOS"
7-
version = "1.1.3"
7+
version = "2.0.0"
88
description = "Intelligence Begins with Memory"
99
license = {text = "Apache-2.0"}
1010
readme = "README.md"

src/memos/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
__version__ = "1.1.3"
1+
__version__ = "2.0.0"
22

33
from memos.configs.mem_cube import GeneralMemCubeConfig
44
from memos.configs.mem_os import MOSConfig

src/memos/api/handlers/component_init.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,6 @@ def init_server() -> dict[str, Any]:
200200
)
201201

202202
logger.debug("Memory manager initialized")
203-
204203
tokenizer = FastTokenizer()
205204
# Initialize text memory
206205
text_mem = SimpleTreeTextMemory(

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,7 @@ def _vector_recall(
318318
query_embedding: list[list[float]],
319319
memory_scope: str,
320320
top_k: int = 20,
321-
max_num: int = 5,
321+
max_num: int = 20,
322322
status: str = "activated",
323323
cube_name: str | None = None,
324324
search_filter: dict | None = None,

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from pathlib import Path
55
from typing import Any
66

7+
78
import numpy as np
89

910
from memos.dependency import require_python_package

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

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,49 @@ def _parse_task(
284284

285285
return parsed_goal, query_embedding, context, query
286286

287+
@timed
288+
def _retrieve_simple(
289+
self,
290+
query: str,
291+
top_k: int,
292+
search_filter: dict | None = None,
293+
user_name: str | None = None,
294+
**kwargs,
295+
):
296+
"""Retrieve from by keywords and embedding"""
297+
query_words = []
298+
if self.tokenizer:
299+
query_words = self.tokenizer.tokenize_mixed(query)
300+
else:
301+
query_words = query.strip().split()
302+
query_words = [query, *query_words]
303+
logger.info(f"[SIMPLESEARCH] Query words: {query_words}")
304+
query_embeddings = self.embedder.embed(query_words)
305+
306+
items = self.graph_retriever.retrieve_from_mixed(
307+
top_k=top_k * 2,
308+
memory_scope=None,
309+
query_embedding=query_embeddings,
310+
search_filter=search_filter,
311+
user_name=user_name,
312+
use_fast_graph=self.use_fast_graph,
313+
)
314+
logger.info(f"[SIMPLESEARCH] Items count: {len(items)}")
315+
documents = [getattr(item, "memory", "") for item in items]
316+
documents_embeddings = self.embedder.embed(documents)
317+
similarity_matrix = cosine_similarity_matrix(documents_embeddings)
318+
selected_indices, _ = find_best_unrelated_subgroup(documents, similarity_matrix)
319+
selected_items = [items[i] for i in selected_indices]
320+
logger.info(
321+
f"[SIMPLESEARCH] after unrelated subgroup selection items count: {len(selected_items)}"
322+
)
323+
return self.reranker.rerank(
324+
query=query,
325+
query_embedding=query_embeddings[0],
326+
graph_results=selected_items,
327+
top_k=top_k,
328+
)
329+
287330
@timed
288331
def _retrieve_paths(
289332
self,
@@ -367,7 +410,6 @@ def _retrieve_paths(
367410
mode=mode,
368411
)
369412
)
370-
371413
results = []
372414
for t in tasks:
373415
results.extend(t.result())

0 commit comments

Comments
 (0)