From ed054da5d8f539216272ab012d32f4b5dfa1cc6f Mon Sep 17 00:00:00 2001 From: hermes-bot Date: Mon, 1 Jun 2026 15:37:47 +0000 Subject: [PATCH] fix: sentence_transformers import error workaround --- AI/mem0/deploy.md | 53 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/AI/mem0/deploy.md b/AI/mem0/deploy.md index de38cd9..067e2c8 100644 --- a/AI/mem0/deploy.md +++ b/AI/mem0/deploy.md @@ -238,6 +238,59 @@ volumes: emptyDir: {} ``` +## Dashboard 部署 + +mem0 dashboard 是 Next.js 应用,需要单独部署。 + +### 环境变量 + +```yaml +NEXT_PUBLIC_API_URL=http://mem0.tei.svc.cluster.local:8000 # 浏览器调用(通过 Ingress) +API_INTERNAL_URL=http://mem0.tei.svc.cluster.local:8000 # 服务端内部调用(K8s 内部直连) +NEXT_PUBLIC_INSTANCE_NAME=Mem0 +``` + +**`API_INTERNAL_URL`**:K8s 内部服务间通信,直接使用 Service DNS,不需要暴露到外部。浏览器无法解析 `mem0.tei.svc.cluster.local`,所以前端用 `NEXT_PUBLIC_API_URL` 通过 Ingress 访问。 + +两者可以相同,但分离部署时: +- `NEXT_PUBLIC_API_URL` = 对外域名(Ingress) +- `API_INTERNAL_URL` = 集群内部 `mem0.tei.svc.cluster.local:8000` + +### CORS 配置 + +mem0 server 使用 CORSMiddleware,需要通过环境变量配置允许的来源: + +```yaml +DASHBOARD_URL=https://mem0.your-domain.com # dashboard 的外部访问地址 +``` + +mem0 server 启动时读取 `DASHBOARD_URL`,设置 `allow_origins=[DASHBOARD_URL]`。 + +**常见问题**: +- 浏览器访问 dashboard 登录页时,返回 `400 Bad Request` +- OPTIONS 预检请求失败,因为 `allow_origins` 为空 +- Swagger 能正常登录(同域请求,无 CORS 问题) + +确保 `DASHBOARD_URL` 设为 dashboard 的外部访问地址(与 `NEXT_PUBLIC_API_URL` 的域名部分一致)。 + +### sentence_transformers 导入错误 + +mem0 的 `huggingface.py` 在文件顶部执行 `from sentence_transformers import SentenceTransformer`,即使走 `huggingface_base_url` 路径(用 OpenAI 客户端调用 TEI,不需要本地模型)也会尝试加载,造成 `ModuleNotFoundError`。 + +**临时修复**(容器内,重启会丢): + +```bash +sed -i 's/from sentence_transformers import SentenceTransformer/# from sentence_transformers import SentenceTransformer/' /usr/local/lib/python3.12/site-packages/mem0/embeddings/huggingface.py +``` + +验证: + +```bash +python3 -c "from mem0.embeddings.huggingface import HuggingFaceEmbedding" +``` + +**永久修复**:在 Dockerfile 里加这步,或修改本地 mem0 源码后 COPY 进容器。 + ## 功能测试 mem0 未为 K8s 做适配,无健康检查端点。手动测试核心 API: