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.
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.
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.
- 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
Noch keine Kommentare.