Zpět na domů

JuliaLM: RAG pro báze znalostí bez ChatGPT

JuliaLM — otevřený RAG-systém pro osobní báze znalostí. Používá SurrealDB pro vektory a graf, kaskádové parsování pro PDF/YouTube, čtyři strategie vyhledávání. Zahrnuje FSRS pro flashkartičky a rozpočtování kontextu.

Postavte JuliaLM: analog NotebookLM na svém stacku
Advertisement 728x90

JuliaLM: Vlastní implementace RAG systému pro osobní znalostní báze

Vývojáři často řeší zpracování velkého množství dokumentů: PDF, YouTube přednášek, webových stránek. Standardní chatoví roboti jako ChatGPT ztrácejí kontext při práci s více zdroji a hotové RAG frameworky si špatně poradí se skeny a videi. JuliaLM to řeší vlastním pipeline: jednorázové načtení zdrojů, vícevrstvé vyhledávání a rozpočtování kontextu. Systém je postaven na Nuxt.js, FastAPI a SurrealDB, zajišťuje vektorové vyhledávání, chat a generování kartiček.

Architektura stacku a volba SurrealDB

Frontend v Nuxt.js komunikuje s backendem přes REST a SSE. FastAPI orchestruje AI pomocí LangGraph, spravuje frontu úloh a integruje se s SurrealDB. Databáze kombinuje relační tabulky, grafové vazby a vektorové vyhledávání v jedné službě, nahrazuje Postgres + Redis + Pinecone.

Frontend (Nuxt.js)
    ↕ REST + SSE
Backend (FastAPI)
    ├── LangGraph (orchestrace AI)
    ├── Pozadí příkazů (fronta úloh)
    ├── SurrealDB (data + vektory + graf)
    ├── Gotenberg (konverze dokumentů)
    └── MiniMax / Embedding API (LLM + vektorizace)

Fronta úloh je implementována nad SurrealDB s opakováním (až 5 pokusů) a exponenciálním backoffem. Pro lehké zdroje – synchronní zpracování (5–10 s), pro těžké PDF – asynchronní s pollingem stavů.

Google AdInline article slot

Kaskádové parsování zdrojů

Zpracování dokumentů využívá fallbacky pro spolehlivost:

  • PDF a kancelářské soubory: Docling pro Markdown se zachováním struktury (nadpisy, tabulky). Fallback – Gotenberg na bázi LibreOffice pro PPTX/XLSX.
  • YouTube: 1) youtube-transcript-api (titulky podle jazyků: RU→EN→ES→PT); 2) pytubefix (Android klient); 3) Firecrawl/Jina.
  • Webové stránky: Playwright (JS renderování, randomizace UA/viewport) + readability; fallbacky – Jina Reader, HTTP.
  • Obrázky: Vision model pro OCR ručně psaného textu.

To zajišťuje extrakci textu i při výpadcích YouTube API nebo captchách.

Vektorizace a vícevrstvé vyhledávání

Text je nařezán na chunky ~500 tokenů (překrytí 15 %) s prioritními oddělovači: dvojité zalomení → jednoduché → tečky. Empirická rovnováha mezi přesností a kontextem pro vědecké texty.

Google AdInline article slot

Vyhledávání ve zdrojích kombinuje čtyři strategie paralelně:

  • Vektorové vyhledávání – sémantické podle embeddingů (cosine ≥ 0,15).
  • Textové vyhledávání – BM25 podle celého textu.
  • Vyhledávání v nadpisech – podle titulků.
  • Vyhledávání insightů – podle shrnutí a poznatků.

Deduplikace: score +0,05 za každou shodu. Top-5 výsledků.

Rozpočtování kontextu pro dlouhé dokumenty

Celkový limit – 300 000 znaků (75K tokenů). Na zdroj: min 5000, max 40 000.

Google AdInline article slot
  • Krátký zdroj: celý.
  • Dlouhý + známý dotaz: insighty + relevantní chunky (interní vektorové vyhledávání).
  • Dlouhý + neznámý dotaz: insighty + začátek textu.

Přístup zabraňuje přeplnění kontextu při práci s knihami.

Kartičky s FSRS

Generování párů „otázka-odpověď“ v JSON s validací. Intervalové opakování podle FSRS: parametry stability, obtížnosti, stavu (nová/studuje se/opakuje). Hodnocení 1–4 přepočítává rozvrh. Integrace do poznámkového bloku vylučuje export do Anki.

Rozšířené vyhledávání v databázi

Dva základní režimy: BM25 a vektorové vyhledávání. „Zeptat se databáze“ – LangGraph graf:

  • Generování až 5 poddotazů s instrukcemi.
  • Paralelní vyhledávání (až 10 výsledků/dotaz).
  • Syntéza meziodpovědí.

Co je důležité

  • Kaskádové parsování garantuje extrakci textu z jakýchkoli zdrojů, včetně YouTube bez titulků.
  • Čtyři strategie vyhledávání zvyšují recall o 20–30 % ve srovnání s jedním vektorovým vyhledáváním.
  • Rozpočet kontextu umožňuje zpracovat korpusy >1000 stránek bez ztráty relevance.
  • FSRS integrace zjednodušuje učení automatizací spaced repetition.
  • SurrealDB zjednodušuje nasazení: jeden kontejner místo tří databází.

— Editorial Team

Advertisement 728x90

Číst dál