Agents & SystèmesSailor
Base documentaire
Upload multi-format, extraction automatique, métadonnées et gestion des documents indexés.
REF-SPEC/AG002-DOC v1.0 — 2026-04-09
1. Principe
Sailor ingère des documents de tout format, en extrait le texte, les découpe en chunks et les vectorise pour permettre la recherche sémantique. Chaque document conserve ses métadonnées (titre, catégorie, auteur, date, mots-clés) pour le filtrage et la citation.
2. Formats supportés
| Format | Bibliothèque | Particularités |
|---|---|---|
| pdf-parse | Extraction texte + métadonnées | |
| Word (.docx/.doc) | mammoth | Conversion HTML structuré |
| Excel (.xlsx/.xls) | xlsx | Extraction feuilles en texte |
| CSV | Natif | Parsing tabulaire |
| HTML/HTM | cheerio | Extraction contenu principal |
| TXT | Natif | Texte brut |
| Markdown | Natif | Contenu formaté |
| ZIP | yauzl | Extraction récursive de tous les fichiers contenus |
Taille maximale par fichier : 100 MB.
3. Pipeline d'indexation
Upload fichier Extraction Métadonnées Chunking Embedding
(drag-drop ──▶ texte ──▶ (titre, ──▶ (~500 mots, ──▶ vectoriel
ou sélection) (multi-format) catégorie, overlap 100, (Mistral /
auteur, date) TF-IDF index) Voyage /
Ollama)Extraction
Chaque format est parsé par sa bibliothèque dédiée. Le résultat est stocké sous deux formes :
content_text— texte brut pour le chunking et la recherchecontent_html— version HTML pour la prévisualisation dans le panel document
Métadonnées
| Champ | Source | Description |
|---|---|---|
| title | Nom du fichier ou extraction | Titre du document |
| categorie | Défini par l'utilisateur | Type de document |
| auteur | Extraction ou saisie | Auteur du document |
| date_creation | Extraction ou saisie | Date de création |
| mots_cles | Extraction ou saisie | Mots-clés pour le filtrage |
Chunking
Le texte extrait est découpé en segments recherchables :
| Paramètre | Valeur | Raison |
|---|---|---|
| Taille cible | ~500 mots | Équilibre contexte et précision |
| Overlap | 100 mots | Évite les coupures d'information |
| Token approximation | Oui | Estimation du nombre de tokens par chunk |
| Index TF-IDF | Oui | Pré-calcul des fréquences pour BM25 |
Embedding
Chaque chunk est vectorisé via la chaîne de fallback :
| Priorité | Modèle | Dimensions |
|---|---|---|
| 1 | Mistral Embed | 1024 |
| 2 | Voyage AI voyage-3-lite | 1024 |
| 3 | Ollama nomic-embed-text | 768 |
Les embeddings sont stockés en BLOB (Float32Array) dans la table chunks.
4. Interface
| Élément | Description |
|---|---|
| En-tête | Compteur de documents, compteur de chunks, badges catégories (top 5) |
| Recherche | Barre de recherche par titre, catégorie, auteur, mots-clés |
| Tableau | Colonnes : document (avec dot type), catégorie, auteur, date, type, ouvrir |
| Panel preview | Panel latéral plein écran avec contenu HTML ou texte formaté |
| Statistiques | Nombre de documents, chunks, statut des embeddings |