Zurück zur Startseite

JuliaLM: RAG für Wissensbasen ohne ChatGPT

JuliaLM — offenes RAG-System für persönliche Wissensbasen. Verwendet SurrealDB für Vektoren und Graph, Kaskaden-Parsing für PDF/YouTube, vier Suchstrategien. Enthält FSRS für Karteikarten und Kontextbudgetierung.

JuliaLM bauen: Analogon zu NotebookLM auf Ihrem Stack
Advertisement 728x90

JuliaLM: Ein eigenständiges RAG-System für persönliche Wissensbasen

Entwickler stehen oft vor der Herausforderung, große Mengen an Dokumenten zu verarbeiten: PDFs, YouTube-Vorträge, Webseiten. Standard-Chatbots wie ChatGPT verlieren den Kontext bei der Arbeit mit mehreren Quellen, und vorgefertigte RAG-Frameworks haben Probleme mit gescannten Dokumenten und Videos. JuliaLM löst dies mit einer maßgeschneiderten Pipeline: einmaliges Laden von Quellen, Multi-Strategie-Suche und Kontextbudgetierung. Das System basiert auf Nuxt.js, FastAPI und SurrealDB und bietet Vektorsuche, Chat und Karteikartengenerierung.

Tech-Stack-Architektur und SurrealDB-Auswahl

Das Nuxt.js-Frontend kommuniziert über REST und SSE mit dem Backend. FastAPI orchestriert KI mit LangGraph, verwaltet eine Aufgabenwarteschlange und integriert SurrealDB. Die Datenbank kombiniert relationale Tabellen, Graph-Verbindungen und Vektorsuche in einem einzigen Dienst und ersetzt Postgres + Redis + Pinecone.

Frontend (Nuxt.js)
    ↕ REST + SSE
Backend (FastAPI)
    ├── LangGraph (KI-Orchestrierung)
    ├── Hintergrundbefehle (Aufgabenwarteschlange)
    ├── SurrealDB (Daten + Vektoren + Graph)
    ├── Gotenberg (Dokumentenkonvertierung)
    └── MiniMax / Embedding API (LLM + Vektorisierung)

Die Aufgabenwarteschlange wird auf SurrealDB mit Wiederholungen (bis zu 5 Versuche) und exponentiellem Backoff implementiert. Für leichte Quellen—synchrone Verarbeitung (5–10 Sekunden); für schwere PDFs—asynchron mit Statusabfrage.

Google AdInline article slot

Kaskadierende Quellenanalyse

Die Dokumentenverarbeitung nutzt Fallbacks für Zuverlässigkeit:

  • PDF- und Office-Dateien: Docling für Markdown mit Strukturerhalt (Überschriften, Tabellen). Fallback—Gotenberg basierend auf LibreOffice für PPTX/XLSX.
  • YouTube: 1) youtube-transcript-api (Untertitel nach Sprache: RU→EN→ES→PT); 2) pytubefix (Android-Client); 3) Firecrawl/Jina.
  • Webseiten: Playwright (JS-Rendering, UA/Viewport-Randomisierung) + readability; Fallbacks—Jina Reader, HTTP.
  • Bilder: Vision-Modell für OCR von handgeschriebenem Text.

Dies gewährleistet Textextraktion selbst bei YouTube-API-Ausfällen oder CAPTCHAs.

Vektorisierung und Multi-Strategie-Suche

Text wird in Blöcke von ~500 Tokens (15 % Überlappung) aufgeteilt mit priorisierten Trennern: doppelte Zeilenumbrüche → einfache Zeilenumbrüche → Punkte. Ein empirischer Kompromiss zwischen Genauigkeit und Kontext für wissenschaftliche Texte.

Google AdInline article slot

Quellensuche kombiniert vier Strategien parallel:

  • Vektorsuche—semantisch über Embeddings (Kosinus ≥ 0,15).
  • Textsuche—BM25 über Volltext.
  • Titelsuche—über Titel.
  • Insight-Suche—über Zusammenfassungen und Erkenntnisse.

Deduplizierung: Score +0,05 pro Treffer. Top 5 Ergebnisse.

Kontextbudgetierung für lange Dokumente

Gesamtlimit—300.000 Zeichen (75K Tokens). Pro Quelle: min 5.000, max 40.000.

Google AdInline article slot
  • Kurze Quelle: vollständig.
  • Lange + bekannte Abfrage: Erkenntnisse + relevante Blöcke (interne Vektorsuche).
  • Lange + unbekannte Abfrage: Erkenntnisse + Anfang des Texts.

Dieser Ansatz verhindert Kontextüberlauf bei der Arbeit mit Büchern.

Karteikarten mit FSRS

Generierung von "Frage-Antwort"-Paaren in JSON mit Validierung. Abstands-Wiederholung über FSRS: Stabilität, Schwierigkeit, Zustandsparameter (neu/lernen/wiederholen). Bewertung 1–4 berechnet Zeitplan neu. Integration ins Notizbuch ersetzt Export nach Anki.

Erweiterte Datenbanksuche

Zwei Grundmodi: BM25 und Vektorsuche. "Frag die Datenbank"—LangGraph-Graph:

  • Generierung von bis zu 5 Unterabfragen mit Anweisungen.
  • Parallele Suche (bis zu 10 Ergebnisse/Abfrage).
  • Synthese von Zwischenantworten.

Wichtige Erkenntnisse

  • Kaskadierende Analyse garantiert Textextraktion aus jeder Quelle, auch YouTube ohne Untertitel.
  • Vier Suchstrategien verbessern den Recall um 20–30 % im Vergleich zu reiner Vektorsuche.
  • Kontextbudget ermöglicht Verarbeitung von Korpora >1000 Seiten ohne Relevanzverlust.
  • FSRS-Integration vereinfacht das Lernen durch Automatisierung der Abstands-Wiederholung.
  • SurrealDB vereinfacht das Deployment: ein Container statt drei Datenbanken.

— Editorial Team

Advertisement 728x90

Weiterlesen