# Mem0 常见问题 ## Q: Mem0 和 OpenMemory 是什么关系? A: OpenMemory 是 `mem0ai/mem0` 仓库下的一个子目录,不是独立项目。OpenMemory 使用 Qdrant 作为唯一存储后端,已被官方废弃(sunset),建议使用 `server/` 目录。 ## Q: 为什么需要 TEI 和 Qdrant 两个东西? A: 它们是完全不同的组件,分工合作: - **TEI**:把文本转换成向量(理解语义) - **Qdrant**:存储向量 + 搜索相似向量 类比:TEI 是翻译软件,Qdrant 是图书馆。两者缺一不可,但互相不知道对方存在,全靠 Mem0 Server 协调。 ## Q: Neo4j 是必须的吗? A: 不是。大部分场景不需要 Neo4j: - 普通语义搜索:Qdrant 足够 - 关系推理(如"我老婆的表哥的同事"):需要 Neo4j 建议先不加,只部署 Qdrant + PostgreSQL,跑起来后再按需扩展。 ## Q: 写入和读取记忆需要多少次请求? A: - **写入**:2次(TEI生成向量 → Qdrant存储) - **读取/搜索**:3次(TEI生成查询向量 → Qdrant搜索 → LLM生成回答) ## Q: 中国网络环境下如何部署? A: 主要问题: 1. 无法从 Docker Hub 拉镜像 → 提前下载导入或使用国内镜像 2. 无法访问 GitHub → 使用 gitea 托管代码 ## Q: Self-host 需要哪些环境变量? A: 核心变量: ```bash # 数据库 POSTGRES_HOST= POSTGRES_PORT=5432 POSTGRES_DB= POSTGRES_USER= POSTGRES_PASSWORD= # 向量库 QDRANT_HOST= QDRANT_PORT=6333 # Embedder EMBEDDER_PROVIDER=tei TEI_ENDPOINT= # LLM LLM_PROVIDER= OPENAI_API_KEY= # Auth JWT_SECRET= ADMIN_API_KEY= AUTH_DISABLED=false ``` ## Q: Mem0 有官方 K8s 部署吗? A: 没有官方 Helm Chart 或 K8s YAML。需要自行转换 docker-compose.yaml 为 K8s 资源,或使用社区方案。 ## Q: TEI 是否需要知道 Qdrant? A: 不需要。TEI 只做向量生成(文本→向量),不存储任何数据,不与 Qdrant 通信。 ## Q: 为什么你的 mem0 代码 clone 这么慢? A: 可能网络问题。可以尝试: - 使用断点续传:`curl -C - -L -o file.tar.gz URL` - 使用国内镜像或代理 - 通过 Gitea 等国内 Git 服务托管 ## Q: Swagger UI 可以随意注册用户,生产环境安全吗? A: Mem0 注册接口有防重复机制——同一邮箱只能注册一次。首次部署时通过 Swagger UI 注册第一个用户后,生产环境建议: - 通过 Ingress 网关屏蔽 `/docs` 路径,禁止外部访问 Swagger UI - 或在 Ingress 层限制 `/docs` 只允许内网 IP 访问