安装指南
MemOS 完整安装指南。
通过Docker安装
git clone https://github.com/MemTensor/MemOS.git
cd MemOS
创建 .env 配置文件
请注意
.env 文件配置需要放在MemOS 项目根目录下
.env 文件配置需要放在MemOS 项目根目录下
1. 新建 .env
cd MemOS
touch .env
2. .env 内容
.env 快速配置如下
# OpenAI API 密钥 (需自定义配置)
OPENAI_API_KEY=sk-xxx
# OpenAI API 基础 URL
OPENAI_API_BASE=http://xxx:3000/v1
# 默认模型名称
MOS_CHAT_MODEL=qwen3-max
# Memory Reader LLM 模型
MEMRADER_MODEL=qwen3-max
# Memory Reader API 密钥
MEMRADER_API_KEY=sk-xxx
# Memory Reader API 基础 URL
MEMRADER_API_BASE=http://xxx:3000/v1
# Embedder 模型名称
MOS_EMBEDDER_MODEL=text-embedding-v4
# 配置embedding backend 两种选择 ollama | universal_api
MOS_EMBEDDER_BACKEND=universal_api
# Embedder API 基础 URL
MOS_EMBEDDER_API_BASE=http://xxx:8081/v1
# Embedder API 密钥
MOS_EMBEDDER_API_KEY=xxx
# Embedding 向量维度
EMBEDDING_DIMENSION=1024
# Reranker 后端 (http_bge | etc.)
MOS_RERANKER_BACKEND=cosine_local
# Neo4j 连接 URI
# 可选值: neo4j-community | neo4j | nebular | polardb
NEO4J_BACKEND=neo4j-community
# 当 backend=neo4j* 时必须
NEO4J_URI=bolt://localhost:7687
NEO4J_USER=neo4j
NEO4J_PASSWORD=12345678
NEO4J_DB_NAME=neo4j
MOS_NEO4J_SHARED_DB=false
# 是否使用 redis 的调度器
DEFAULT_USE_REDIS_QUEUE=false
# 启用聊天 API
ENABLE_CHAT_API=true
# 聊天模型列表 可以通过百炼申请. 模型可自选
CHAT_MODEL_LIST=[{"backend": "qwen", "api_base": "https://xxx/v1", "api_key": "sk-xxx", "model_name_or_path": "qwen3-max", "extra_body": {"enable_thinking": true} ,"support_models": ["qwen3-max"]}]
.env 以百炼为示例配置如下
# 可通过百炼平台申请
# https://bailian.console.aliyun.com/?spm=a2c4g.11186623.0.0.2f2165b08fRk4l&tab=api#/api
# 申请成功后,获取API_KEY和BASE_URL,示例配置如下
# OpenAI API 密钥 (用百炼的API_KEY)
OPENAI_API_KEY=you_bailian_api_key
# OpenAI API 基础 URL
OPENAI_API_BASE=https://dashscope.aliyuncs.com/compatible-mode/v1
# 默认模型名称
MOS_CHAT_MODEL=qwen3-max
# Memory Reader LLM 模型
MEMRADER_MODEL=qwen3-max
# Memory Reader API 密钥 (用百炼的API_KEY)
MEMRADER_API_KEY=you_bailian_api_key
# Memory Reader API 基础 URL
MEMRADER_API_BASE=https://dashscope.aliyuncs.com/compatible-mode/v1
# Embedder模型名称可以参考下面链接
# https://bailian.console.aliyun.com/?spm=a2c4g.11186623.0.0.2f2165b08fRk4l&tab=api#/api/?type=model&url=2846066
MOS_EMBEDDER_MODEL=text-embedding-v4
# 配置embedding backend 两种选择 ollama | universal_api
MOS_EMBEDDER_BACKEND=universal_api
# Embedder API 基础 URL
MOS_EMBEDDER_API_BASE=https://dashscope.aliyuncs.com/compatible-mode/v1
# Embedder API 密钥 (用百炼的API_KEY)
MOS_EMBEDDER_API_KEY=you_bailian_api_key
# Embedding 向量维度
EMBEDDING_DIMENSION=1024
# Reranker 后端 (http_bge | etc.)
MOS_RERANKER_BACKEND=cosine_local
# Neo4j 连接 URI
# 可选值: neo4j-community | neo4j | nebular | polardb
NEO4J_BACKEND=neo4j-community
# 当 backend=neo4j* 时必须
NEO4J_URI=bolt://localhost:7687
NEO4J_USER=neo4j
NEO4J_PASSWORD=12345678
NEO4J_DB_NAME=neo4j
MOS_NEO4J_SHARED_DB=false
# 是否使用 redis 的调度器
DEFAULT_USE_REDIS_QUEUE=false
# 启用聊天 API
ENABLE_CHAT_API=true
CHAT_MODEL_LIST=[{"backend": "qwen", "api_base": "https://dashscope.aliyuncs.com/compatible-mode/v1", "api_key": "you_bailian_api_key", "model_name_or_path": "qwen3-max-preview", "extra_body": {"enable_thinking": true} ,"support_models": ["qwen3-max-preview"]}]

百炼申请 API_KEY和 BASE_URL 示例
配置Dockerfile文件
请注意
Dockerfile 文件在 docker 目录下
Dockerfile 文件在 docker 目录下
#进入docker目录下
cd docker
包含快速模式和完整模式,可区分使用精简包(区分arm和x86)和全量包(区分arm和x86)
● 精简包:简化体量过大的 nvidia相关等依赖,对镜像实现轻量化,使本地部署更加轻量快速。
url: registry.cn-shanghai.aliyuncs.com/memtensor/memos-base:v1.0
url: registry.cn-shanghai.aliyuncs.com/memtensor/memos-base-arm:v1.0
● 全量包:将 MemOS 全部依赖包打为镜像,可体验完整功能,通过配置 Dockerfile可直接构建启动。
url: registry.cn-shanghai.aliyuncs.com/memtensor/memos-full-base:v1.0.0
url: registry.cn-shanghai.aliyuncs.com/memtensor/memos-full-base-arm:v1.0.0
# 当前示例使用精简包 url
FROM registry.cn-shanghai.aliyuncs.com/memtensor/memos-base-arm:v1.0
WORKDIR /app
ENV HF_ENDPOINT=https://hf-mirror.com
ENV PYTHONPATH=/app/src
COPY src/ ./src/
EXPOSE 8000
CMD ["uvicorn", "memos.api.server_api:app", "--host", "0.0.0.0", "--port", "8000", "--reload"]
启动docker客户端
# 如果没有安装docker,请安装对应版本,下载地址如下:
https://www.docker.com/
# 安装完成之后,可通过客户端启动docker,或者通过命令行启动docker
# 通过命令行启动docker
sudo systemctl start docker
# 安装完成后,查看docker状态
docker ps
# 查看docker镜像 (可不用)
docker images
构建并启动服务 :
请注意
构建命令同样在 docker 目录下
构建命令同样在 docker 目录下
# 在docker目录下
docker compose up

示例图片,端口按 docker 自定义的配置
通过 http://localhost:8000/docs 访问 API。

ADD Memory
curl --location --request POST 'http://127.0.0.1:8000/product/add' \
--header 'Content-Type: application/json' \
--data-raw '{
"messages": [{
"role": "user",
"content": "我喜欢吃草莓"
}],
"user_id": "8736b16e-1d20-4163-980b-a5063c3facdc",
"writable_cube_ids":["b32d0977-435d-4828-a86f-4f47f8b55bca"]
}'
# 响应
{
"code": 200,
"message": "Memory created successfully",
"data": null
}
Search Memory
curl --location --request POST 'http://127.0.0.1:8000/product/search' \
--header 'Content-Type: application/json' \
--data-raw '{
"query": "我喜欢吃什么",
"user_id": "8736b16e-1d20-4163-980b-a5063c3facdc",
"readable_cube_ids": ["b32d0977-435d-4828-a86f-4f47f8b55bca"],
"top_k":20
}'
# 响应
{
"code": 200,
"message": "Search completed successfully",
"data": {
"text_mem": [
{
"cube_id": "7231eda8-6c57-4f6e-97ce-98b699eebb98",
"memories": [
{
"id": "2f40be8f-736c-4a5f-aada-9489037769e0",
"memory": "[user观点]用户喜欢草莓。",
"metadata": {
"user_id": "de8215e3-3beb-4afc-9b64-ae594d62f1ea",
"session_id": "root_session",
"status": "activated",
"type": "fact",
"key": "用户对草莓的喜好",
"confidence": 0.99,
"source": null,
"tags": [
"喜好",
"草莓"
],
"visibility": null,
"updated_at": "2025-09-18T08:23:44.625479000+00:00",
"memory_type": "UserMemory",
"sources": [],
"embedding": [],
"created_at": "2025-09-18T08:23:44.625511000+00:00",
"usage": [
"{
"time": "2025-09-18T08:24:17.759748",
"info": {
"user_id": "de8215e3-3beb-4afc-9b64-ae594d62f1ea",
"session_id": "root_session"
}
}"
],
"background": "用户表达了对草莓的喜好,显示出他们在饮食偏好上的倾向。",
"relativity": 0.6349761312470591,
"vector_sync": "success",
"ref_id": "[2f40be8f]",
"id": "2f40be8f-736c-4a5f-aada-9489037769e0",
"memory": "[user观点]用户喜欢草莓。"
},
"ref_id": "[2f40be8f]"
},
...
}
}
],
"act_mem": [],
"para_mem": []
}
}
从源码安装
git clone https://github.com/MemTensor/MemOS.git
cd MemOS
创建 .env 配置文件
MemOS 的 server_api 依赖环境变量启动,因此需要在启动目录下创建 .env 文件。
- 新建 .env
cd MemOS
touch .env
请注意
.env 文件配置需要放在MemOS 项目根目录下
.env 文件配置需要放在MemOS 项目根目录下
安装依赖
# 执行安装命令
pip install -e .
pip install --no-cache-dir -r ./docker/requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
# 配置PYTHONPATH 当前项目文件的绝对目录下的 src
export PYTHONPATH=/******/MemOS/src
安装图数据库
Memos的记忆底层是通过图数据库进行存储的,在开源项目中,推荐使用Neo4j运行您的第一个项目。社区同时支持Neo4j企业版/社区版与PolarDB。
PC开发者的最快选择:Neo4j Desktop
如果您计划使用 Neo4j 作为图记忆,Neo4j Desktop可能是最方便的安装方式。
另外,您需要在 .env 文件中设置 NEO4J_BACKEND=neo4j
如果您计划使用 Neo4j 作为图记忆,Neo4j Desktop可能是最方便的安装方式。
另外,您需要在 .env 文件中设置 NEO4J_BACKEND=neo4j
启动 MemOS Server。
# 项目根目录下
uvicorn memos.api.server_api:app --host 0.0.0.0 --port 8000 --workers 1
ADD Memory
curl --location --request POST 'http://127.0.0.1:8000/product/add' \
--header 'Content-Type: application/json' \
--data-raw '{
"messages": [{
"role": "user",
"content": "我喜欢吃草莓"
}],
"user_id": "8736b16e-1d20-4163-980b-a5063c3facdc",
"writable_cube_ids":["b32d0977-435d-4828-a86f-4f47f8b55bca"]
}'
# 响应
{
"code": 200,
"message": "Memory created successfully",
"data": null
}
Search Memory
curl --location --request POST 'http://127.0.0.1:8000/product/search' \
--header 'Content-Type: application/json' \
--data-raw '{
"query": "我喜欢吃什么",
"user_id": "8736b16e-1d20-4163-980b-a5063c3facdc",
"readable_cube_ids": ["b32d0977-435d-4828-a86f-4f47f8b55bca"],
"top_k":20
}'
# 响应
{
"code": 200,
"message": "Search completed successfully",
"data": {
"text_mem": [
{
"cube_id": "7231eda8-6c57-4f6e-97ce-98b699eebb98",
"memories": [
{
"id": "2f40be8f-736c-4a5f-aada-9489037769e0",
"memory": "[user观点]用户喜欢草莓。",
"metadata": {
"user_id": "de8215e3-3beb-4afc-9b64-ae594d62f1ea",
"session_id": "root_session",
"status": "activated",
"type": "fact",
"key": "用户对草莓的喜好",
"confidence": 0.99,
"source": null,
"tags": [
"喜好",
"草莓"
],
"visibility": null,
"updated_at": "2025-09-18T08:23:44.625479000+00:00",
"memory_type": "UserMemory",
"sources": [],
"embedding": [],
"created_at": "2025-09-18T08:23:44.625511000+00:00",
"usage": [
"{
"time": "2025-09-18T08:24:17.759748",
"info": {
"user_id": "de8215e3-3beb-4afc-9b64-ae594d62f1ea",
"session_id": "root_session"
}
}"
],
"background": "用户表达了对草莓的喜好,显示出他们在饮食偏好上的倾向。",
"relativity": 0.6349761312470591,
"vector_sync": "success",
"ref_id": "[2f40be8f]",
"id": "2f40be8f-736c-4a5f-aada-9489037769e0",
"memory": "[user观点]用户喜欢草莓。"
},
"ref_id": "[2f40be8f]"
},
...
}
}
],
"act_mem": [],
"para_mem": []
}
}
通过pip安装
安装 MemOS 最简单的方法是使用 pip。
创建并激活 Conda 环境(推荐)
为避免依赖冲突,强烈建议使用独立的 Conda 环境。
conda create -n memos python=3.11
conda activate memos
从 PyPI 安装 MemOS
安装 MemOS 及其全部可选组件:
pip install -U "MemoryOS[all]"
安装图数据库
Memos的记忆底层是通过图数据库进行存储的,在开源项目中,推荐使用Neo4j运行您的第一个项目。社区同时支持Neo4j企业版/社区版与PolarDB。
PC开发者的最快选择:Neo4j Desktop
如果您计划使用 Neo4j 作为图记忆,Neo4j Desktop可能是最方便的安装方式。
如果您计划使用 Neo4j 作为图记忆,Neo4j Desktop可能是最方便的安装方式。
创建 .env 配置文件
MemOS 的 server_api 依赖环境变量启动,因此需要在启动目录下创建 .env 文件。
- 新建 .env
touch .env
- 示例 .env 内容 .env详细配置请见env配置
有关详细的开发环境设置、工作流程指南和贡献最佳实践,请参阅我们的 贡献指南。
启动 MemOS Server
MemOS 不会自动加载 .env 文件,请使用 python-dotenv 方式启动。
python -m dotenv run -- \
uvicorn memos.api.server_api:app \
--host 0.0.0.0 \
--port 8000
启动成功后,你将看到类似输出:
INFO: Uvicorn running on http://0.0.0.0:8000
INFO: Application startup complete.
开始您的记忆操作吧
添加记忆(调用方式和从源码部署是一致哒,这次我们试试同步方式来添加记忆):
curl --location --request POST 'http://127.0.0.1:8000/product/add' \
--header 'Content-Type: application/json' \
--data-raw '{
"messages": [{
"role": "user",
"content": "我喜欢吃草莓"
}],
"user_id": "8736b16e-1d20-4163-980b-a5063c3facdc",
"writable_cube_ids":["b32d0977-435d-4828-a86f-4f47f8b55bca"],
"async_mode": "sync",
"mode": "fine"
}'
期望的输出
{
"code": 200,
"message": "Memory added successfully",
"data": [
{
"memory": "用户喜欢吃草莓。",
"memory_id": "d01a354e-e5f6-4e2a-bd89-c57ae",
"memory_type": "UserMemory",
"cube_id": "b32d0977-435d-4828-a86f-4f47f8b55bca"
}
]
}
检索记忆(调用方式和从源码部署是一致哒):
curl --location --request POST 'http://127.0.0.1:8000/product/search' \
--header 'Content-Type: application/json' \
--data-raw '{
"query": "我喜欢吃什么",
"user_id": "8736b16e-1d20-4163-980b-a5063c3facdc",
"readable_cube_ids": ["b32d0977-435d-4828-a86f-4f47f8b55bca"],
"top_k":20
}'
期望的输出
{
"code": 200,
"message": "Search completed successfully",
"data": {
"text_mem": [
{
"cube_id": "b32d0977-435d-4828-a86f-4f47f8b55bca",
"memories": [
{
"id": "f18cbe36-4cd9-456f-9b9f-6be89c35b2bf",
"memory": "用户喜欢吃草莓。",
"metadata": {
"user_id": "8736b16e-1d20-4163-980b-a5dc",
"session_id": "default_session",
"status": "activated",
"type": "fact",
"key": "草莓喜好",
"confidence": 0.99,
"source": null,
"tags": ["饮喜好", "草莓"],
"visibility": null,
"updated_at": "2025-12-26T20:35:08.178564000+00:00",
"info": null,
"covered_history": null,
"memory_type": "WorkingMemory",
"sources": [],
"embedding": [],
"created_at": "2025-12-26T20:35:08.177484000+00:00",
"usage": [],
"background": "用户表达了好,表明他们喜欢这种水果,可能在饮食选择中倾向于包含草莓。",
"file_ids": [],
"relativity": 0.0,
"ref_id": "[f18cbe36]"
},
"ref_id": "[f18cbe36]"
}
]
}
],
"act_mem": [],
"para_mem": [],
"pref_mem": [
{
"cube_id": "b32d0977-435d-4828-a86f-4f47f8b55bca",
"memories": []
}
],
"pref_note": "",
"tool_mem": [
{
"cube_id": "b32d0977-435d-4828-a86f-4f47f8b55bca",
"memories": []
}
],
"pref_string": ""
}
}
下载示例代码
恭喜您🎉已完成从pip安装MemOS,并跑通最小验证用例!您还可以基于以下命令下载示例代码,从而了解每个memos 内部模块的调用方式:
恭喜您🎉已完成从pip安装MemOS,并跑通最小验证用例!您还可以基于以下命令下载示例代码,从而了解每个memos 内部模块的调用方式:
memos download_examples