中文EN
ResearchX Docs
中文

检索记忆

基于 mem0 的跨会话检索增强记忆,自动搜索和写入对话记忆

检索记忆

ResearchX 集成了 mem0 检索增强记忆系统。启用后,系统会在每次对话轮次中自动搜索历史记忆并注入相关上下文,同时在对话完成后自动写入新记忆,实现跨会话的知识积累与复用。

工作原理

  1. 搜索记忆:在每次对话轮次开始前,系统根据当前用户消息搜索相关的历史记忆,并将检索结果作为 "Retrieved Memory" 附加到系统提示中
  2. 写入记忆:在对话轮次完成后,系统以异步方式将用户/助手消息对写入记忆库,不影响对话流畅性
  3. 项目隔离:记忆按项目维度隔离,每个项目拥有独立的记忆存储空间

管理员配置

入口:管理 → 检索记忆/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_PATHMEM0_HISTORY_DB_PATH 自定义存储路径
  • 默认通过 MEM0_TELEMETRY=false 关闭 mem0 上游遥测
  • 向量数据库和记忆历史数据库分开存储
  • 客户端实例按配置哈希缓存,避免重复初始化

Docker Compose 部署说明

  • scripts/deploy.shdocker/docker-compose.server.yml 默认会将 mem0 数据持久化到宿主机 ${DATA_DIR}/mem0
  • 容器内对应路径固定为 /data/mem0
  • 应用通过以下环境变量读写 mem0 数据:
    • MEM0_VECTOR_DB_PATH=/data/mem0/vector_store.db
    • MEM0_HISTORY_DB_PATH=/data/mem0/memory.db
    • MEM0_TELEMETRY=false
  • 这样可以避免容器直接写入镜像内默认的 /app/data/mem0 并触发权限错误
  • 如果是从旧版本 compose 配置升级,需要重建 app 容器,让新的卷挂载和环境变量生效

典型使用场景

场景 1:长期研究项目

  1. 管理员在全局设置中启用检索记忆并配置嵌入模型
  2. 在长期研究项目中,Agent 会自动记住之前的分析结论、数据处理方式等
  3. 新会话中可以直接引用历史记忆,无需重复说明背景

场景 2:团队协作项目

  1. 团队成员在不同会话中与 Agent 交互
  2. 系统会积累项目相关的偏好和约定
  3. 后续成员的对话可以受益于之前的交互记忆

注意事项

  • 记忆写入为异步操作(fire-and-forget),不会阻塞对话响应
  • 记忆按项目隔离,不同项目之间不会交叉检索
  • 嵌入模型配置变更后,需要重新生成记忆向量才能生效
  • 如果全局关闭检索记忆,所有项目的记忆功能都会暂停
  • 在 Docker Compose 部署中,若测试 Ollama embedding 时出现 EACCES: permission denied, mkdir '/app/data/mem0',通常表示当前容器仍在使用旧的 mem0 路径配置,需按上面的部署说明切换到 /data/mem0

相关文档