Retour à l'accueil

JuliaLM : RAG pour les bases de connaissances sans ChatGPT

JuliaLM — système RAG open source pour les bases de connaissances personnelles. Utilise SurrealDB pour les vecteurs et le graphe, analyse en cascade pour PDF/YouTube, quatre stratégies de recherche. Inclut FSRS pour les fiches et la budgétisation du contexte.

Construisez JuliaLM : analogue de NotebookLM sur votre stack
Advertisement 728x90

JuliaLM : Un système RAG autonome pour bases de connaissances personnelles

Les développeurs sont souvent confrontés au défi de traiter de grands volumes de documents : PDF, conférences YouTube, pages web. Les chatbots standards comme ChatGPT perdent le contexte lorsqu'ils travaillent avec plusieurs sources, et les frameworks RAG prêts à l'emploi peinent avec les documents scannés et les vidéos. JuliaLM résout ce problème avec un pipeline personnalisé : chargement unique des sources, recherche multi-stratégies et gestion du contexte. Le système est construit sur Nuxt.js, FastAPI et SurrealDB, offrant recherche vectorielle, chat et génération de flashcards.

Architecture de la pile technique et choix de SurrealDB

Le frontend Nuxt.js communique avec le backend via REST et SSE. FastAPI orchestre l'IA avec LangGraph, gère une file d'attente de tâches et s'intègre à SurrealDB. La base de données combine tables relationnelles, connexions graphe et recherche vectorielle en un seul service, remplaçant Postgres + Redis + Pinecone.

Frontend (Nuxt.js)
    ↕ REST + SSE
Backend (FastAPI)
    ├── LangGraph (orchestration IA)
    ├── Commandes en arrière-plan (file d'attente)
    ├── SurrealDB (données + vecteurs + graphe)
    ├── Gotenberg (conversion de documents)
    └── MiniMax / API d'embedding (LLM + vectorisation)

La file d'attente est implémentée sur SurrealDB avec relances (jusqu'à 5 tentatives) et backoff exponentiel. Pour les sources légères—traitement synchrone (5–10 secondes) ; pour les PDF lourds—asynchrone avec interrogation de statut.

Google AdInline article slot

Analyse en cascade des sources

Le traitement des documents utilise des solutions de repli pour la fiabilité :

  • Fichiers PDF et bureautiques : Docling pour Markdown avec préservation de la structure (titres, tableaux). Solution de repli—Gotenberg basé sur LibreOffice pour PPTX/XLSX.
  • YouTube : 1) youtube-transcript-api (sous-titres par langue : RU→EN→ES→PT) ; 2) pytubefix (client Android) ; 3) Firecrawl/Jina.
  • Pages web : Playwright (rendu JS, randomisation UA/viewport) + readability ; solutions de repli—Jina Reader, HTTP.
  • Images : Modèle de vision pour OCR de texte manuscrit.

Cela garantit l'extraction de texte même en cas d'échec de l'API YouTube ou de CAPTCHAs.

Vectorisation et recherche multi-stratégies

Le texte est divisé en segments d'environ 500 tokens (15% de chevauchement) avec séparateurs prioritaires : sauts de ligne doubles → sauts de ligne simples → points. Un équilibre empirique entre précision et contexte pour les textes scientifiques.

Google AdInline article slot

La recherche de sources combine quatre stratégies en parallèle :

  • Recherche vectorielle—sémantique via embeddings (cosinus ≥ 0,15).
  • Recherche textuelle—BM25 sur le texte intégral.
  • Recherche par titre—sur les titres.
  • Recherche d'aperçus—sur les résumés et insights.

Déduplication : score +0,05 par correspondance. Top 5 résultats.

Gestion du contexte pour les documents longs

Limite globale—300 000 caractères (75K tokens). Par source : min 5 000, max 40 000.

Google AdInline article slot
  • Source courte : entièrement.
  • Longue + requête connue : insights + segments pertinents (recherche vectorielle interne).
  • Longue + requête inconnue : insights + début du texte.

Cette approche évite le débordement de contexte lors du travail avec des livres.

Flashcards avec FSRS

Génération de paires "question-réponse" en JSON avec validation. Répétition espacée via FSRS : stabilité, difficulté, paramètres d'état (nouveau/apprentissage/révision). Notation 1–4 recalcule le planning. L'intégration dans le carnet supprime l'export vers Anki.

Recherche avancée en base de données

Deux modes de base : BM25 et recherche vectorielle. "Interroger la base de données"—graphe LangGraph :

  • Génération de jusqu'à 5 sous-requêtes avec instructions.
  • Recherche parallèle (jusqu'à 10 résultats/requête).
  • Synthèse des réponses intermédiaires.

Points clés à retenir

  • L'analyse en cascade garantit l'extraction de texte depuis n'importe quelle source, y compris YouTube sans sous-titres.
  • Quatre stratégies de recherche améliorent le rappel de 20–30 % par rapport à une recherche vectorielle unique.
  • La gestion du contexte permet de traiter des corpus >1000 pages sans perte de pertinence.
  • L'intégration FSRS simplifie l'apprentissage en automatisant la répétition espacée.
  • SurrealDB simplifie le déploiement : un conteneur au lieu de trois bases de données.

— Editorial Team

Advertisement 728x90

Lire ensuite