Agents & SystèmesSailor
Modèle de données
Schéma complet de la base SQLite : documents, chunks, embeddings, sessions.
REF-SPEC/AG002-DB v1.0 — 2026-04-09
1. Vue d'ensemble
Sailor utilise SQLite (via better-sqlite3) en mode WAL comme base de données. Le schéma couvre les workspaces, les documents indexés, les chunks avec embeddings vectoriels, les sessions de chat et le contexte projet.
2. Tables principales
workspaces
Isolation multi-tenant par slug.
| Colonne | Type | Description |
|---|---|---|
| id | TEXT PK | Identifiant unique |
| slug | TEXT UNIQUE | URL-friendly identifier |
| name | TEXT | Nom du workspace |
| description | TEXT | Description |
| industry | TEXT | Secteur (assurance, banque, mutuelle, etc.) |
| created_at | TEXT | Date de création |
| updated_at | TEXT | Dernière mise à jour |
documents
Fichiers uploadés avec métadonnées.
| Colonne | Type | Description |
|---|---|---|
| id | TEXT PK | Identifiant unique |
| workspace_id | TEXT FK | Workspace rattaché |
| filename | TEXT | Nom du fichier stocké |
| original_name | TEXT | Nom original du fichier |
| type | TEXT | Format (pdf, docx, xlsx, html, txt, md) |
| title | TEXT | Titre du document |
| categorie | TEXT | Catégorie (procédure, contrat, spec, etc.) |
| auteur | TEXT | Auteur |
| date_creation | TEXT | Date de création du document |
| mots_cles | TEXT | Mots-clés séparés par virgules |
| content_text | TEXT | Contenu texte brut (pour chunking) |
| content_html | TEXT | Contenu HTML (pour prévisualisation) |
| file_size | INTEGER | Taille en octets |
chunks
Segments de documents avec embeddings vectoriels.
| Colonne | Type | Description |
|---|---|---|
| id | TEXT PK | Identifiant unique |
| document_id | TEXT FK | Document source |
| workspace_id | TEXT FK | Workspace (pour requêtes directes) |
| chunk_index | INTEGER | Position dans le document |
| content | TEXT | Contenu du chunk |
| tokens_approx | INTEGER | Estimation du nombre de tokens |
| embedding | BLOB | Vecteur Float32Array |
| embed_model | TEXT | Modèle utilisé (mistral, voyage, nomic) |
| embed_dim | INTEGER | Dimensions du vecteur (768 ou 1024) |
chunk_terms
Index BM25 pré-calculé.
| Colonne | Type | Description |
|---|---|---|
| chunk_id | TEXT FK | Chunk rattaché |
| term | TEXT | Terme normalisé |
| tf | REAL | Fréquence du terme dans le chunk |
chat_sessions
Conversations persistantes.
| Colonne | Type | Description |
|---|---|---|
| id | TEXT PK | Identifiant unique |
| workspace_id | TEXT FK | Workspace rattaché |
| title | TEXT | Titre auto-généré |
| messages | TEXT (JSON) | Tableau de messages user/assistant |
| created_at | TEXT | Date de création |
| updated_at | TEXT | Dernière mise à jour |
workspace_context
Métadonnées projet.
| Colonne | Type | Description |
|---|---|---|
| id | TEXT PK | Identifiant unique |
| workspace_id | TEXT FK UNIQUE | Workspace rattaché |
| project_name | TEXT | Nom du projet |
| description | TEXT | Description du projet |
| objectives | TEXT | Objectifs documentaires |
3. Index
| Index | Table | Colonnes |
|---|---|---|
| idx_chunks_workspace | chunks | workspace_id |
| idx_chunks_document | chunks | document_id |
| idx_chunk_terms_chunk | chunk_terms | chunk_id |
| idx_chunk_terms_term | chunk_terms | term |
| idx_documents_workspace | documents | workspace_id |
| idx_sessions_workspace | chat_sessions | workspace_id |
4. Relations
workspaces ──< documents ──< chunks ──< chunk_terms
workspaces ──< chat_sessions
workspaces ──< workspace_context