knowledge-base/docker-compose.yml
Pratik Narola 0f0addb36b chore: migrate to mem0ai v2.0.2 (V3 memory pipeline)
Pin mem0ai[nlp]==2.0.2 and fastembed for the new hybrid-search pipeline.
Drop OSS graph memory (removed upstream in 2.0.0, PR #4805): remove Neo4j
service, env vars, volumes, and driver deps; mark /graph/relationships
deprecated. Rewrite Memory.search/get_all/chat/health call sites to use
the v2 filters={} + top_k API (entity IDs at top level now raise
ValueError). Tighten MCP remove_memory ownership check to O(1)
verify_memory_ownership so it doesn't silently truncate at the new
top_k=20 default. Downgrade base image to python:3.12-slim for spaCy.

Adds scripts/migrate_qdrant_to_v3.py (scroll+upsert with per-user count
parity check) and docs/MIGRATION_RUNBOOK.md covering snapshot, dump,
collection rebuild, cutover, and rollback procedures.
2026-05-23 14:49:45 +05:30

62 lines
1.7 KiB
YAML

services:
# Qdrant vector database for vector + sparse (BM25) storage
qdrant:
image: qdrant/qdrant:v1.12.4
container_name: mem0-qdrant
expose:
- "6333"
networks:
- mem0_network
volumes:
- qdrant_data:/qdrant/storage
command: >
sh -c "apt-get update && apt-get install -y curl && ./entrypoint.sh"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:6333/"]
interval: 10s
timeout: 5s
retries: 5
restart: unless-stopped
# Backend API service
backend:
build:
context: ./backend
dockerfile: Dockerfile
container_name: mem0-backend
environment:
OPENAI_API_KEY: ${OPENAI_COMPAT_API_KEY}
OPENAI_BASE_URL: ${OPENAI_COMPAT_BASE_URL}
COHERE_API_KEY: ${COHERE_API_KEY}
EMBEDDER_API_KEY: ${EMBEDDER_API_KEY:-AIzaSyA_}
QDRANT_HOST: qdrant
QDRANT_PORT: 6333
QDRANT_COLLECTION_NAME: ${QDRANT_COLLECTION_NAME:-mem0}
LOG_LEVEL: ${LOG_LEVEL:-INFO}
CORS_ORIGINS: ${CORS_ORIGINS:-http://localhost:3000}
DEFAULT_MODEL: ${DEFAULT_MODEL:-claude-sonnet-4}
API_KEYS: ${API_KEYS:-{}}
OLLAMA_BASE_URL: ${OLLAMA_BASE_URL:-http://host.docker.internal:11434}
EMBEDDING_MODEL: ${EMBEDDING_MODEL:-nomic-embed-text}
EMBEDDING_DIMS: ${EMBEDDING_DIMS:-2560}
expose:
- "8000"
networks:
- npm_network
- mem0_network
depends_on:
qdrant:
condition: service_healthy
restart: unless-stopped
volumes:
- ./backend:/app
- ./frontend:/app/frontend
command: ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000", "--workers", "4"]
volumes:
qdrant_data:
networks:
mem0_network:
npm_network:
external: true