RAG IA
La génération augmentée par récupération (RAG) permet aux agents et à l'interface de chat de répondre aux questions ancrées dans les données réelles de votre application — enregistrements de table et documents téléversés — au lieu de s'appuyer uniquement sur les données d'entraînement du modèle. Avant de générer une réponse, l'exécution récupère le contenu le plus pertinent depuis une base de connaissances indexée vectoriellement et l'injecte dans le contexte.
Le RAG est natif une fois AI_PROVIDER configuré : l'infrastructure d'embedding est provisionnée automatiquement, sans YAML requis pour câbler le stockage. Les auteurs de schéma déclarent ce qu'il faut intégrer (dans le bloc knowledge d'un agent) ; les opérateurs ajustent le comment via des variables d'environnement.
Architecture
Sources de connaissances Magasin vectoriel
│ │
├── Enregistrements de table ─▶ Découper + Intégrer ─▶ │
│ (champs spécifiés) │
│ │
└── Documents ─────────────▶ Découper + Intégrer ─▶ │
(PDF, MD, TXT) ▼
Recherche par similarité
│
▼
Fournisseur IA (génère une réponse ancrée)
Stockage adapté au dialecte
Le RAG fonctionne sur les deux dialectes de base de données via le port AiEmbeddingRepository — il n'y a aucune base de données vectorielle externe pour l'un ou l'autre.
| Dialecte | Stockage | Similarité |
|---|---|---|
| PostgreSQL | Extension pgvector ; colonne vector dans le schéma ai |
Distance cosinus calculée en SQL (indexée HNSW). |
| SQLite | Colonne BLOB Float32 (octets compactés) |
Similarité cosinus calculée dans le code applicatif. |
La valeur par défaut frugale — SQLite + Ollama — prend en charge le RAG. SQLite stocke les vecteurs comme BLOB Float32 compactés et calcule la similarité cosinus dans le code applicatif, normalisée pour correspondre au contrat Postgres. L'enveloppe de réponse et la forme de chaque résultat (agentName, sourceRef, content, similarity) sont identiques entre dialectes, de sorte que les appelants ne se ramifient jamais selon le moteur de stockage.
Sources de connaissances
Le bloc knowledge d'un agent définit les sources de données d'entrée intégrées dans sa base de connaissances. Les deux types de sources sont optionnels et peuvent être combinés.
Connaissances de table
Intégrer des champs spécifiés depuis une table. Seuls les champs de type texte (single-line-text, long-text, rich-text, markdown) devraient être intégrés. Un filter optionnel limite quelles lignes sont incluses.
agents:
- name: support-agent
role: support
systemPrompt: Answer using the FAQ and published docs.
knowledge:
tables:
- { table: faq, fields: [question, answer] }
- { table: docs, fields: [content], filter: { status: published } }
| Propriété | Description |
|---|---|
table |
Nom de table à intégrer (doit référencer une table dans app.tables). |
fields |
Noms de champs à inclure dans les embeddings (au moins un). |
filter |
Filtre d'égalité clé-valeur optionnel sélectionnant quelles lignes sont intégrées. |
Lorsque les enregistrements sources changent, les embeddings sont mis à jour automatiquement (auto-synchronisation).
Connaissances de document
Intégrer des fichiers de documents (PDF, Markdown, texte brut) découverts dans le répertoire de connaissances.
knowledge:
documents:
- { path: /knowledge/product-manual.pdf, label: Product Manual }
| Propriété | Description |
|---|---|
path |
Chemin du fichier vers le document. |
label |
Étiquette lisible optionnelle pour la source. |
Les documents placés dans AI_KNOWLEDGE_DIR sont nativement découverts, analysés, découpés, intégrés et stockés.
| Format | Extension | Notes |
|---|---|---|
.pdf |
Texte uniquement ; les PDF numérisés ne sont pas pris en charge. | |
| Markdown | .md |
Formatage retiré, structure conservée. |
| Texte brut | .txt |
Ingéré directement. |
Restriction de connaissances par agent
Chaque agent a sa propre base de connaissances isolée, indexée par le nom de l'agent. Un agent ne récupère jamais les embeddings d'un autre agent. Le chat peut en outre accéder aux connaissances restreintes aux permissions de l'utilisateur demandeur. Cette isolation permet à un agent de support et à un agent commercial d'intégrer des corpus entièrement différents sans contamination croisée.
Configuration d'embedding et de récupération
Le découpage, l'embedding et la récupération sont ajustés via des variables d'environnement.
| Variable | Description | Défaut |
|---|---|---|
AI_EMBEDDING_MODEL |
Modèle d'embedding à utiliser. | Modèle d'embedding par défaut du fournisseur |
AI_EMBEDDING_DIMENSIONS |
Dimensions du vecteur (doit correspondre à la sortie du modèle). | Auto-détecté depuis le modèle |
AI_KNOWLEDGE_DIR |
Chemin vers le dossier des documents de connaissances. | ./knowledge |
AI_RAG_CHUNK_SIZE |
Caractères par fragment. | 512 |
AI_RAG_CHUNK_OVERLAP |
Chevauchement entre fragments adjacents. | 50 |
AI_RAG_SIMILARITY |
Similarité cosinus minimale pour conserver un résultat (0–1). | 0.7 |
AI_RAG_MAX_RESULTS |
Nombre maximal de fragments retournés par requête. | 5 |
API de reconstruction & de recherche
| Point d'accès | Objectif |
|---|---|
POST /api/ai/rag/rebuild |
Réintègre les connaissances configurées d'agent/document et persiste les vecteurs. Réservé à l'admin lorsque app.auth est configuré. |
POST /api/ai/rag/search |
Intègre une requête, exécute une recherche par similarité (optionnellement restreinte par agent), filtre par le seuil de similarité, et retourne des résultats classés. |
Les deux points d'accès se comportent de manière identique entre PostgreSQL et SQLite — même autorisation, même forme de réponse.
Pages connexes
- Vue d'ensemble de l'IA — l'écosystème IA complet.
- Agents IA — agents qui possèdent des bases de connaissances.
- Mémoire IA — récupération de connaissances à l'exécution vs sources intégrées.
- Fournisseurs IA — configuration du modèle d'embedding.
- Variables d'environnement — référence complète
AI_RAG_*.