Skip to content

Commit a7a64d7

Browse files
authored
chore: bump version number to v0.2.2 (#191)
Bug Fixes: Fixed date parsing errors and memreader issues Resolved general text memory problems Fixed bugs in memos_w_scheduler examples and related issues Addressed search bugs when calling Nebula Added metadata filters and fixed bugs in fetching by metadata Aligned MOSProduct._build_system_prompt signature with MOSCore New Features: Added support for removing duplicate nodes in playground and refactored reorganizer configuration code Improved memory scheduler architecture and configurations with exception handling Supported memos API mode and added memreader for internet-related content Enhanced internet search functionality and interface code, modified default internet search configurations Added context for playground and fastapi objects, and node existence checks Introduced user manager factory pattern and enhanced product API Added Nebula-related features and configuration updates, along with chat history functionality Updated dim environment Improvements: Modified docker settings and user manager duplicate field configurations Rewrote query functionality Documentation & DevOps: Updated version with significant enhancements in functionality, bug fixes, and configuration adjustments to improve overall performance and user experience.
2 parents d131bce + 7d30eb5 commit a7a64d7

File tree

117 files changed

+7897
-2422
lines changed

Some content is hidden

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

117 files changed

+7897
-2422
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,16 @@ tmp/
66
**/tmp_data/
77

88
# evaluation data
9+
*.csv
10+
*.jsonl
911
evaluation/*tmp/
1012
evaluation/results
1113
evaluation/.env
1214
!evaluation/configs-example/*.json
1315
evaluation/configs/*
1416
**tree_textual_memory_locomo**
1517
.env
18+
evaluation/scripts/personamem
1619

1720
# Byte-compiled / optimized / DLL files
1821
__pycache__/

docker/Dockerfile

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1+
# Base image
12
FROM python:3.11-slim
23

4+
# Install dependencies
35
RUN apt-get update && apt-get install -y \
46
gcc \
57
g++ \
@@ -9,17 +11,25 @@ RUN apt-get update && apt-get install -y \
911
curl \
1012
&& rm -rf /var/lib/apt/lists/*
1113

14+
# Set working directory
1215
WORKDIR /app
1316

17+
# Set Hugging Face mirror
1418
ENV HF_ENDPOINT=https://hf-mirror.com
1519

16-
COPY requirements.txt .
20+
# Install Python packages
21+
COPY docker/requirements.txt .
1722
RUN pip install --upgrade pip && pip install --no-cache-dir -r requirements.txt
1823

19-
RUN pip install chonkie
24+
# Copy application code
25+
COPY docker/ ./docker/
26+
COPY src/ ./src/
2027

21-
COPY ../. .
28+
# Set Python import path
2229
ENV PYTHONPATH=/app/src
2330

31+
# Expose port
2432
EXPOSE 8000
33+
34+
# Start the docker
2535
CMD ["uvicorn", "memos.api.product_api:app", "--host", "0.0.0.0", "--port", "8000", "--reload"]

docker/docker-compose.yml

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ name: memos-dev
22

33
services:
44
memos:
5-
container_name: memos-api-server
5+
container_name: memos-api-docker
66
build:
77
context: ..
8-
dockerfile: Dockerfile
8+
dockerfile: docker/Dockerfile
99
ports:
1010
- "8000:8000"
1111
env_file:
@@ -15,14 +15,16 @@ services:
1515
- qdrant
1616
environment:
1717
- PYTHONPATH=/app/src
18+
- HF_ENDPOINT=https://hf-mirror.com
1819
volumes:
19-
- .:/app
20+
- ../src:/app/src
21+
- .:/app/docker
2022
networks:
2123
- memos_network
2224

2325
neo4j:
2426
image: neo4j:5.26.4
25-
container_name: neo4j-server
27+
container_name: neo4j-docker
2628
ports:
2729
- "7474:7474" # HTTP
2830
- "7687:7687" # Bolt
@@ -43,7 +45,7 @@ services:
4345

4446
qdrant:
4547
image: qdrant/qdrant:v1.15.0
46-
container_name: qdrant-server
48+
container_name: qdrant-docker
4749
ports:
4850
- "6333:6333" # REST API
4951
- "6334:6334" # gRPC API

docker/requirements.txt

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,33 @@ annotated-types==0.7.0 ; python_version >= "3.10" and python_version < "4.0"
22
anyio==4.9.0 ; python_version >= "3.10" and python_version < "4.0"
33
attrs==25.3.0 ; python_version >= "3.10" and python_version < "4.0"
44
authlib==1.6.0 ; python_version >= "3.10" and python_version < "4.0"
5+
beautifulsoup4==4.13.4 ; python_version >= "3.10" and python_version < "4.0"
56
certifi==2025.7.14 ; python_version >= "3.10" and python_version < "4.0"
67
cffi==1.17.1 ; python_version >= "3.10" and python_version < "4.0" and platform_python_implementation != "PyPy"
8+
cfgv==3.4.0 ; python_version >= "3.10" and python_version < "4.0"
79
charset-normalizer==3.4.2 ; python_version >= "3.10" and python_version < "4.0"
10+
chonkie==1.1.1 ; python_version >= "3.10" and python_version < "4.0"
811
click==8.2.1 ; python_version >= "3.10" and python_version < "4.0"
12+
cobble==0.1.4 ; python_version >= "3.10" and python_version < "4.0"
913
colorama==0.4.6 ; python_version >= "3.10" and python_version < "4.0" and (platform_system == "Windows" or sys_platform == "win32")
14+
coloredlogs==15.0.1 ; python_version >= "3.10" and python_version < "4.0"
1015
cryptography==45.0.5 ; python_version >= "3.10" and python_version < "4.0"
1116
cyclopts==3.22.2 ; python_version >= "3.10" and python_version < "4.0"
17+
defusedxml==0.7.1 ; python_version >= "3.10" and python_version < "4.0"
18+
distlib==0.4.0 ; python_version >= "3.10" and python_version < "4.0"
1219
distro==1.9.0 ; python_version >= "3.10" and python_version < "4.0"
1320
dnspython==2.7.0 ; python_version >= "3.10" and python_version < "4.0"
1421
docstring-parser==0.16 ; python_version >= "3.10" and python_version < "4.0"
1522
docutils==0.21.2 ; python_version >= "3.10" and python_version < "4.0"
1623
email-validator==2.2.0 ; python_version >= "3.10" and python_version < "4.0"
24+
et-xmlfile==2.0.0 ; python_version >= "3.10" and python_version < "4.0"
1725
exceptiongroup==1.3.0 ; python_version >= "3.10" and python_version < "4.0"
1826
fastapi-cli==0.0.8 ; python_version >= "3.10" and python_version < "4.0"
1927
fastapi-cloud-cli==0.1.4 ; python_version >= "3.10" and python_version < "4.0"
2028
fastapi==0.115.14 ; python_version >= "3.10" and python_version < "4.0"
2129
fastmcp==2.10.5 ; python_version >= "3.10" and python_version < "4.0"
2230
filelock==3.18.0 ; python_version >= "3.10" and python_version < "4.0"
31+
flatbuffers==25.2.10 ; python_version >= "3.10" and python_version < "4.0"
2332
fsspec==2025.7.0 ; python_version >= "3.10" and python_version < "4.0"
2433
greenlet==3.2.3 ; python_version >= "3.10" and python_version < "3.14" and (platform_machine == "aarch64" or platform_machine == "ppc64le" or platform_machine == "x86_64" or platform_machine == "amd64" or platform_machine == "AMD64" or platform_machine == "win32" or platform_machine == "WIN32")
2534
h11==0.16.0 ; python_version >= "3.10" and python_version < "4.0"
@@ -29,33 +38,59 @@ httptools==0.6.4 ; python_version >= "3.10" and python_version < "4.0"
2938
httpx-sse==0.4.1 ; python_version >= "3.10" and python_version < "4.0"
3039
httpx==0.28.1 ; python_version >= "3.10" and python_version < "4.0"
3140
huggingface-hub==0.33.4 ; python_version >= "3.10" and python_version < "4.0"
41+
humanfriendly==10.0 ; python_version >= "3.10" and python_version < "4.0"
42+
identify==2.6.12 ; python_version >= "3.10" and python_version < "4.0"
3243
idna==3.10 ; python_version >= "3.10" and python_version < "4.0"
44+
iniconfig==2.1.0 ; python_version >= "3.10" and python_version < "4.0"
3345
itsdangerous==2.2.0 ; python_version >= "3.10" and python_version < "4.0"
3446
jinja2==3.1.6 ; python_version >= "3.10" and python_version < "4.0"
3547
jiter==0.10.0 ; python_version >= "3.10" and python_version < "4.0"
3648
joblib==1.5.1 ; python_version >= "3.10" and python_version < "4.0"
3749
jsonschema-specifications==2025.4.1 ; python_version >= "3.10" and python_version < "4.0"
3850
jsonschema==4.24.1 ; python_version >= "3.10" and python_version < "4.0"
51+
lxml==6.0.0 ; python_version >= "3.10" and python_version < "4.0"
52+
magika==0.6.2 ; python_version >= "3.10" and python_version < "4.0"
53+
mammoth==1.9.1 ; python_version >= "3.10" and python_version < "4.0"
3954
markdown-it-py==3.0.0 ; python_version >= "3.10" and python_version < "4.0"
55+
markdownify==1.1.0 ; python_version >= "3.10" and python_version < "4.0"
56+
markitdown==0.1.2 ; python_version >= "3.10" and python_version < "4.0"
4057
markupsafe==3.0.2 ; python_version >= "3.10" and python_version < "4.0"
4158
mcp==1.12.0 ; python_version >= "3.10" and python_version < "4.0"
4259
mdurl==0.1.2 ; python_version >= "3.10" and python_version < "4.0"
60+
mpmath==1.3.0 ; python_version >= "3.10" and python_version < "4.0"
61+
neo4j==5.28.1 ; python_version >= "3.10" and python_version < "4.0"
62+
nodeenv==1.9.1 ; python_version >= "3.10" and python_version < "4.0"
4363
numpy==2.2.6 ; python_version == "3.10"
4464
numpy==2.3.1 ; python_version >= "3.11" and python_version < "4.0"
4565
ollama==0.4.9 ; python_version >= "3.10" and python_version < "4.0"
66+
onnxruntime==1.22.1 ; python_version >= "3.10" and python_version < "4.0"
4667
openai==1.97.0 ; python_version >= "3.10" and python_version < "4.0"
4768
openapi-pydantic==0.5.1 ; python_version >= "3.10" and python_version < "4.0"
69+
openpyxl==3.1.5 ; python_version >= "3.10" and python_version < "4.0"
4870
orjson==3.11.0 ; python_version >= "3.10" and python_version < "4.0"
4971
packaging==25.0 ; python_version >= "3.10" and python_version < "4.0"
72+
pandas==2.3.1 ; python_version >= "3.10" and python_version < "4.0"
73+
pdfminer-six==20250506 ; python_version >= "3.10" and python_version < "4.0"
74+
pillow==11.3.0 ; python_version >= "3.10" and python_version < "4.0"
75+
platformdirs==4.3.8 ; python_version >= "3.10" and python_version < "4.0"
76+
pluggy==1.6.0 ; python_version >= "3.10" and python_version < "4.0"
77+
pre-commit==4.2.0 ; python_version >= "3.10" and python_version < "4.0"
78+
protobuf==6.31.1 ; python_version >= "3.10" and python_version < "4.0"
5079
pycparser==2.22 ; python_version >= "3.10" and python_version < "4.0" and platform_python_implementation != "PyPy"
5180
pydantic-core==2.33.2 ; python_version >= "3.10" and python_version < "4.0"
5281
pydantic-extra-types==2.10.5 ; python_version >= "3.10" and python_version < "4.0"
5382
pydantic-settings==2.10.1 ; python_version >= "3.10" and python_version < "4.0"
5483
pydantic==2.11.7 ; python_version >= "3.10" and python_version < "4.0"
5584
pygments==2.19.2 ; python_version >= "3.10" and python_version < "4.0"
5685
pyperclip==1.9.0 ; python_version >= "3.10" and python_version < "4.0"
86+
pyreadline3==3.5.4 ; python_version >= "3.10" and python_version < "4.0" and sys_platform == "win32"
87+
pytest-asyncio==0.23.8 ; python_version >= "3.10" and python_version < "4.0"
88+
pytest==8.4.1 ; python_version >= "3.10" and python_version < "4.0"
89+
python-dateutil==2.9.0.post0 ; python_version >= "3.10" and python_version < "4.0"
5790
python-dotenv==1.1.1 ; python_version >= "3.10" and python_version < "4.0"
5891
python-multipart==0.0.20 ; python_version >= "3.10" and python_version < "4.0"
92+
python-pptx==1.0.2 ; python_version >= "3.10" and python_version < "4.0"
93+
pytz==2025.2 ; python_version >= "3.10" and python_version < "4.0"
5994
pywin32==311 ; python_version >= "3.10" and python_version < "4.0" and (platform_system == "Windows" or sys_platform == "win32")
6095
pyyaml==6.0.2 ; python_version >= "3.10" and python_version < "4.0"
6196
referencing==0.36.2 ; python_version >= "3.10" and python_version < "4.0"
@@ -66,27 +101,37 @@ rich-toolkit==0.14.8 ; python_version >= "3.10" and python_version < "4.0"
66101
rich==14.0.0 ; python_version >= "3.10" and python_version < "4.0"
67102
rignore==0.6.2 ; python_version >= "3.10" and python_version < "4.0"
68103
rpds-py==0.26.0 ; python_version >= "3.10" and python_version < "4.0"
104+
ruff==0.11.13 ; python_version >= "3.10" and python_version < "4.0"
69105
safetensors==0.5.3 ; python_version >= "3.10" and python_version < "4.0"
106+
schedule==1.2.2 ; python_version >= "3.10" and python_version < "4.0"
70107
scikit-learn==1.7.0 ; python_version >= "3.10" and python_version < "4.0"
71108
scipy==1.15.3 ; python_version == "3.10"
72109
scipy==1.16.0 ; python_version >= "3.11" and python_version < "4.0"
73110
sentry-sdk==2.33.0 ; python_version >= "3.10" and python_version < "4.0"
74111
shellingham==1.5.4 ; python_version >= "3.10" and python_version < "4.0"
112+
six==1.17.0 ; python_version >= "3.10" and python_version < "4.0"
75113
sniffio==1.3.1 ; python_version >= "3.10" and python_version < "4.0"
114+
soupsieve==2.7 ; python_version >= "3.10" and python_version < "4.0"
76115
sqlalchemy==2.0.41 ; python_version >= "3.10" and python_version < "4.0"
77116
sse-starlette==2.4.1 ; python_version >= "3.10" and python_version < "4.0"
78117
starlette==0.46.2 ; python_version >= "3.10" and python_version < "4.0"
118+
sympy==1.14.0 ; python_version >= "3.10" and python_version < "4.0"
79119
tenacity==9.1.2 ; python_version >= "3.10" and python_version < "4.0"
80120
threadpoolctl==3.6.0 ; python_version >= "3.10" and python_version < "4.0"
81121
tokenizers==0.21.2 ; python_version >= "3.10" and python_version < "4.0"
122+
tomli==2.2.1 ; python_version == "3.10"
82123
tqdm==4.67.1 ; python_version >= "3.10" and python_version < "4.0"
83124
transformers==4.53.2 ; python_version >= "3.10" and python_version < "4.0"
84125
typer==0.16.0 ; python_version >= "3.10" and python_version < "4.0"
85126
typing-extensions==4.14.1 ; python_version >= "3.10" and python_version < "4.0"
86127
typing-inspection==0.4.1 ; python_version >= "3.10" and python_version < "4.0"
128+
tzdata==2025.2 ; python_version >= "3.10" and python_version < "4.0"
87129
ujson==5.10.0 ; python_version >= "3.10" and python_version < "4.0"
88130
urllib3==2.5.0 ; python_version >= "3.10" and python_version < "4.0"
89131
uvicorn==0.35.0 ; python_version >= "3.10" and python_version < "4.0"
90132
uvloop==0.21.0 ; python_version >= "3.10" and python_version < "4.0" and platform_python_implementation != "PyPy" and sys_platform != "win32" and sys_platform != "cygwin"
133+
virtualenv==20.31.2 ; python_version >= "3.10" and python_version < "4.0"
91134
watchfiles==1.1.0 ; python_version >= "3.10" and python_version < "4.0"
92135
websockets==15.0.1 ; python_version >= "3.10" and python_version < "4.0"
136+
xlrd==2.0.2 ; python_version >= "3.10" and python_version < "4.0"
137+
xlsxwriter==3.2.5 ; python_version >= "3.10" and python_version < "4.0"

docs/openapi.json

Lines changed: 24 additions & 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": "a47d75a0-5ee8-473f-86c4-3f09073fd59f"
887+
"default": "842877f4-c3f7-4c22-ad38-5950026870fe"
888888
},
889889
"chat_model": {
890890
"$ref": "#/components/schemas/LLMConfigFactory",
@@ -905,6 +905,10 @@
905905
],
906906
"description": "Memory scheduler configuration for managing memory operations"
907907
},
908+
"user_manager": {
909+
"$ref": "#/components/schemas/UserManagerConfigFactory",
910+
"description": "User manager configuration for database operations"
911+
},
908912
"max_turns_window": {
909913
"type": "integer",
910914
"title": "Max Turns Window",
@@ -1370,6 +1374,25 @@
13701374
"title": "UserListResponse",
13711375
"description": "Response model for user list operations."
13721376
},
1377+
"UserManagerConfigFactory": {
1378+
"properties": {
1379+
"backend": {
1380+
"type": "string",
1381+
"title": "Backend",
1382+
"description": "Backend for user manager",
1383+
"default": "sqlite"
1384+
},
1385+
"config": {
1386+
"additionalProperties": true,
1387+
"type": "object",
1388+
"title": "Config",
1389+
"description": "Configuration for the user manager backend"
1390+
}
1391+
},
1392+
"type": "object",
1393+
"title": "UserManagerConfigFactory",
1394+
"description": "Factory for user manager configurations."
1395+
},
13731396
"UserResponse": {
13741397
"properties": {
13751398
"code": {

evaluation/data/personamem/.gitkeep

Whitespace-only changes.

evaluation/scripts/locomo/locomo_eval.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
except Exception as e:
3333
print(f"Warning: Failed to download NLTK resources: {e}")
3434

35-
3635
try:
3736
sentence_model_name = "Qwen/Qwen3-Embedding-0.6B"
3837
sentence_model = SentenceTransformer(sentence_model_name)
@@ -363,8 +362,7 @@ async def limited_task(task):
363362
parser.add_argument(
364363
"--lib",
365364
type=str,
366-
choices=["zep", "memos", "mem0", "mem0_graph", "langmem", "openai"],
367-
help="Specify the memory framework (zep or memos or mem0 or mem0_graph)",
365+
choices=["zep", "memos", "mem0", "mem0_graph", "openai", "memos-api", "memobase"],
368366
)
369367
parser.add_argument(
370368
"--version",

0 commit comments

Comments
 (0)