Embeddings Learnings — Recherche sémantique via Ollama + FAISS¶
Vue d'ensemble¶
Ce système permet la recherche sémantique dans les 93+ learnings (REX, écarts, patterns) via : - Ollama local (nomic-embed-text) pour les embeddings (768 dimensions) - FAISS pour l'indexation k-NN (vector store local) - Skill /learnings pour l'interrogation interactive
Architecture¶
data/learnings.jsonl (source de vérité, 93 entrées)
↓
scripts/index-learnings.py (génération embeddings Ollama + index FAISS)
↓
data/
├── learnings-embeddings.npy # Vecteurs NumPy (93×768)
├── learnings-index.faiss # Index FAISS k-NN
├── learnings-cache.json # Learnings structurés (pour recherche)
└── embeddings-meta.json # Métadonnées (count, model, date)
↓
scripts/search-learnings.py (recherche sémantique)
↓
.claude/commands/learnings.md (skill /learnings)
Installation¶
1. Dépendances Python¶
2. Ollama et modèle nomic-embed-text¶
# Vérifier qu'Ollama est installé
which ollama
# Télécharger le modèle nomic-embed-text (~274 MB)
ollama pull nomic-embed-text
3. Indexation initiale¶
Sortie attendue :
📖 Chargement learnings.jsonl...
93 learnings chargés
🤖 Génération embeddings Ollama (nomic-embed-text)...
10/93 embeddings générés...
20/93 embeddings générés...
...
90/93 embeddings générés...
🔍 Construction index FAISS...
💾 Sauvegarde...
✅ Indexation terminée
Embeddings : data/learnings-embeddings.npy
Index FAISS : data/learnings-index.faiss
Métadonnées : data/embeddings-meta.json
Usage¶
Via skill /learnings (recommandé)¶
/learnings "Redis mocks incomplets"
/learnings "Validation Zod manquante"
/learnings "Tests coverage faible"
Via script direct¶
# Top 5 résultats (défaut)
python3 scripts/search-learnings.py "Redis mocks incomplets"
# Top 10 résultats
python3 scripts/search-learnings.py "Validation Zod" --top-k 10
Sortie attendue :
🔍 Recherche : "Redis mocks incomplets"
## 1. PD-103 (Gate 8, NON_CONFORME)
**Tags** : #backend, #test-coverage, #redis
**Learning** : Redis mocks incomplets dans tests d'intégration — reconnexion non testée
**Score** : 0.2341
## 2. PD-087 (Gate 8, RESERVE)
**Tags** : #backend, #test-doubles
**Learning** : Mocks insuffisants pour services externes (Redis, S3)
**Score** : 0.3156
...
Fallback grep¶
Si Ollama est inaccessible (service down, timeout), le script bascule automatiquement en mode grep classique :
⚠️ Erreur Ollama : Connection refused. Fallback grep.
🔍 Recherche : "Redis mocks incomplets"
## 1. PD-103 (Gate 8, NON_CONFORME)
**Tags** : #backend, #test-coverage, #redis
**Learning** : Redis mocks incomplets dans tests d'intégration — reconnexion non testée
**Score** : 0.0000 # (grep n'a pas de score de similarité)
Le skill reste fonctionnel même sans Ollama (recherche textuelle dégradée).
Réindexation¶
Quand réindexer ? : - Après ajout de nouveaux learnings dans data/learnings.jsonl - Changement de modèle Ollama (rare)
Commande :
Fréquence recommandée : Après chaque REX (étape 9) ou batch de learnings.
Cas d'usage¶
1. Éviter répétition erreurs¶
Avant de produire une spec ou un plan, rechercher learnings similaires :
2. Identifier patterns récurrents¶
3. Capitaliser sur expériences passées¶
Limitations et Trade-offs¶
| Aspect | Choix | Trade-off |
|---|---|---|
| Embeddings | Ollama local nomic-embed-text | ✅ 100% local, gratuit ⚠️ Qualité inférieure à modèles cloud |
| Vector store | FAISS (local) | ✅ Simple, rapide ⚠️ Pas de filtres avancés |
| Fallback | Grep classique | ✅ Robuste ⚠️ Qualité dégradée |
| Dataset | 93 learnings | ✅ Léger, rapide ⚠️ Pas de clustering avancé |
Sécurité¶
- ✅ 100% local (Ollama + FAISS)
- ✅ Pas de données envoyées en externe
- ✅ Pas de clé API requise
- ✅ Learnings sont publics (pas de données sensibles)
Troubleshooting¶
Erreur "Index FAISS non trouvé"¶
Lancer l'indexation initiale :
Erreur "Connection refused" (Ollama)¶
Vérifier qu'Ollama tourne :
Erreur "ModuleNotFoundError: No module named 'requests'"¶
Installer les dépendances :
Ollama lent¶
Le premier embedding peut prendre quelques secondes (chargement modèle en mémoire). Les suivants sont instantanés (~50ms/embedding).
Métriques¶
| Métrique | Valeur |
|---|---|
| Learnings indexés | 93 |
| Dimension embeddings | 768 |
| Modèle Ollama | nomic-embed-text (~274 MB) |
| Temps indexation | ~1-2 minutes (93 learnings) |
| Temps recherche | <1 seconde |
| Stockage FAISS | ~500 KB |
Performance Ollama¶
- Premier embedding : 2-3 secondes (chargement modèle)
- Embeddings suivants : 50-100 ms
- Mémoire : ~500 MB (modèle en RAM)
Évolutions futures¶
- Filtres par tags (
/learnings "Redis" --tags backend,cache) - Recherche par score de gate (
--min-score 6.0) - Clustering des learnings (identifier patterns récurrents automatiquement)
- Embeddings incrémentales (réindexer seulement les nouveaux learnings)
- Support Ollama distant (IA-Server 192.168.1.82)
Ollama distant (optionnel)¶
Pour utiliser Ollama sur IA-Server (2× RTX 5090) au lieu du Mac :
Avantages : - ✅ GPU puissant (génération plus rapide) - ✅ Libère ressources Mac - ⚠️ Nécessite accès réseau IA-Server
Auteur : Claude (Governance Workflow Orchestrator) Date : 2026-02-19 Version : 2.0.0 (Ollama local)