Un projet RAG (Retrieval-Augmented Generation) utilisant LangChain et ChromaDB pour la recherche sémantique de documents.
Rag_project/
├── app/
│ ├── api/ # Endpoints API FastAPI
│ │ └── routes.py # Routes de l'API
│ ├── data/ # Gestion des documents
│ │ └── documents.py
│ ├── rag/ # Logique RAG
│ │ └── retriever.py
│ └── main.py # Point d'entrée principal
├── db/ # Base de données vectorielle ChromaDB
├── tests/ # Tests unitaires
│ └── test_rag.py
├── main.py # Script de démonstration original
├── requirements.txt # Dépendances Python
└── README.md # Ce fichier
- Créer et activer l'environnement virtuel :
python -m venv venv
source venv/bin/activate # Linux/Mac
# ou
venv\Scripts\activate # Windows- Installer les dépendances :
pip install -r requirements.txtpython app/main.pyCette commande lance une interface interactive pour tester la recherche RAG.
python -m uvicorn app.api.routes:app --reloadL'API sera disponible sur http://localhost:8000
GET /- Message de bienvenuePOST /search- Recherche de documents similaires{ "query": "votre recherche", "k": 3 }GET /health- Vérification de santé
python main.py- Recherche sémantique : Utilise des embeddings pour trouver des documents similaires
- Base vectorielle persistante : ChromaDB pour stocker et récupérer efficacement les documents
- API REST : Interface FastAPI pour l'intégration dans d'autres applications
- Tests unitaires : Validation du fonctionnement du système
- Structure modulaire : Code organisé et maintenable
Le système utilise par défaut :
- Modèle d'embeddings :
all-MiniLM-L6-v2 - Base de données : ChromaDB dans le dossier
db/ - Nombre de résultats par défaut : 3
python -m pytest tests/
# ou
python tests/test_rag.pyPour ajouter de nouveaux documents :
- Modifiez
app/data/documents.py - Ajoutez vos documents dans la fonction
get_medical_documents() - Relancez l'application
- LangChain : Framework pour les applications RAG
- ChromaDB : Base de données vectorielle
- FastAPI : Framework API REST
- HuggingFace Transformers : Modèles d'embeddings
- Python 3.12+ : Langage principal