Skip to content

Repository files navigation

Python FastAPI Docker Ollama

LangChain FAISS Ministral 3 Tesseract

Apple Silicon License


📚 FamilyRAG 2.7

Votre bibliothèque numérique privée — dernière release 2025

Posez des questions à vos documents en langage naturel.
Sans cloud. Sans abonnement. Sans compromis sur la vie privée.


🏠 Qu'est-ce que FamilyRAG ?

FamilyRAG est un système RAG (Retrieval-Augmented Generation) entièrement local, conçu pour les familles qui souhaitent exploiter la puissance de l'IA générative tout en gardant le contrôle total sur leurs données.

Imaginez pouvoir interroger en langage naturel :

  • 📄 Les documents administratifs de la famille
  • 📖 Les recettes de grand-mère numérisées
  • 🖼️ Les photos de documents et textes scannés (OCR + Vision IA)
  • 📝 Les cours et devoirs des enfants
  • 📧 Les archives emails importantes
  • 📚 Votre bibliothèque personnelle de livres et articles

Le tout sans qu'une seule donnée ne quitte votre domicile.


✨ Nouveautés v2.7

📊 Dashboard système en temps réel

  • Monitoring live — CPU, RAM et disque affichés directement dans l'interface
  • Statistiques de précision — Score de confiance et probabilité des résultats pour chaque réponse
  • Endpoint dédié/api/system/metrics pour surveiller les ressources

🎨 3 nouveaux thèmes premium

Refonte graphique complète avec 3 thèmes plus poussés remplaçant les 6 précédents :

  • Midnight — Bleu nuit profond, design épuré et professionnel
  • Cyber — Noir intense avec accents cyan néon, ambiance futuriste
  • Tactical — Vert militaire avec accents rouges, style opérationnel

📁 Indexation sélective

  • Choix précis des fichiers — Sélectionnez exactement quels documents indexer
  • Barre de progression intelligente — Suivi en temps réel de l'avancement de l'indexation
  • Contrôle granulaire — Plus besoin d'indexer l'intégralité du dossier

💬 Gestion avancée des conversations

  • Onglet dédié — Interface complète pour gérer l'historique des conversations
  • Sélection de sources par conversation — Limitez la recherche à des documents spécifiques pour chaque discussion
  • Persistance — Reprenez vos conversations là où vous les avez laissées

🔒 Sécurité & Qualité (post-audit)

  • Gardes LFI — Toute tentative de path traversal (../../etc/passwd) est bloquée avec HTTP 403 sur les endpoints /api/index et /api/vision
  • Interface 100 % hors-ligne — Tailwind CSS et Alpine.js servis localement (/static/) ; aucune requête CDN externe
  • Suite de tests — 40 tests pytest couvrant les routes API, les gardes de sécurité et les scénarios d'erreur
  • Logs structurés — Tous les print() remplacés par logging avec niveaux INFO / WARNING / ERROR

🎯 Rappel v2.6 — Précision RAG +65%

La v2.6 avait apporté une refonte majeure du pipeline de recherche :

  • Re-ranking LLM — Chaque chunk réévalué sémantiquement, éliminant les faux positifs
  • Métadonnées enrichies — Date, année, type de document et auteur extraits automatiquement
  • Chunking intelligent — Préserve la structure (articles, listes, tableaux)
  • Citations obligatoires — Chaque réponse cite ses sources [document.pdf]
  • Sélection des modèles — LLM et embedding modifiables en un clic depuis l'interface
  • Debug chunks — Visualisation des passages récupérés et leurs scores

📊 Gains de précision v2.5 → v2.6

Métrique v2.5 v2.6+
Chunks récupérés 4 12
Réponses avec citations ~30% ~85%
Faux positifs ~40% ~10%
Précision globale ~45% ~75%

🗂️ Formats supportés

PDF TXT MD DOCX EML JPG PNG

Images : OCR Tesseract (indexation) + Vision Ministral 3 (analyse à la demande)


🏗️ Architecture

┌─────────────────────────────────────────────────────────────────┐
│                      Votre machine (Mac/Linux/Windows)          │
│                                                                 │
│  ┌─────────────────┐        ┌────────────────────────────────┐  │
│  │     Ollama      │◄──────►│     Docker Container           │  │
│  │    (natif)      │  API   │                                │  │
│  │                 │        │  ┌──────────────────────────┐  │  │
│  │ • ministral-3   │        │  │  FastAPI + FAISS         │  │  │
│  │ • nomic-embed   │        │  │  + LangChain + Tesseract │  │  │
│  │                 │        │  └──────────────────────────┘  │  │
│  └─────────────────┘        │                                │  │
│          │                  │  ┌──────────────────────────┐  │  │
│          │ GPU              │  │  WebUI (3 thèmes)        │  │  │
│          ▼                  │  │  + Dashboard metrics     │  │  │
│  ┌─────────────────┐        │  └──────────────────────────┘  │  │
│  │  Apple Silicon  │        │                                │  │
│  │   M1/M2/M3      │        │   127.0.0.1:8000 (local only)  │  │
│  └─────────────────┘        └────────────────────────────────┘  │
│                                        ▲                        │
│  ┌─────────────────┐                   │                        │
│  │  📁 Vos Docs    │───────────────────┘                        │
│  │  (RAG folder)   │  volume mount                              │
│  └─────────────────┘                                            │
└─────────────────────────────────────────────────────────────────┘

Par défaut, le port 8000 est lié à 127.0.0.1 — l'application n'est accessible que depuis la machine hôte. Pour l'exposer sur le réseau local, modifiez docker-compose.yml (voir Guide d'administration).


Prérequis

  • Ollama 0.13.1+ (requis pour Ministral 3)
  • Docker Desktop
# Vérifier la version Ollama
ollama --version

Installation

1. Cloner et configurer

git clone https://github.com/Liamdbav/FAMILY_RAG.git
cd FAMILY_RAG
cp .env.example .env

Éditer .env pour définir le chemin vers vos documents :

nano .env
# Modifier HOST_DATA_PATH=/chemin/vers/vos/documents

2. Installer les modèles Ollama

# Modèle de génération + vision (recommandé)
ollama pull ministral-3:latest

# Ou autres modèles de génération
ollama pull qwen2.5:7b
ollama pull mistral:latest

# Modèle d'embedding (obligatoire)
ollama pull nomic-embed-text

3. Lancer

docker compose up -d --build

4. C'est prêt !

Ouvrez http://localhost:8000 🎉


⚙️ Variables d'environnement

Toutes les variables sont déclarées dans .env (copié depuis .env.example).

Variable Défaut Obligatoire Description
HOST_DATA_PATH Chemin absolu vers le dossier de documents sur l'hôte
OLLAMA_HOST host.docker.internal:11434 Adresse du serveur Ollama (host:port) — localhost:11434 sur Linux avec network_mode: host
EMBEDDING_MODEL nomic-embed-text Modèle Ollama utilisé pour la vectorisation des documents
LLM_MODEL (auto-détecté) Modèle de génération Ollama ; si vide, le premier modèle disponible est sélectionné automatiquement
CHUNK_SIZE 1200 Taille maximale d'un chunk en caractères
CHUNK_OVERLAP 300 Chevauchement entre chunks consécutifs (en caractères)
TOP_K 12 Nombre de chunks récupérés par requête RAG avant re-ranking
TEMPERATURE 0.7 Créativité du LLM (0 = précis et factuel, 1 = créatif)

Note Linux : remplacez OLLAMA_HOST=host.docker.internal:11434 par OLLAMA_HOST=localhost:11434 et décommentez network_mode: host dans docker-compose.yml.


🧪 Tests

Les tests nécessitent pytest et les dépendances applicatives :

pip install pytest
# Depuis la racine du projet
pytest tests/ -v

Les tests ne requièrent ni Ollama ni FAISS — le moteur RAG est entièrement simulé.

Fichier Couverture
tests/test_security.py Traversées de répertoire (LFI) sur DocumentLoader et RAGEngine — 13 tests
tests/test_api.py Routes FastAPI principales + gestion des erreurs — 27 tests

📖 Documentation

Guide Description
Administration Gestion, diagnostic et maintenance
Changelog Historique complet des versions

Fait avec soin par Liam - License MIT — voir LICENSE

About

Family RAG est un projet de bibliothèque interactive familiale (RGPD Friendly)

Resources

Stars

9 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages