Files
knowledge-base/AI/mem0/deploy.md
2026-05-31 02:30:42 +00:00

6.5 KiB
Raw Blame History

mem0 自托管部署

镜像

ccr.ccs.tencentyun.com/tei_agent/mem0:latest

依赖服务tei namespace

服务 地址 用途
PostgreSQL 192.168.3.49:5432 关系数据存储
Qdrant qdrant:6333 向量存储
TEI (BGE-M3) tei:8080 Embedder文本→向量

环境变量

ConfigMap (mem0-env)

变量 说明
DATABASE_URL postgres://gitlab:gitlab@192.168.3.49:5432/mem0 连接字串
APP_DB_NAME mem0_app 数据库名
QDRANT_HOST qdrant Qdrant 服务地址
QDRANT_PORT 6333 Qdrant 端口
QDRANT_COLLECTION_NAME mem0 集合名
EMBEDDER_PROVIDER tei Embedder 使用 TEI
TEI_ENDPOINT http://tei:8080 TEI endpoint
LLM_PROVIDER openai LLM providerMiniMax 兼容 OpenAI 格式)
OPENAI_API_KEY YOUR_MINIMAX_KEY MiniMax API key
OPENAI_BASE_URL https://api.minimax.chat/v1 MiniMax API 地址
AUTH_DISABLED false 启用认证
MEM0_TELEMETRY false 关闭遥测
REQUEST_LOG_RETENTION_DAYS 30 日志保留天数

Secret (mem0-secrets)

变量 说明
JWT_SECRET JWT 签名密钥
ADMIN_API_KEY 管理后台 API key
POSTGRES_PASSWORD PostgreSQL 密码

部署清单

apiVersion: v1
kind: ConfigMap
metadata:
  name: mem0-env
  namespace: tei
data:
  DATABASE_URL: "postgres://gitlab:gitlab@192.168.3.49:5432/mem0"
  APP_DB_NAME: "mem0_app"
  QDRANT_HOST: "qdrant"
  QDRANT_PORT: "6333"
  QDRANT_COLLECTION_NAME: "mem0"
  EMBEDDER_PROVIDER: "tei"
  TEI_ENDPOINT: "http://tei:8080"
  LLM_PROVIDER: "openai"
  OPENAI_API_KEY: "YOUR_MINIMAX_KEY"
  OPENAI_BASE_URL: "https://api.minimax.chat/v1"
  AUTH_DISABLED: "false"
  MEM0_TELEMETRY: "false"
  REQUEST_LOG_RETENTION_DAYS: "30"
---
apiVersion: v1
kind: Secret
metadata:
  name: mem0-secrets
  namespace: tei
type: Opaque
stringData:
  JWT_SECRET: "your-jwt-secret-change-me"
  ADMIN_API_KEY: "your-admin-key-change-me"
  POSTGRES_PASSWORD: "gitlab"
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mem0
  namespace: tei
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mem0
  template:
    metadata:
      labels:
        app: mem0
    spec:
      containers:
        - name: mem0
          image: ccr.ccs.tencentyun.com/tei_agent/mem0:latest
          ports:
            - containerPort: 8000
              name: http
          envFrom:
            - configMapRef:
                name: mem0-env
            - secretRef:
                name: mem0-secrets
          livenessProbe:
            httpGet:
              path: /health
              port: 8000
            initialDelaySeconds: 30
            periodSeconds: 10
          readinessProbe:
            httpGet:
              path: /health
              port: 8000
            initialDelaySeconds: 10
            periodSeconds: 5
          resources:
            limits:
              cpu: "2"
              memory: "4Gi"
            requests:
              cpu: "500m"
              memory: "1Gi"
---
apiVersion: v1
kind: Service
metadata:
  name: mem0
  namespace: tei
spec:
  ports:
    - port: 8000
      name: http
  selector:
    app: mem0

History PVCSQLite 持久化)

mem0 的对话历史history默认存在 SQLite必须用 PVC 持久化emptyDir 重启丢失)。

前置:创建 PVC

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mem0-history
  namespace: tei
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: standard  # 根据你的 StorageClass 调整

环境变量追加

变量 说明
HISTORY_DB_PATH /app/data/mem0_history.db SQLite 数据库路径

PVC + 完整 Deployment

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mem0-history
  namespace: tei
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: standard
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: mem0-env
  namespace: tei
data:
  DATABASE_URL: "postgres://gitlab:***@192.168.3.49:5432/mem0"
  APP_DB_NAME: "mem0_app"
  QDRANT_HOST: "qdrant"
  QDRANT_PORT: "6333"
  QDRANT_COLLECTION_NAME: "mem0"
  EMBEDDER_PROVIDER: "tei"
  TEI_ENDPOINT: "http://tei:8080"
  LLM_PROVIDER: "openai"
  OPENAI_API_KEY: "YOUR_MINIMAX_KEY"
  OPENAI_BASE_URL: "https://api.minimax.chat/v1"
  AUTH_DISABLED: "false"
  MEM0_TELEMETRY: "false"
  REQUEST_LOG_RETENTION_DAYS: "30"
  HISTORY_DB_PATH: "/app/data/mem0_history.db"
---
apiVersion: v1
kind: Secret
metadata:
  name: mem0-secrets
  namespace: tei
type: Opaque
stringData:
  JWT_SECRET: "your-jwt-secret-change-me"
  ADMIN_API_KEY: "your-admin-key-change-me"
  POSTGRES_PASSWORD: "gitlab"
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mem0
  namespace: tei
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mem0
  template:
    metadata:
      labels:
        app: mem0
    spec:
      containers:
        - name: mem0
          image: ccr.ccs.tencentyun.com/tei_agent/mem0:latest
          ports:
            - containerPort: 8000
              name: http
          envFrom:
            - configMapRef:
                name: mem0-env
            - secretRef:
                name: mem0-secrets
          volumeMounts:
            - name: mem0-history
              mountPath: /app/data
          livenessProbe:
            httpGet:
              path: /health
              port: 8000
            initialDelaySeconds: 30
            periodSeconds: 10
          readinessProbe:
            httpGet:
              path: /health
              port: 8000
            initialDelaySeconds: 10
            periodSeconds: 5
          resources:
            limits:
              cpu: "2"
              memory: "4Gi"
            requests:
              cpu: "500m"
              memory: "1Gi"
      volumes:
        - name: mem0-history
          persistentVolumeClaim:
            claimName: mem0-history
---
apiVersion: v1
kind: Service
metadata:
  name: mem0
  namespace: tei
spec:
  ports:
    - port: 8000
      name: http
  selector:
    app: mem0

前置要求

  1. pgvector 扩展 — PostgreSQL 需要安装 pgvector
  2. mem0_app 数据库 — 需要提前创建
  3. Qdrant collection — mem0 启动时自动创建(首次调用时)
  4. mem0-history PVC — 必须提前创建

验证

kubectl get pvc -n tei mem0-history
kubectl get pods -n tei -l app=mem0
kubectl logs -n tei -l app=mem0 --tail=50

# 健康检查
curl http://mem0:8000/health