| --- |
| title: RAG Chatbot Demo |
| emoji: 🤗 |
| colorFrom: blue |
| colorTo: purple |
| sdk: gradio |
| sdk_version: 6.20.0 |
| app_file: app.py |
| pinned: false |
| --- |
| |
| # RAG Assistant |
|
|
| Assistant conversationnel basé sur une architecture **Retrieval Augmented Generation (RAG)**. |
|
|
| Cette application permet d'interroger une base documentaire pré-indexée en combinant une recherche vectorielle, un reranking des documents et un modèle de langage. |
|
|
| --- |
|
|
| # Modèles utilisés |
|
|
| | Composant | Modèle | |
| |-----------|---------| |
| | **LLM** | TinyLlama/TinyLlama-1.1B-Chat-v1.0 | |
| | **Embeddings** | sentence-transformers/all-MiniLM-L6-v2 | |
| | **Reranker** | cross-encoder/ms-marco-MiniLM-L-6-v2 | |
| | **Recherche vectorielle** | FAISS | |
| | **Interface** | Gradio | |
|
|
| --- |
|
|
| # Fonctionnement |
|
|
| Le pipeline RAG suit les étapes suivantes : |
|
|
| 1. La question de l'utilisateur est convertie en embedding grâce au modèle **sentence-transformers/all-MiniLM-L6-v2**. |
| 2. Une recherche de similarité est effectuée dans la base vectorielle **FAISS** afin de récupérer les passages les plus proches. |
| 3. Les documents retrouvés sont ensuite réordonnés (**reranking**) grâce au modèle **cross-encoder/ms-marco-MiniLM-L-6-v2** afin de conserver les passages les plus pertinents. |
| 4. Les passages sélectionnés sont injectés dans le prompt du modèle **TinyLlama/TinyLlama-1.1B-Chat-v1.0**. |
| 5. Le modèle génère une réponse contextualisée. |
|
|
| Architecture : |
|
|
| ```text |
| Question utilisateur |
| │ |
| ▼ |
| Embedding (all-MiniLM-L6-v2) |
| │ |
| ▼ |
| Recherche vectorielle |
| (FAISS) |
| │ |
| ▼ |
| Top-k documents |
| │ |
| ▼ |
| Reranking (CrossEncoder) |
| cross-encoder/ms-marco-MiniLM-L-6-v2 |
| │ |
| ▼ |
| Contexte optimisé |
| │ |
| ▼ |
| TinyLlama-1.1B-Chat-v1.0 |
| │ |
| ▼ |
| Réponse |
| ``` |
|
|
| ## Objectif du projet |
|
|
| Ce projet a été développé afin d'explorer les différentes étapes de la construction d'un système RAG complet : |
|
|
| - chargement et préparation des documents ; |
| - création d'une base vectorielle avec FAISS ; |
| - recherche sémantique par embeddings ; |
| - amélioration de la pertinence grâce à un CrossEncoder (reranking) ; |
| - génération de réponses avec un modèle de langage Hugging Face ; |
| - interface utilisateur développée avec Gradio. |