diff --git a/.env.example b/.env.example index 6ec9968..f3c4914 100644 --- a/.env.example +++ b/.env.example @@ -3,6 +3,7 @@ OPENAI_API_KEY=sk-your-openai-api-key-here OPENAI_COMPAT_API_KEY=sk-your-openai-compatible-api-key-here OPENAI_BASE_URL=https://your-openai-compatible-endpoint.com/v1 EMBEDDER_API_KEY=AIzaSy-your-google-gemini-api-key-here +COHERE_API_KEY=your-cohere-api-key-here # Database Configuration QDRANT_HOST=qdrant diff --git a/backend/config.py b/backend/config.py index 0c0ea8a..c18a071 100644 --- a/backend/config.py +++ b/backend/config.py @@ -12,7 +12,8 @@ class Settings(BaseSettings): # API Configuration openai_api_key: str = Field(..., env="OPENAI_COMPAT_API_KEY") openai_base_url: str = Field(..., env="OPENAI_COMPAT_BASE_URL") - embedder_api_key: str = Field(..., env="EMBEDDER_API_KEY") + + cohere_api_key: str = Field(..., env="COHERE_API_KEY") # ollama_base_url: str = Field(..., env="OLLAMA_BASE_URL") diff --git a/backend/mem0_manager.py b/backend/mem0_manager.py index c4f70b4..c5d21f3 100644 --- a/backend/mem0_manager.py +++ b/backend/mem0_manager.py @@ -2,6 +2,7 @@ import logging from typing import Dict, List, Optional, Any +from datetime import datetime from mem0 import Memory from openai import OpenAI @@ -19,6 +20,7 @@ class Mem0Manager: def __init__(self): # Custom endpoint configuration with graph memory enabled + logger.info("Initializing ultra-minimal Mem0Manager with custom endpoint with settings:", settings) config = { "enable_graph": True, "llm": { @@ -56,6 +58,14 @@ class Mem0Manager: "password": settings.neo4j_password } }, + "reranker": { + "provider": "cohere", + "config": { + "api_key": settings.cohere_api_key, + "model": "rerank-english-v3.0", + "top_n": 10 + } + } } self.memory = Memory.from_config(config) @@ -87,11 +97,24 @@ class Mem0Manager: else: formatted_messages.append(msg) - # Direct Mem0 add with metadata support + # Auto-enhance metadata for better memory quality combined_metadata = metadata or {} - result = self.memory.add(formatted_messages, user_id=user_id, + + # Add automatic metadata enhancement + auto_metadata = { + "timestamp": datetime.now().isoformat(), + "source": "chat_conversation", + "message_count": len(formatted_messages), + "auto_generated": True + } + + # Merge user metadata with auto metadata (user metadata takes precedence) + enhanced_metadata = {**auto_metadata, **combined_metadata} + + # Direct Mem0 add with enhanced metadata + result = self.memory.add(formatted_messages, user_id=user_id, agent_id=agent_id, run_id=run_id, - metadata=combined_metadata if combined_metadata else None) + metadata=enhanced_metadata) return { "added_memories": result if isinstance(result, list) else [result], diff --git a/docker-compose.yml b/docker-compose.yml index 5277352..89e3e0d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -53,6 +53,7 @@ services: 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 diff --git a/frontend/package.json b/frontend/package.json deleted file mode 100644 index 5c2b25c..0000000 --- a/frontend/package.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "mem0-interface-frontend", - "version": "1.0.0", - "description": "React frontend for Mem0 Interface POC", - "main": "src/index.js", - "scripts": { - "start": "react-scripts start", - "build": "react-scripts build", - "test": "react-scripts test", - "eject": "react-scripts eject" - }, - "dependencies": { - "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-scripts": "5.0.1", - "axios": "^1.6.0", - "react-router-dom": "^6.8.0", - "@mui/material": "^5.14.0", - "@mui/icons-material": "^5.14.0", - "@emotion/react": "^11.11.0", - "@emotion/styled": "^11.11.0", - "recharts": "^2.8.0", - "react-json-view": "^1.21.3" - }, - "eslintConfig": { - "extends": [ - "react-app", - "react-app/jest" - ] - }, - "browserslist": { - "production": [ - ">0.2%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] - }, - "proxy": "http://localhost:8000" -} \ No newline at end of file