Système RAG (Retrieval-Augmented Generation) avec recherche sémantique FAISS et interface Streamlit
🚀 Statut: MVP déployé - Semantic Search opérationnel
DocuMind est un système de recherche sémantique intelligent basé sur l'architecture RAG. Le système utilise:
- Recherche sémantique via embeddings et FAISS pour trouver les documents pertinents
- Interface moderne avec Streamlit pour une expérience utilisateur fluide
- Score de similarité pour évaluer la pertinence des résultats
- 123 documents indexés sur le deep learning et l'IA
Trouver rapidement des informations précises dans une large base documentaire nécessite une recherche sémantique intelligente. DocuMind indexe vos documents et retourne les passages les plus pertinents en quelques millisecondes.
- Recherche dans documentation technique
- Base de connaissances interne
- Support FAQ intelligent
- Assistant de recherche académique
- Génération d'embeddings sémantiques (Google EmbeddingGemma-300M)
- Indexation vectorielle rapide (FAISS)
- Recherche par similarité cosinus
- Interface web Streamlit moderne
- 123 documents indexés (deep learning)
- Déploiement Docker
- Métriques en temps réel
- Queries pré-remplies
- Fine-tuning LLM avec LoRA
- Génération de réponses avec citations
- Pipeline RAG complet (retrieval + generation)
- Multi-turn conversations
- API REST
- Re-ranking des documents
- Support multi-langues
- Export des résultats
- Historique des recherches
Interface de recherche sémantique:
L'interface permet de:
- Poser des questions en langage naturel
- Voir les documents les plus pertinents avec scores
- Ajuster le nombre de résultats (1-12)
- Utiliser des queries pré-remplies pour démarrer
Métriques affichées:
- 123 documents indexés
- Dimension des vecteurs: 768
- Moteur: FAISS avec similarité cosinus
- Python 3.11+
- 8 GB RAM minimum
- 2 GB espace disque
- Docker (optionnel)
# Clone le repository
git clone https://github.com/username/documind.git
cd documind
# Crée environnement virtuel
python -m venv .venv
source .venv/bin/activate # macOS/Linux
# .venv\Scripts\activate # Windows
# Installe dépendances
pip install -r requirements.txt
# Lance l'application
streamlit run app.pyOuvre ton navigateur sur http://localhost:8501
Crée un fichier .env (optionnel):
HF_TOKEN=your_huggingface_token
EMBEDDING_MODEL=google/embeddinggemma-300m
TOP_K_DOCUMENTS=5Note: Le token HuggingFace est requis pour le modèle google/embeddinggemma-300m (modèle gated). Obtiens-le sur https://huggingface.co/settings/tokens
# Build l'image
docker build -t documind .
# Run avec token HuggingFace
docker run -d -p 8501:8501 -e HF_TOKEN=your_token --name documind-app documind
# Vérifie les logs
docker logs -f documind-appAccède à l'app sur http://localhost:8501
# Arrêter
docker stop documind-app
# Redémarrer
docker start documind-app
# Supprimer
docker rm -f documind-app
# Rebuild complet
docker build --no-cache -t documind .┌─────────────────────────────────────────────────────────────┐
│ DOCUMIND SEARCH SYSTEM │
└─────────────────────────────────────────────────────────────┘
┌──────────────┐
│ Query │
│ utilisateur │
└──────┬───────┘
│
▼
┌──────────────────────────────────────────────────────────┐
│ EMBEDDING │
│ │
│ 1. Encode la query │
│ └─> Google EmbeddingGemma-300M │
│ └─> Vector 768 dimensions │
└──────────────────┬───────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────┐
│ RETRIEVAL │
│ │
│ 2. Recherche FAISS │
│ └─> Similarité cosinus │
│ └─> Top-K documents (K=5 par défaut) │
└──────────────────┬───────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────┐
│ RESULTS │
│ │
│ 3. Affichage résultats │
│ ├─ Rank │
│ ├─ Topic │
│ ├─ Score de similarité │
│ ├─ Distance │
│ └─ Contenu du document │
└──────────────────────────────────────────────────────────┘
documind/
├── app.py # Interface Streamlit
├── Dockerfile # Container Docker
├── requirements.txt # Dépendances Python
├── .gitignore
├── README.md
│
├── data/
│ └── train/
│ ├── documents.json # Documents sources
│ └── embeddings/
│ ├── embeddings.npy # Vecteurs (123 x 768)
│ ├── documents_with_embedding.json
│ └── faiss_index/
│ └── faiss_index.bin # Index FAISS
│
├── src/
│ ├── create_embeddings.py # Génération embeddings
│ ├── retrieval.py # Classe FaissIndex
│ ├── generate.py # Génération Q&A (Claude)
│ └── test_rag_system.py # Tests RAG
│
├── notebooks/
│ └── fine_tuning.ipynb # Fine-tuning LoRA
│
└── tests/
├── test_create_embeddings.py
├── test_retrieval.py
└── test_data_preparation.py
| Technologie | Usage | Version |
|---|---|---|
| Sentence Transformers | Embeddings sémantiques | 2.3.1 |
| FAISS | Recherche vectorielle | 1.8.0+ |
| Transformers | Framework Hugging Face | 4.45.0+ |
| PyTorch | Deep learning backend | 2.0.0+ |
| Technologie | Usage |
|---|---|
| Streamlit | Interface web |
| Docker | Containerisation |
| NumPy | Calcul vectoriel |
| Python-dotenv | Variables d'environnement |
- Embeddings:
google/embeddinggemma-300m(768 dimensions) - Futurs LLM:
TinyLlama-1.1B-Chatavec LoRA
Système actuel:
| Métrique | Valeur |
|---|---|
| Documents indexés | 123 |
| Dimension vecteurs | 768 |
| Temps recherche | < 100ms |
| Précision retrieval | Score visible par résultat |
Objectifs futurs (avec generation):
| Métrique | Cible |
|---|---|
| Précision réponses | > 85% |
| Recall@3 retrieval | > 90% |
| Temps réponse total | < 2s |
| Citations correctes | 100% |
- Setup projet
- Génération embeddings
- Index FAISS
- Interface Streamlit
- Docker deployment
- 123 documents indexés
- Dataset Q&A (Claude API)
- Fine-tuning LoRA TinyLlama
- Pipeline RAG complet
- Citations automatiques
- Évaluation metrics
- Déploiement cloud (Streamlit Cloud / HF Spaces)
- API REST FastAPI
- Monitoring et logs
- Tests end-to-end
- Documentation complète
- Multi-modal RAG (texte + images)
- Re-ranking avancé
- GraphRAG
- Support multi-langues
- Base vectorielle cloud (Pinecone)
# Place tes documents dans data/raw/
# Formats supportés: .txt, .json, .csv
# Génère les embeddings
python src/create_embeddings.pypython src/retrieval.py# Tests unitaires
pytest tests/
# Test retrieval spécifique
pytest tests/test_retrieval.py -vLes contributions sont bienvenues!
- Fork le projet
- Crée ta branche (
git checkout -b feature/AmazingFeature) - Commit (
git commit -m 'Add AmazingFeature') - Push (
git push origin feature/AmazingFeature) - Ouvre une Pull Request
MIT License - voir LICENSE
Votre Nom
- Hugging Face pour l'écosystème ML
- FAISS par Meta Research
- Streamlit pour l'interface rapide
- Communauté open-source ML
⭐ Si ce projet t'aide, donne-lui une étoile!
Dernière mise à jour: Octobre 2025 Version: 0.2.0 (Semantic Search MVP)