fix: sentence_transformers import error workaround

This commit is contained in:
hermes-bot
2026-06-01 15:37:47 +00:00
parent 893839c7a8
commit ed054da5d8

View File

@@ -238,6 +238,59 @@ volumes:
emptyDir: {} 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 mem0 未为 K8s 做适配,无健康检查端点。手动测试核心 API