中文
检索记忆
基于 mem0 的跨会话检索增强记忆,自动搜索和写入对话记忆
检索记忆
ResearchX 集成了 mem0 检索增强记忆系统。启用后,系统会在每次对话轮次中自动搜索历史记忆并注入相关上下文,同时在对话完成后自动写入新记忆,实现跨会话的知识积累与复用。
工作原理
- 搜索记忆:在每次对话轮次开始前,系统根据当前用户消息搜索相关的历史记忆,并将检索结果作为 "Retrieved Memory" 附加到系统提示中
- 写入记忆:在对话轮次完成后,系统以异步方式将用户/助手消息对写入记忆库,不影响对话流畅性
- 项目隔离:记忆按项目维度隔离,每个项目拥有独立的记忆存储空间
管理员配置
入口:管理 → 检索记忆(/workspace/admin/retrieval-memory)
全局开关
| 设置项 | 说明 | 默认值 |
|---|---|---|
| 启用检索记忆 | 全局开启或关闭检索记忆功能 | 关闭 |
| Top K | 每次查询检索的记忆条数 | 3 |
嵌入模型配置
系统支持两种嵌入模型提供商:
OpenAI
- 使用
text-embedding-3-small模型(默认) - 需要配置有效的 OpenAI API Key
- 可通过系统 API Key 或自定义 Key 调用
Ollama(自托管)
- 需要提供 Ollama 服务 Base URL
- 需要指定嵌入维度(Embedding Dimensions)
- 适合本地部署或内网环境
连接测试
管理员可以在配置页面点击测试按钮,验证嵌入模型服务是否可达并正常工作。
项目级控制
每个项目可以独立控制是否启用检索记忆:
- 在项目设置中可以切换
项目记忆开关 - 新项目默认关闭,即使管理员已全局启用检索记忆
- 项目级关闭后,该项目的记忆搜索和写入都会暂停
项目级记忆管理的更多说明参见 项目管理 — 项目记忆。
存储说明
- 记忆数据默认存储在
./data/mem0/目录下 - 可通过环境变量
MEM0_VECTOR_DB_PATH和MEM0_HISTORY_DB_PATH自定义存储路径 - 默认通过
MEM0_TELEMETRY=false关闭 mem0 上游遥测 - 向量数据库和记忆历史数据库分开存储
- 客户端实例按配置哈希缓存,避免重复初始化
Docker Compose 部署说明
scripts/deploy.sh与docker/docker-compose.server.yml默认会将 mem0 数据持久化到宿主机${DATA_DIR}/mem0- 容器内对应路径固定为
/data/mem0 - 应用通过以下环境变量读写 mem0 数据:
MEM0_VECTOR_DB_PATH=/data/mem0/vector_store.dbMEM0_HISTORY_DB_PATH=/data/mem0/memory.dbMEM0_TELEMETRY=false
- 这样可以避免容器直接写入镜像内默认的
/app/data/mem0并触发权限错误 - 如果是从旧版本 compose 配置升级,需要重建
app容器,让新的卷挂载和环境变量生效
典型使用场景
场景 1:长期研究项目
- 管理员在全局设置中启用检索记忆并配置嵌入模型
- 在长期研究项目中,Agent 会自动记住之前的分析结论、数据处理方式等
- 新会话中可以直接引用历史记忆,无需重复说明背景
场景 2:团队协作项目
- 团队成员在不同会话中与 Agent 交互
- 系统会积累项目相关的偏好和约定
- 后续成员的对话可以受益于之前的交互记忆
注意事项
- 记忆写入为异步操作(fire-and-forget),不会阻塞对话响应
- 记忆按项目隔离,不同项目之间不会交叉检索
- 嵌入模型配置变更后,需要重新生成记忆向量才能生效
- 如果全局关闭检索记忆,所有项目的记忆功能都会暂停
- 在 Docker Compose 部署中,若测试 Ollama embedding 时出现
EACCES: permission denied, mkdir '/app/data/mem0',通常表示当前容器仍在使用旧的 mem0 路径配置,需按上面的部署说明切换到/data/mem0