Skip to content

Commit bb6fc09

Browse files
authored
chore: bump version to v1.0.0 (#228)
## Description <!-- Please include a summary of the changes below; Fill in the issue number that this PR addresses (if applicable); Fill in the related MemOS-Docs repository issue or PR link (if applicable); Mention the person who will review this PR (if you know who it is); Replace (summary), (issue), (docs-issue-or-pr-link), and (reviewer) with the appropriate information. 请在下方填写更改的摘要; 填写此 PR 解决的问题编号(如果适用); 填写相关的 MemOS-Docs 仓库 issue 或 PR 链接(如果适用); 提及将审查此 PR 的人(如果您知道是谁); 替换 (summary)、(issue)、(docs-issue-or-pr-link) 和 (reviewer) 为适当的信息。 --> Summary: (summary) Fix: #(issue) Docs Issue/PR: (docs-issue-or-pr-link) Reviewer: @(reviewer) ## Checklist: - [ ] I have performed a self-review of my own code | 我已自行检查了自己的代码 - [ ] I have commented my code in hard-to-understand areas | 我已在难以理解的地方对代码进行了注释 - [ ] I have added tests that prove my fix is effective or that my feature works | 我已添加测试以证明我的修复有效或功能正常 - [ ] I have created related documentation issue/PR in [MemOS-Docs](https://github.com/MemTensor/MemOS-Docs) (if applicable) | 我已在 [MemOS-Docs](https://github.com/MemTensor/MemOS-Docs) 中创建了相关的文档 issue/PR(如果适用) - [ ] I have linked the issue to this PR (if applicable) | 我已将 issue 链接到此 PR(如果适用) - [ ] I have mentioned the person who will review this PR | 我已提及将审查此 PR 的人
2 parents a7a64d7 + 2fc71c8 commit bb6fc09

File tree

83 files changed

+2947
-1372
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

83 files changed

+2947
-1372
lines changed

.github/workflows/python-tests.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,12 @@ jobs:
4141
steps:
4242
- uses: actions/checkout@v4
4343
- name: Install poetry
44-
run: pipx install poetry
44+
# This is a temporary fix to ensure compatibility with Poetry & virtualenv
45+
# Revert to the original installation method once the poetry==2.1.4 is released
46+
run: |
47+
echo "virtualenv==20.32.0" > constraints.txt
48+
pipx install poetry==2.1.3 --pip-args="--constraint=constraints.txt"
49+
rm constraints.txt
4550
- name: Set up Python ${{ matrix.python-version }}
4651
uses: actions/setup-python@v5
4752
with:

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ evaluation/configs/*
1717
.env
1818
evaluation/scripts/personamem
1919

20+
# benchmarks
21+
benchmarks/
22+
2023
# Byte-compiled / optimized / DLL files
2124
__pycache__/
2225
*.py[cod]

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,11 @@ MemOS is licensed under the [Apache 2.0 License](./LICENSE).
251251

252252
Stay up to date with the latest MemOS announcements, releases, and community highlights.
253253

254+
255+
- **2025-08-07** - 🎉 *MemOS v1.0.0 (MemCube Release)*: First MemCube with word game demo, LongMemEval evaluation, BochaAISearchRetriever integration, NebulaGraph support, enhanced search capabilities, and official Playground launch.
256+
- **2025-07-29** – 🎉 *MemOS v0.2.2 (Nebula Update)*: Internet search+Nebula DB integration, refactored memory scheduler, KV Cache stress tests, MemCube Cookbook release (CN/EN), and 4b/1.7b/0.6b memory ops models.
257+
- **2025-07-21** – 🎉 *MemOS v0.2.1 (Neo Release)*: Lightweight Neo version with plaintext+KV Cache functionality, Docker/multi-tenant support, MCP expansion, and new Cookbook/Mud game examples.
258+
- **2025-07-11** – 🎉 *MemOS v0.2.0 (Cross-Platform)*: Added doc search/bilingual UI, MemReader-4B (local deploy), full Win/Mac/Linux support, and playground end-to-end connection.
254259
- **2025-07-07** – 🎉 *MemOS 1.0 (Stellar) Preview Release*: A SOTA Memory OS for LLMs is now open-sourced.
255260
- **2025-07-04** – 🎉 *MemOS Paper Released*: [MemOS: A Memory OS for AI System](https://arxiv.org/abs/2507.03724) was published on arXiv.
256261
- **2025-05-28** – 🎉 *Short Paper Uploaded*: [MemOS: An Operating System for Memory-Augmented Generation (MAG) in Large Language Models](https://arxiv.org/abs/2505.22101) was published on arXiv.

docs/openapi.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -884,7 +884,7 @@
884884
"type": "string",
885885
"title": "Session Id",
886886
"description": "Session ID for the MOS. This is used to distinguish between different dialogue",
887-
"default": "842877f4-c3f7-4c22-ad38-5950026870fe"
887+
"default": "0ce84b9c-0615-4b9d-83dd-fba50537d5d3"
888888
},
889889
"chat_model": {
890890
"$ref": "#/components/schemas/LLMConfigFactory",

evaluation/scripts/run_locomo_eval.sh

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ VERSION="072001"
66
WORKERS=10
77
TOPK=20
88

9-
# echo "Running locomo_ingestion.py..."
10-
# CUDA_VISIBLE_DEVICES=0 python scripts/locomo/locomo_ingestion.py --lib $LIB --version $VERSION --workers $WORKERS
11-
# if [ $? -ne 0 ]; then
12-
# echo "Error running locomo_ingestion.py"
13-
# exit 1
14-
# fi
9+
echo "Running locomo_ingestion.py..."
10+
CUDA_VISIBLE_DEVICES=0 python scripts/locomo/locomo_ingestion.py --lib $LIB --version $VERSION --workers $WORKERS
11+
if [ $? -ne 0 ]; then
12+
echo "Error running locomo_ingestion.py"
13+
exit 1
14+
fi
1515

1616
echo "Running locomo_search.py..."
1717
CUDA_VISIBLE_DEVICES=0 python scripts/locomo/locomo_search.py --lib $LIB --version $VERSION --top_k $TOPK --workers $WORKERS

examples/basic_modules/nebular_example.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def show(nebular_data):
2323

2424
tree_config = Neo4jGraphDBConfig.from_json_file("../../examples/data/config/neo4j_config.json")
2525
tree_config.use_multi_db = True
26-
tree_config.db_name = "nebular-show"
26+
tree_config.db_name = "nebular-show2"
2727

2828
neo4j_db = Neo4jGraphDB(tree_config)
2929
neo4j_db.clear()
@@ -42,6 +42,7 @@ def show(nebular_data):
4242
}
4343
)
4444
embedder = EmbedderFactory.from_config(embedder_config)
45+
embedder_dimension = 3072
4546

4647

4748
def embed_memory_item(memory: str) -> list[float]:
@@ -62,7 +63,7 @@ def example_multi_db(db_name: str = "paper"):
6263
"space": db_name,
6364
"use_multi_db": True,
6465
"auto_create": True,
65-
"embedding_dimension": 3072,
66+
"embedding_dimension": embedder_dimension,
6667
},
6768
)
6869

@@ -121,7 +122,7 @@ def example_shared_db(db_name: str = "shared-traval-group"):
121122
"user_name": user_name,
122123
"use_multi_db": False,
123124
"auto_create": True,
124-
"embedding_dimension": 3072,
125+
"embedding_dimension": embedder_dimension,
125126
},
126127
)
127128

@@ -208,7 +209,7 @@ def example_shared_db(db_name: str = "shared-traval-group"):
208209
"space": db_name,
209210
"user_name": user_list[0],
210211
"auto_create": True,
211-
"embedding_dimension": 3072,
212+
"embedding_dimension": embedder_dimension,
212213
"use_multi_db": False,
213214
},
214215
)
@@ -238,7 +239,7 @@ def run_user_session(
238239
"user_name": user_name,
239240
"use_multi_db": False,
240241
"auto_create": True,
241-
"embedding_dimension": 3072,
242+
"embedding_dimension": embedder_dimension,
242243
},
243244
)
244245
graph = GraphStoreFactory.from_config(config)
@@ -404,10 +405,10 @@ def example_complex_shared_db(db_name: str = "shared-traval-group-complex"):
404405

405406
if __name__ == "__main__":
406407
print("\n=== Example: Multi-DB ===")
407-
example_multi_db(db_name="paper")
408+
example_multi_db(db_name="paper-new")
408409

409410
print("\n=== Example: Single-DB ===")
410-
example_shared_db(db_name="shared_traval_group")
411+
example_shared_db(db_name="shared_traval_group-new")
411412

412413
print("\n=== Example: Single-DB-Complex ===")
413-
example_complex_shared_db(db_name="shared-traval-group-complex-new11")
414+
example_complex_shared_db(db_name="shared-traval-group-complex-new2")
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
"""
2+
Example: Using InternetRetrieverFactory with BochaAISearchRetriever
3+
"""
4+
5+
from memos.configs.embedder import EmbedderConfigFactory
6+
from memos.configs.internet_retriever import InternetRetrieverConfigFactory
7+
from memos.embedders.factory import EmbedderFactory
8+
from memos.memories.textual.tree_text_memory.retrieve.internet_retriever_factory import (
9+
InternetRetrieverFactory,
10+
)
11+
12+
13+
# ========= 1. Create an embedder =========
14+
embedder_config = EmbedderConfigFactory.model_validate(
15+
{
16+
"backend": "ollama", # Or "sentence_transformer", etc.
17+
"config": {
18+
"model_name_or_path": "nomic-embed-text:latest",
19+
},
20+
}
21+
)
22+
embedder = EmbedderFactory.from_config(embedder_config)
23+
24+
# ========= 2. Create retriever config for BochaAI =========
25+
retriever_config = InternetRetrieverConfigFactory.model_validate(
26+
{
27+
"backend": "bocha",
28+
"config": {
29+
"api_key": "sk-xxx", # Your BochaAI API Key
30+
"max_results": 5,
31+
"reader": { # Reader config for chunking web content
32+
"backend": "simple_struct",
33+
"config": { # your simple struct reader config
34+
},
35+
},
36+
},
37+
}
38+
)
39+
40+
# ========= 3. Build retriever instance via factory =========
41+
retriever = InternetRetrieverFactory.from_config(retriever_config, embedder)
42+
43+
# ========= 4. Run BochaAI Web Search =========
44+
print("=== Scenario 1: Web Search (BochaAI) ===")
45+
query_web = "Alibaba 2024 ESG report"
46+
results_web = retriever.retrieve_from_internet(query_web)
47+
48+
print(f"Retrieved {len(results_web)} memory items.")
49+
for idx, item in enumerate(results_web, 1):
50+
print(f"[{idx}] {item.memory[:500]}...") # preview first 100 chars
51+
52+
print("==" * 20)

examples/core_memories/tree_textual_memory.py

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,15 @@
11
import time
22

33
from memos import log
4-
from memos.configs.embedder import EmbedderConfigFactory
54
from memos.configs.mem_reader import SimpleStructMemReaderConfig
65
from memos.configs.memory import TreeTextMemoryConfig
7-
from memos.embedders.factory import EmbedderFactory
86
from memos.mem_reader.simple_struct import SimpleStructMemReader
97
from memos.memories.textual.tree import TreeTextMemory
108

119

1210
logger = log.get_logger(__name__)
1311

1412

15-
embedder_config = EmbedderConfigFactory.model_validate(
16-
{
17-
"backend": "ollama",
18-
"config": {
19-
"model_name_or_path": "nomic-embed-text:latest",
20-
},
21-
}
22-
)
23-
embedder = EmbedderFactory.from_config(embedder_config)
24-
25-
26-
def embed_memory_item(memory: str) -> list[float]:
27-
return embedder.embed([memory])[0]
28-
29-
3013
tree_config = TreeTextMemoryConfig.from_json_file(
3114
"examples/data/config/tree_config_shared_database.json"
3215
)
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
backend: general_scheduler
22
config:
33
top_k: 10
4-
top_n: 10
54
act_mem_update_interval: 30
65
context_window_size: 10
76
thread_pool_max_workers: 5
87
consume_interval_seconds: 1
8+
working_mem_monitor_capacity: 20
9+
activation_mem_monitor_capacity: 5
910
enable_parallel_dispatch: true
11+
enable_activation_memory: true

examples/data/config/mem_scheduler/mem_chat_config.yaml

Lines changed: 0 additions & 15 deletions
This file was deleted.

0 commit comments

Comments
 (0)