Knowledge base base on OpenAI and PGVector + Qdrant.
Find a file
2026-07-11 17:53:31 +02:00
.vscode first commit 2026-07-09 07:57:57 +02:00
apps feat: kubernetes chart 2026-07-11 17:53:31 +02:00
Chart feat: kubernetes chart 2026-07-11 17:53:31 +02:00
packages/shared feat: very advanced vector research 2026-07-10 18:07:45 +02:00
.dockerignore first commit 2026-07-09 07:57:57 +02:00
.env.example feat: improving OCR and UI with voice input 2026-07-11 16:46:26 +02:00
.gitignore first commit 2026-07-09 07:57:57 +02:00
.sops.yaml feat: kubernetes chart 2026-07-11 17:53:31 +02:00
docker-compose.yml fix: correct mermaid 2026-07-11 17:20:59 +02:00
Dockerfile.api feat: very advanced vector research 2026-07-10 18:07:45 +02:00
Dockerfile.ui fix: code blocks 2026-07-11 15:30:12 +02:00
Dockerfile.worker first commit 2026-07-09 07:57:57 +02:00
Makefile first commit 2026-07-09 07:57:57 +02:00
README.md first commit 2026-07-09 07:57:57 +02:00

Knowledge Base IA

Application RAG locale avec SvelteKit, Hono, PostgreSQL, Redis, MinIO, Qdrant et OpenAI.

Lancement

cp .env.example .env
docker compose up -d

URLs locales:

Compte local par defaut:

  • email: admin@local
  • mot de passe: valeur de DASHBOARD_PASSWD dans .env (change-me par defaut)

Fonctionnement

  1. Creer une base de connaissances.
  2. Importer un document.
  3. Le worker lit le job Redis, extrait le contenu, cree les chunks, genere les embeddings et indexe Qdrant.
  4. Le chat recherche les chunks pertinents dans Qdrant avec filtres tenant/base, ajoute une recherche texte PostgreSQL, puis repond avec citations.

Sans OPENAI_API_KEY, les embeddings et le chat utilisent un fallback deterministic/local pour garder le pipeline testable. Avec une cle OpenAI, le worker utilise OPENAI_EMBEDDING_MODEL et le chat utilise OPENAI_CHAT_MODEL.

Variables

Voir .env.example. Les principales:

  • DATABASE_URL
  • REDIS_URL
  • QDRANT_URL
  • QDRANT_API_KEY
  • S3_ENDPOINT
  • S3_ACCESS_KEY
  • S3_SECRET_KEY
  • S3_BUCKET
  • OPENAI_API_KEY
  • OPENAI_EMBEDDING_MODEL
  • OPENAI_CHAT_MODEL
  • DOCLING_URL
  • DOCLING_TIMEOUT_MS
  • DOCLING_DO_OCR

Ingestion

Le worker utilise Docling Serve en priorite via DOCLING_URL pour les PDF, DOCX, PPTX, XLSX, HTML et images. Il soumet les conversions via l'endpoint async Docling, poll le statut, puis recupere le resultat. En cas d'indisponibilite de Docling, il retombe sur les extracteurs internes: texte, Markdown, JSON, CSV, HTML, PDF texte et documents image simples.

Par defaut, l'OCR Docling est desactive (DOCLING_DO_OCR=false) pour eviter les traitements tres longs sur les PDF qui contiennent deja du texte. Active-le pour les scans ou documents image.

PostgreSQL conserve la verite applicative. MinIO conserve les originaux. Qdrant conserve les vecteurs et un payload minimal. Les embeddings ne sont pas stockes dans PostgreSQL.

Tests

cd apps/api && npm test
cd apps/worker && npm test
cd apps/ui && npm test

Ou via Compose:

make test