Database
Database Overview
Vue d'ensemble de la base de données
nAI'vi s'appuie sur PostgreSQL. Une instance héberge le schéma métier, les tables d'authentification et, selon le déploiement, les tables Chainlit du chat.
Choix techniques
- PostgreSQL : transactions, contraintes, types
byteaetjsonb. - Drizzle ORM (côté serveur) : schéma TypeScript, migrations SQL versionnées dans
apps/server/drizzle/. - psycopg2 (côté
rag-agent) : lecture des chunks et des tags, écriture des index.
Qui lit et écrit quoi
| Service | Accès | Tables principales |
|---|---|---|
apps/server | lecture et écriture (Drizzle, DATABASE_URL) | toutes les tables métier et Better Auth |
apps/server | lecture seule (CHAINLIT_DATABASE_URL) | logo, feedbacks Chainlit |
apps/document-processor | écriture de processing_jobs (DATABASE_URL) | processing_jobs |
apps/rag-agent | lecture des chunks, rôles, tags ; écriture des index et des embeddings | chunks, qa_pair, roles, role_tags, item_tags, user, indexes, index_chunks |
document-processor crée sa propre table processing_jobs au démarrage (create_all). Elle n'apparaît pas dans les migrations Drizzle.
Périmètre
- Authentification :
user,session,account,verification. Schémaapps/server/src/db/schema/auth.ts. - Documents :
files,chunks,qa_pair,logo. Schémaapps/server/src/db/schema/naivi.ts. - Tags et rôles :
tags,roles,role_tags,item_tags. Ils déterminent le contenu de chaque index. - Index FAISS :
indexesetindex_chunks. Un index par rôle, stocké en base pour être chargé sans recalcul complet.
Détail des tables : Schéma & rôles des tables.
Pour aller plus loin
- Installer une base locale : Installation & configuration.
- Règles de modification et d'exploitation : Bonnes pratiques.
- Migrations et connexions du serveur : Base de données & migrations.