docs: add comprehensive memory solutions research

- Research 8 different memory solutions (mem0, LangChain, LlamaIndex, etc.)
- Document 5 levels of AI memory
- Explain why mem0 was abandoned (5-10s latency)
- Current state: manual snippets via OpenWebUI
- Future technologies: MemGPT, memory-augmented LLMs, knowledge graphs
- Recommendations for Effi short/mid/long term
This commit is contained in:
Folzo
2026-04-08 21:57:23 +02:00
parent 430c56a9f4
commit 0fad1d7249
2 changed files with 359 additions and 0 deletions
+8
View File
@@ -11,6 +11,9 @@ Documentation technique pour les composants audio (TTS/STT) et l'optimisation GP
### GPU ### GPU
- [GPU Optimization](gpu/optimization.md) - Optimisation VRAM et Ollama - [GPU Optimization](gpu/optimization.md) - Optimisation VRAM et Ollama
### Memory
- [Memory Research](memory-research.md) - Comparatif des solutions de mémoire IA locales
--- ---
## 🗺️ Architecture Audio Actuelle ## 🗺️ Architecture Audio Actuelle
@@ -87,6 +90,11 @@ Documentation technique pour les composants audio (TTS/STT) et l'optimisation GP
1. **Beszel** - Surveillance CPU/RAM/GPU 1. **Beszel** - Surveillance CPU/RAM/GPU
2. **Dozzle** - Logs Docker temps réel 2. **Dozzle** - Logs Docker temps réel
### Memory (Mémoire IA)
1. **État actuel**: Mémoire manuelle via snippets OpenWebUI
2. **Mem0 abandonné**: Trop lent (5-10s/requête)
3. **Futur**: Améliorer RAG avec Qdrant, surveiller MemGPT
--- ---
## 🔗 Liens Utiles ## 🔗 Liens Utiles
+351
View File
@@ -0,0 +1,351 @@
# Recherche : Solutions de Mémoire pour IA Locale
> **Date**: Avril 2026
> **Contexte**: Projet Effi - Assistant IA Personnel Self-Hosted
> **Historique**: mem0 abandonné (trop lent), mémoire manuelle via snippets retenu
---
## Table des Matières
1. [Contexte et Besoins](#contexte-et-besoins)
2. [Niveaux de Mémoire IA](#niveaux-de-mémoire-ia)
3. [Solutions Actuelles](#solutions-actuelles)
4. [Comparatif Détaillé](#comparatif-détaillé)
5. [Intégration OpenWebUI](#intégration-openwebui)
6. [Innovations et Futur](#innovations-et-futur)
7. [Recommandations pour Effi](#recommandations-pour-eff)
---
## Contexte et Besoins
### Mémoire Actuelle Effi
- **Type**: Mémoire manuelle via snippets OpenWebUI
- **Avantages**: Rapide, prévisible, simple
- **Inconvénients**: Nécessite intervention manuelle, pas automatique
### Besoins Identifiés
1. **Mémoire court terme**: Conversation actuelle (context window)
2. **Mémoire long terme**: Informations persistantes entre sessions
3. **Mémoire sémantique**: Recherche dans les documents
4. **Mémoire épisodique**: Faits importants sur l'utilisateur
---
## Niveaux de Mémoire IA
### Niveau 1 : Context Window (Mémoire Court Terme)
- **Description**: Fenêtre de contexte du modèle (32K pour qwen3.5)
- **Durée**: Session actuelle uniquement
- **Technologie**: Native au LLM
### Niveau 2 : Mémoire de Travail (Working Memory)
- **Description**: Informations actives pendant une conversation
- **Durée**: Conversation en cours
- **Technologie**: RAG, snippets contextuels
### Niveau 3 : Mémoire Long Terme (Long Term Memory)
- **Description**: Informations persistantes entre sessions
- **Durée**: Jours, semaines, mois
- **Technologie**: Vector DB, graphe de connaissances
### Niveau 4 : Mémoire Épisodique
- **Description**: Faits importants sur l'utilisateur
- **Durée**: Permanente
- **Technologie**: KG, mem0, personnal knowledge graphs
### Niveau 5 : Mémoire Procédurale
- **Description**: Comment faire les choses, préférences
- **Durée**: Apprentissage continu
- **Technologie**: LoRA, fine-tuning
---
## Solutions Actuelles
### 1. OpenWebUI Memories (Natif) ⭐ ACTUEL
**Description**: Système de snippets intégré à OpenWebUI
**Avantages**:
- ✅ Intégré nativement
- ✅ Simple et rapide
- ✅ Pas de latence supplémentaire
- ✅ Fonctionne avec Ollama
**Inconvénients**:
- ❌ Manuel (snippets à créer)
- ❌ Pas de mémorisation automatique
- ❌ Limité en capacité
**Utilisation**:
- `/memory` - Ajouter des souvenirs
- Snippets dans le contexte
---
### 2. Mem0 (Abandonné par Effi)
**Description**: Couche de mémoire gestion pour LLM, utilisant Qdrant
**Statut**: ❌ ABANDONNÉ
- Latence 5-10s par requête
- Complexité d'installation
- Bugs de parsing avec Ollama
**Architecture**:
```
User Message → Mem0 → Qdrant → Contexte enrichi → LLM
```
---
### 3. LangChain Memory
**Description**: Framework Python avec plusieurs types de mémoire
**Types de mémoire**:
- ConversationBufferMemory
- ConversationSummaryMemory
- VectorStoreRetrievedMemory
- EntityMemory
**Avantages**:
- ✅ Flexible
- ✅ Multiple backends (Redis, PostgreSQL, etc.)
- ✅ Bien documenté
**Inconvénients**:
- ❌ Complexe
- ❌ Nécessite hébergement supplémentaire
- ❌ Latence variable
---
### 4. LlamaIndex Memory
**Description**: Framework RAG avec mémoire conversationnelle
**Avantages**:
- ✅ Excellent pour RAG
- ✅ Memory over RAG
- ✅ Queries structurées
**Inconvénients**:
- ❌ Python only
- ❌ Complexe pour usage simple
---
### 5. Qdrant (RAG Sémantique) ⭐ UTILISÉ
**Description**: Vector database pour recherche sémantique
**Utilisation actuelle Effi**:
- Stockage des documents
- Recherche sémantique via bge-m3
- RAG sur documents
**Configuration**:
```yaml
VECTOR_DB: qdrant
QDRANT_URI: http://192.168.1.27:6333
```
---
### 6. Personal Knowledge Graphs (PKG)
**Description**: Graphe de connaissances personnel
**Outils**:
- **Mem**: https://mem.ai (cloud)
- **Nexus**: https://nexus.minddrop.net (fermé)
- **Corallium**: Alternative open-source
**Avantages**:
- ✅ Mémoire automatique
- ✅ Connections sémantiques
- ✅ Apprentissage continu
**Inconvénients**:
- ❌多为 cloud
- ❌ Pas de solution self-hosted mature
---
### 7. OpenWebUI Pipelines + Custom Memory
**Description**: Framework de plugins pour OpenWebUI
**Possibilités**:
- Custom memory pipeline
- Intégration avec Qdrant
- Personnalisation complète
**Statut**: ❌ SUPPRIMÉ (trop complexe)
---
### 8. Beeegf (Mémoire Distribuée)
**Description**: Système de mémoire distribué pour agents
**Avantages**:
- ✅ Pour agents multiples
- ✅ Mémoire partagée
- ✅ Open-source
**Inconvénients**:
- ❌ Expérimental
- ❌ Documentation limitée
---
## Comparatif Détaillé
| Solution | Type | Latence | Complexité | Self-Hosted | État |
|----------|------|---------|------------|-------------|------|
| OpenWebUI Snippets | Manuel | ~0ms | Très basse | ✅ | ⭐ Actuel |
| Mem0 | Auto | 5-10s | Haute | ✅ | ❌ Abandonné |
| LangChain Memory | Hybrid | Variable | Haute | ✅ | ⚠️ Complexe |
| LlamaIndex | RAG | <1s | Moyenne | ✅ | ⚠️ Python |
| Qdrant (RAG) | Semantic | <1s | Basse | ✅ | ⭐ Actif |
| Knowledge Graph | Auto | <2s | Moyenne | ⚠️ | 🔬 Émergent |
| Ollama Context | Court | 0ms | Aucune | ✅ | ⭐ Actif |
---
## Intégration OpenWebUI
### Configuration Actuelle
```yaml
# OpenWebUI Settings
ENABLE_MEMORIES: true
# Mémoire = Snippets manuels
# RAG = Qdrant (documents)
```
### Options d'Amélioration
#### Option A : Améliorer Mémoire Manuelle
- Snippets plus structurés
- Prompts enrichis
- Routines de consolidation
#### Option B : RAG Amélioré
- Indexation automatique des documents
- Métadonnées enrichies
- Retrieval optimisé
#### Option C : Graph Memory (Future)
- Intégration knowledge graph
- Mémoire épisodique
- Apprentissage passif
---
## Innovations et Futur
### 1. Memory-Augmented LLMs
**Technologies émergentes**:
- **Memento**: Mémoire externalisée pour LLM
- **Atlas**: Mémoire neurale sur NCEN
- **MemGPT**: Extensions de contexte pour LLMs
**Principe**:
```
LLM ←→ Memory Controller ←→ External Memory
```
### 2. Continual Learning
**Défi**: Apprendre sans oublier
**Approches**:
- LoRA adaptatif
- Elastic Weight Consolidation
- Progressive Neural Networks
### 3. Retrieval-Augmented Generation (RAG) 2.0
**Innovations**:
- RAG sur mémoire conversationnelle
- Self-RAG (auto-évaluation)
- Corrective RAG
### 4. Knowledge Graphs 2.0
**Évolutions**:
- Graphe de mémoire personnel
- Extraction automatique de faits
- Reasoning sur le graphe
### 5. Agents avec Mémoire
**Architectures**:
- Multi-agents avec mémoire partagée
- Hive mind pour tâches complexes
- Mémoire épisodique pour agents
---
## Recommandations pour Effi
### Court Terme (Maintenant)
1. **Garder mémoire manuelle** via snippets
2. **Optimiser RAG** avec Qdrant existant
3. **Structurer les prompts** pour meilleure rétention
### Moyen Terme (3-6 mois)
1. **Tester LlamaIndex** pour mémoire conversationnelle
2. **Expérimenter avec knowledge graphs** (Obsidian + plugins)
3. **Automatiser l'indexation** des documents
### Long Terme (6-12 mois)
1. **Surveiller Mem0** (peut s'améliorer)
2. **Explorer MemGPT** pour extensions de contexte
3. **Intégrer knowledge graph** personnel
### Non Recommandé
- ❌ Retour à mem0 (trop de problèmes)
- ❌ LangChain (complexité inutile)
- ❌ Solutions cloud (vie privée)
---
## Sources et Références
### Documentation
- [Mem0 Documentation](https://docs.mem0.ai)
- [LangChain Memory](https://python.langchain.com/docs/concepts/memory)
- [LlamaIndex Memory](https://docs.llamaindex.ai/en/stable/module_guides/models/llms/cookbook/memory/)
- [OpenWebUI Memories](https://docs.openwebui.com/features/chat-conversations/memory)
- [Qdrant Documentation](https://qdrant.tech/documentation/)
### Articles
- [Memory-Augmented Language Models (Stanford)](https://arxiv.org/abs/2210.14278)
- [MemGPT: Towards LLMs as Operating Systems](https://arxiv.org/abs/2312.04730)
- [RAG vs Fine-tuning vs Memories](https://www.promptlayer.com/blog/rag-vs-fine-tuning-vs-memories)
### Projets
- [Mem0](https://github.com/mem0ai/mem0)
- [LangChain](https://github.com/langchain-ai/langchain)
- [LlamaIndex](https://github.com/run-llama/llama_index)
- [MemGPT](https://github.com/MemGPT/MemGPT)
---
## Conclusion
La mémoire pour IA locale est un **problème non résolu** de manière satisfaisante. Les solutions automatiques comme mem0 ajoutent trop de latence. La solution manuelle via snippets reste le **sweet spot** entre fonctionnalité et performance.
**Pour Effi**: Garder l'approche actuelle et améliorer progressivement le RAG et les prompts plutôt que d'ajouter une couche de mémoire complexe.
---
*Document créé: Avril 2026*
*Dernière mise à jour: Avril 2026*