###### # ##### ####### # ##### ### # #######
# # # # # # # # # # # # # #
# # # # # # # # # # # #
###### # # # #### ##### # # # # # #####
# # ####### # # # ####### # # # #
# # # # # # # # # # # # # #
# # # # ##### # # # ##### ### ####### #######
Discutez avec vos documents PDF en utilisant le RAG (Retrieval-Augmented Generation).
Vous avez peut-être tenté de copier-coller un long document dans un chat avec une IA. Résultat : l'IA "oublie" des parties du texte, donne des réponses vagues, ou pire — invente des informations.
Le problème : Les modèles de langage ont une limite de contexte. Au-delà de quelques milliers de mots, ils perdent le fil. Et pour les documents de 100+ pages, c'est impossible.
La solution RAG (Retrieval-Augmented Generation) fonctionne différemment :
- Le document est découpé en petits morceaux
- Chaque morceau est transformé en embedding (une représentation numérique)
- Quand vous posez une question, seuls les morceaux pertinents sont récupérés
- L'IA génère sa réponse à partir de ces extraits uniquement
Les bénéfices :
- 🎯 Réponses précises basées sur le contenu réel
- 📄 Citations des pages sources pour vérification
- 💰 Coût réduit (moins de tokens consommés)
- 📚 Documents de n'importe quelle taille
- ✅ Conversation avec vos PDF — Posez vos questions, obtenez des réponses avec citations de pages
- ✅ Indexation automatique — Fournissez une URL, le document est indexé et prêt à l'emploi
- ✅ Génération de quiz — Testez votre compréhension du document
- ✅ Pas de limite de taille — Documents de 500 pages aussi fluides que 5 pages
Objectif : être opérationnel en moins d'une heure.
- Node.js >= 22.0.0
- pnpm — Installation
- Clé API Albert — Demandez l'accès ici : https://albert.sites.beta.gouv.fr/access/
# Cloner le repository
git clone https://github.com/etalab-ia/rag-facile.git
cd rag-facile
# Installer les dépendances
pnpm install
# Configurer l'environnement
cp .env.example .envÉditez le fichier .env avec vos identifiants Albert :
OPENAI_API_KEY=votre-cle-albert-api
OPENAI_BASE_URL=https://albert.api.etalab.gouv.fr/v1pnpm devOuvrez localhost:4111 pour accéder à l'interface Mastra Studio.
- Dans l'interface, ouvrez l'agent "Chat with PDF"
- Collez l'URL d'un PDF public
- Attendez l'indexation (quelques secondes)
- Posez une question sur le contenu
┌─────────┐ ┌────────────┐ ┌──────────────┐
│ PDF URL │────▶│ Indexation │────▶│ Vector Store │
└─────────┘ └────────────┘ └──────────────┘
│
┌──────────┐ ┌────────────┐ │
│ Question │────▶│ Recherche │◀────────────┘
└──────────┘ └────────────┘
│
▼
┌──────────────┐
│ Albert API │
└──────────────┘
│
▼
┌──────────────┐
│ Réponse + │
│ Citations │
└──────────────┘
src/mastra/
├── agents/ # Agent conversationnel
├── tools/ # Outils (recherche, listage documents)
├── workflows/ # Workflow d'indexation PDF
├── lib/ # Configuration vector store
└── index.ts # Point d'entrée Mastra
La configuration se trouve dans src/mastra/agents/pdf-chat-agent.ts :
model: {
id: "albert-api/openai/gpt-oss-120b", // Format Albert API OpenAI-compatible
url: process.env.OPENAI_BASE_URL,
apiKey: process.env.OPENAI_API_KEY,
}Consultez la documentation Albert pour les modèles disponibles.
Par défaut, Rag Facile utilise LibSQL (stockage fichier local). Mastra supporte d'autres options :
- Pinecone
- Qdrant
- Chroma
- pgvector
- Cloudflare D1
Voir la documentation Mastra pour la configuration.
Rag Facile expose une API via Mastra. Utilisez le Mastra Client SDK pour connecter votre frontend (React, Next.js, Vue).
Les contributions sont bienvenues ! Ouvrez une issue ou soumettez une pull request.
Apache-2.0 — © 2025 Etalab