Kalli
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 bytea et jsonb.
  • 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

ServiceAccèsTables principales
apps/serverlecture et écriture (Drizzle, DATABASE_URL)toutes les tables métier et Better Auth
apps/serverlecture seule (CHAINLIT_DATABASE_URL)logo, feedbacks Chainlit
apps/document-processorécriture de processing_jobs (DATABASE_URL)processing_jobs
apps/rag-agentlecture des chunks, rôles, tags ; écriture des index et des embeddingschunks, 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éma apps/server/src/db/schema/auth.ts.
  • Documents : files, chunks, qa_pair, logo. Schéma apps/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 : indexes et index_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