Skip to main content

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.

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 .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