🐒 AIOS RAG — Felhasználói kézikönyv

A cég belső, privát tudásbázisa — hol keresek, ki mit lát, hogyan dolgozza fel a rendszer a dokumentumokat.

Utolsó frissítés: 2026-07-15 (Mattermost csapat-chat + OkosRAG bot élesítve chat.majomrag.olab.hu alatt, WooCommerce rendelési adat Központi láthatóságra nyitva) · Szerver: xen88-152 (88.151.103.152) · Domain: majomrag.olab.hu

1. Milyen felületek vannak most

A rendszer több különálló szolgáltatásból áll, mindegyik a majomrag.olab.hu domain alatt, saját útvonalon.

FelületURLKinekStátusz
Coolify admin
szerver- és konténer-menedzsment
88.151.103.152:8000 szuperadmin admin
Gitea
az MCP szerver forráskódja itt van verziózva
majomrag.olab.hu/gitea/ fejlesztő él
n8n
automatikus adatbehúzó workflow-k (jövőbeli ingestion pipeline-hoz)
majomrag.olab.hu/n8n fejlesztő / admin él workflow még nincs beállítva
Open WebUI
Ollama teszt-chat felület, embedding modell ellenőrzésre
majomrag.olab.hu/ fejlesztő él
MCP végpont
itt kérdezhet rá egy AI asszisztens (Claude, Gemini) a tudásbázisra
majomrag.olab.hu/mcp bárki, akinek van hozzáférési tokenje él
OkosRAG portál
bejelentkezés, Kérdezz felület (Gemini vagy Claude — szűrt kontextus), Dokumentumok (feltöltés+lista), Integrációk (pl. WooCommerce), szuperadminnak felhasználókezelés + globális beállítások; telefonon telepíthető (PWA)
majomrag.olab.hu/mrag minden bejelentkezett user; Felhasználók menü csak szuperadminnak él
Mattermost (csapat-chat)
saját, self-hosted chat — csatornák, DM-ek, és egy OkosRAG nevű AI-bot tagként
chat.majomrag.olab.hu meghívottak (a szerver nincs nyitva önregisztrációra) él
Ez a kézikönyv majomrag.olab.hu/userguide mindenki él
Új: a majomrag.olab.hu/mrag portálon most már bejelentkezéssel is lehet kérdezni a tudásbázistól (Gemini-alapú Kérdezz felület), nem csak MCP-s AI-kliensen keresztül. Mobilon telepíthető appként is felajánlja magát (PWA). A navigáció világos, semleges témára és bal oldali menüre (mobilon ☰ hamburger-menüre) váltott, és egy ❓ gomb bármikor újranyitja a gyors bevezetőt.
Új (2026-07-15): OkosRAG a Mattermost-ban. Telepítsd a Mattermost klienst (mobilon: "Mattermost" az App Store/Google Play-en; asztali gépen: mattermost.com/download, vagy egyszerűen a böngészőben a chat.majomrag.olab.hu cím), jelentkezz be a saját fiókoddal, és a OkosRAG bot-fiókkal DM-ben bármikor kérdezhetsz — csatornákban @OkosRAG megemlítésre válaszol. Rákérdezésre először egy "Gondolkodom…" üzenetet ír, majd azt szerkeszti át a végleges válaszra. Ugyanazt a tudásbázist és ugyanazt a motort (Gemini/Claude, amit a portál Beállítások fülén beállítottak) használja, mint a portál Kérdezz felülete — nincs két külön "agy". Jogosultság: 1:1 DM-ben a saját portál-szerepeddel válaszol; egy privát csoportban/csatornában csak akkor ad "Korlátozott" szintű infót, ha ott minden emberi tag szuperadmin, egyébként (és nyilvános csatornában mindig) csak "Központi" szintű adatból válaszol — attól függetlenül, ki kérdezett, mert ott mások is olvasják a választ.

2. Hogyan kérdezhetek rá a tudásbázisra — most

A) Webes portál (majomrag.olab.hu/mrag) — bejelentkezés után:

B) MCP-kompatibilis AI kliens — pl. Claude Desktop, Claude Code, vagy claude.ai "remote connector" a majomrag.olab.hu/mcp végponton, hozzáférési tokennel. Ez a mai napig csak a központi tudásbázist látja, személyes dokumentumokat nem (mert nincs hozzá bejelentkezett portál-felhasználó kontextus).

Beállítás Claude-dal:
  1. Nyisd meg a Coolify UI-t → Applications → aios-rag-mcp → Environment variables → másold ki a MCP_BEARER_TOKEN értéket.
  2. Claude Desktop / claude.ai-ban add hozzá remote MCP connectorként: URL = https://majomrag.olab.hu/mcp, Authorization header = Bearer <token>.
  3. Ezután Claude-tól kérdezhetsz a cég dokumentumairól — a search_knowledge_base eszközt fogja használni.
Gemini 2.5 Flash — élesben fut a portál Kérdezz fülén:

Költség-optimalizálás miatt a portál a Claude-előfizetés helyett egy saját kiszolgáló Gemini 2.5 Flash API-hívását használja (ingyenes limitig). Mivel a Gemini API ingyenes szintje esetén Google a beküldött adatokat modellfejlesztésre használhatja, a rendszer minden dokumentum-darabot előszűr, mielőtt kiküldi. Ez egy tudatos, elfogadott kockázat — ld. lent a döntés indoklását.

3. Hogyan lesz egy dokumentumból kereshető adat?

Amikor egy dokumentum bekerül a rendszerbe (jelenleg kézzel/scriptből, később n8n-es automatikus behúzással), ez történik vele:

1
BeérkezésA dokumentum szövege (jelenleg egy szöveges mező) bekerül a feldolgozó folyamatba — forrás és cím megjelölésével.
2
Darabolás (chunking)Hosszú dokumentumnál a szöveg kisebb, kb. néhány bekezdésnyi darabra bomlik — így a keresés pontosabb, nem az egész dokumentumot, hanem a releváns részt találja meg.
3
Vektorizálás (embedding)Minden darab szövegét egy lokálisan futó AI-modell (Ollama, nomic-embed-text) egy 768 számból álló vektorrá alakítja. A hasonló jelentésű szövegek vektora közel esik egymáshoz — ez teszi lehetővé a "jelentés szerinti" keresést, nem csak kulcsszavas egyezést.
4
TárolásA szöveg, a vektor, a forrás és egyéb metaadat egy Postgres adatbázisban landol, a pgvector bővítménnyel — ez egy speciálisan vektorokra optimalizált keresőindexet (HNSW) tart fenn.
5
KeresésAmikor kérdés érkezik, a kérdés szövege is átmegy ugyanazon a vektorizáláson, majd az adatbázis megkeresi a hozzá legközelebb eső dokumentum-darabokat ("cosine similarity" alapján).
6
VálaszadásA legjobban egyező darabokat egy nagy nyelvi modell (jelenleg Claude, az MCP-n keresztül) megkapja kontextusként, és ebből fogalmaz emberi választ a kérdésre.
Élesben: minden dokumentum-darabhoz tartozik egy "effektív dátum" (a dokumentum saját időbélyege, ha van megadva, különben a feltöltés ideje). A keresési rangsor 85% szemantikai hasonlóság + 15% frissesség-súllyal rendez, és a Kérdezz felület a nagy nyelvi modellnek is megadja minden forrás dátumát, explicit utasítással: ha két forrás ellentmond egymásnak, a frissebbet vegye figyelembe, és jelezze is ezt a válaszban. Teszteltem: egy 2020-as és egy 2026-os, egymásnak ellentmondó dokumentumnál a rendszer helyesen a frissebbre hivatkozva válaszolt.

WooCommerce szinkron (majomkenyer.hu) — PPC-elemzéshez

Az Integrációk fülön beállított WooCommerce-hozzáféréssel a rendszer be tudja húzni az áruház termékeit és rendeléseit a tudásbázisba, hogy a Kérdezz felület PPC-kampány-elemzéshez is tudjon válaszolni ("melyik vásárló mekkora összegből milyen rendelést adott le" jellegű kérdésekre).

Láthatóság: "Központi", minden bejelentkezett usernek — a rendelési adatok valódi ügyfél-PII-t (név, email, telefon, cím) tartalmaznak, de a projekt tudatos döntése (2026-07-15), hogy ez cégen belül nem számít érzékenynek, ezért bárki (portálon vagy OkosRAG-n keresztül Mattermost-ban) kérdezhet konkrét rendelésekre/vevőkre is. Ez eltér a Gmail-szinkrontól, ami továbbra is Korlátozott (csak szuperadmin) — ld. lent és a 4. pontot.

Gmail / Google Workspace szinkron (@mokyen.com, @majomkenyer.hu)

Egy dedikált, csak-olvasási jogú Google service account (domain-wide delegation) olvassa be a céges postafiókokat, hogy a Kérdezz felület tartalmi ("volt-e ilyen tárgyú emailünk") és statisztikai ("hány emailt küldött X Y-nak") kérdésekre is tudjon válaszolni.

Tárolás módja — miért nem tudott korábban összesítő kérdésekre válaszolni

A vektor-alapú keresés (RAG) a "leginkább hasonló szöveg-darabokat" adja vissza egy kérdésre — ez remek "miről szól ez a dokumentum" kérdésekhez, de szerkezetileg alkalmatlan összesítésre ("hány rendelés volt a héten", "mennyi az átlag kosárérték egy hónapban"): nem tud számolni/összegezni egy teljes adathalmazon, csak néhány "hasonló" darabot mutat.

Ezért minden connectornál (elsőként a WooCommerce-nél) beállítható a Tárolás módja (Integrációk fül, szuperadmin):

"Tábla" módban a Kérdezz motor (jelenleg Gemini) három fix, biztonságos "eszközt" hívhat, ha a kérdés ezt igényli: rendelés-statisztika (darabszám, bevétel, átlag kosárérték egy időszakra), top termékek (mennyiség/bevétel szerint) és konkrét rendelések listája (pl. "utolsó 3 rendelés" — ez más, mint az összesítés, mert tételes adatot ad, nem darabszámot). Ezek nem szabad SQL-t generálnak — fix, paraméterezett lekérdezések, amit a modell csak dátum-szűrővel hívhat meg, sosem szabad szöveggel. Ez a mechanizmus a sablon minden jövőbeli connectorhoz (pl. Gmail: email-darabszám, gyakoriság egy partnerrel).

Összetett kérésekhez (adatlekérés + email) az eszközök láncolhatók: egy kérdésen belül a modell akár több eszközt is hívhat sorban — pl. előbb lekéri az utolsó 3 rendelést, majd azzal az adattal tölti ki a draft_email-t. Ez max. 4 lépésig mehet egy kérdésen belül; ha ennél is összetettebb lenne, inkább bontsd szétebb, egyszerűbb kérdésekre.
Tárolt adat + automatikus frissítés, nem élő API-hívás minden kérdésnél: egy összesítő kérdés (pl. "mennyi volt az átlag kosárérték egy hónapban") úgyis az adott időszak összes rendelését kellene átnézze — ez a WooCommerce API-n élőben lassabb és a bolt leállásának is kiszolgáltatott lenne. Ezért a tárolt táblákat használja, de ha a legutóbbi frissítés 20 percnél régebbi, egy gyors, csak-a-változásokat-lekérő frissítést futtat a válasz előtt — így a friss kérdések sem mutatnak órákkal elmaradt adatot.

A Kérdezz felület egy másik, hasonló elven működő eszközt is használ: ha a kérdés valójában egy email megírására vonatkozik (pl. "holnap emailezd meg X-et, hogy…"), felismeri, és az Email fülön nyit egy előre kitöltött vázlatot (a relatív időpontot pontos dátummá alakítva) — a kiküldés ugyanúgy emberi jóváhagyáshoz kötött, mint a kézzel írt emaileknél. Hasonlóan, egy nyomdai/grafikai kép-generáláshoz szükséges promptot is meg tud írni (a márka-stílus és korábbi grafikai anyagok alapján) — nem képet generál, csak egy kimásolható promptot egy külső kép-generáló AI-hoz.

Motor-független eszközök: ugyanezek az eszközök (rendelés-statisztika/lista, email-vázlat, kép-prompt) Claude (helyi, előfizetéses) motorral is működnek, nem csak Geminivel — a Claude Code CLI saját, egyszer-használatos MCP-kapcsolatot kap vissza a szerverre, a kérdező felhasználóhoz kötve. Ha a motort a Beállítások fülön átváltod, ugyanaz a képességi kör marad, csak más LLM dönt a háttérben.

4. Biztonsági alapelvek

Szerepkörök összefoglalva — ki mit lát

Csak kétféle szerepkör van: munkatárs (user) és szuperadmin. Ugyanez a két szint érvényes a portálon ÉS a Mattermost-beli OkosRAG-n keresztül is — nincs külön, Mattermost-specifikus jogosultsági rendszer.

SzerepkörPortálonMattermost / OkosRAG-n keresztül
Munkatárs (user) Kérdezz/keresés: Központi tudásbázis (mindenki adata, ide tartozik 2026-07-15 óta a WooCommerce/webshop adat is) + saját Személyes doksijai. Nem éri el a Korlátozott (email) tartalmat/eszközöket. A Dokumentumok fülön (lista) viszont 2026-07-23 óta csak a SAJÁT feltöltéseit látja (nem másokét is, még a Központi láthatóságúakat sem) — ez csak a lista-nézetet szűkíti, a keresésben/válaszban a mások Központi doksijai továbbra is elérhetők neki. Nincs hozzáférése a Felhasználók/Beállítások/🤖 OkosRAG szerint (Folyamatok, Emberek/Szerepkörök) fülekhez. DM-ben a saját portál-szerepe szerint válaszol (Központi + saját Személyes). Csoportos/publikus csatornában mindig csak Központi szintű adatot kap — akkor is, ha a csoportban van szuperadmin is, mert ott más is olvashatja a választ.
Szuperadmin Minden a munkatárs-szintből, PLUSZ a Korlátozott (email) tartalom/eszközök, és a Felhasználók/Beállítások/🤖 OkosRAG szerint fülek (felhasználó-kezelés, motorváltás, folyamatábra- és szervezeti-ábra-generálás). A Dokumentumok fülön (lista) mindenki feltöltését látja, nem csak a saját magáét — ez a szuperadmin egyetlen kivétele a fenti "csak saját feltöltés" listázási szabály alól. DM-ben teljes hozzáférés, a Korlátozott adat is. Csoportban/privát csoportos üzenetben (Mattermost "group message") csak akkor ad Korlátozott szintű választ, ha a beszélgetés MINDEN emberi tagja szuperadmin — ha akár egy sima munkatárs is jelen van, Központi-only. Publikus csatornában mindig Központi-only, függetlenül a taglistától (mert oda bárki beléphet később).
Mattermost-fiók összekötése a portál-fiókkal: a OkosRAG a kérdező Mattermost-email címe alapján ismeri fel, melyik portál-fiókhoz (és így melyik szerepkörhöz) tartozik — ezt a Felhasználók fülön (szuperadmin) kell beállítani minden usernél (kattintás az email-cellára). Ha egy Mattermost-user emailje nincs összekötve egy portál-fiókkal, a OkosRAG a legszűkebb, biztonságos alapértelmezést használja (Központi-only, mintha sima, nem-azonosított user kérdezne).

Döntés (2026-07-07): Gemini elfogadva érzékeny adatra is, előszűréssel

A projekt úgy döntött, hogy a Gemini API-t (free tier) használjuk érzékeny/céges tartalomra is, de előfeldolgozó szűrővel a kiküldés előtt. Megépített kétrétegű megoldás:

A
Strukturált szűrő (regex)Gyors, determinisztikus mintaillesztés: jelszó-szerű string, API kulcs formátumok, bankkártyaszám, IBAN, magyar adószám (8-1-2 számjegy), magyar bankszámlaszám, magyar telefonszám (+36/06) — ez a "könnyű" eseteket biztosan elkapja, mielőtt a szabad szöveg egyáltalán eljutna a következő réteghez.
B
Lokális LLM-es szűrő (Ollama, a szerveren belül marad)Egy a szerveren futó, kifelé sosem küldött modell átolvassa a már regex-szűrt szabad szöveget, és kigyomlálja/kitakarja, amit érzékenynek ítél (pl. "ez egy fizetésről szóló bekezdés" jellegű felismerés) — csak a megtisztított szöveg megy ki a Gemini API-nak.
Fontos korlát, amit el kell fogadni: ez a két réteg együtt is csökkenti, nem garantálja nullára a kockázatot — egy szabadszöveges, mintát nem követő érzékeny mondat átcsúszhat. Ezért ajánlott egy kézi "sosem küldhető ki" jelölő mező is minden dokumentumon/darabon, amit a feltöltő vagy admin explicit be tud kapcsolni — ez egy kemény, szoftveres véletlentől nem függő védőháló a legérzékenyebb tartalmakra. Ez a szűrő maga még nincs megépítve — tervezési döntés, a következő fejlesztési kör része lesz.

5. Tervezett funkciók — még nem élnek

Az alábbiak megbeszélés/tervezés alatt állnak, jelenleg semelyik nincs megépítve. Ez a lista él, ahogy a projekt halad.

Elvetve: Bitrix24 CRM bekötés — a free csomag nem engedi a fejlesztői API-t/MCP-t, a fizetős upgrade nem opció. Kézi CSV-export+feltöltés maradt volna workaroundként, ezt sem választottuk. Facebook Messenger (személyes/csoportos) bekötés is elvetve — ToS-sérő és technikailag instabil lenne.
Túlhaladott terv, ezért törölve a listából: "Csapat-chat (Slack)" — a csapat végül nem Slackre állt át, hanem a Mattermost self-hosted alternatívát választottuk, ami élesben megvalósult, ld. lent.
Elkészült azóta: dokumentumfeltöltés a portálon (fájlok — PDF/DOCX/kép-OCR —, annotációval, opcionális időbélyeggel, feldolgozás-státusszal, feltöltő névvel, újrafeltöltéskor automatikus duplikátum-csere), személyes/központi/korlátozott dokumentum-elkülönítés, weboldal-import (crawl), recency-súlyozott rangsorolás, Integrációk fül + WooCommerce termék/rendelés-szinkron (2026-07-15 óta Központi láthatósággal, mindenki kérdezheti — PPC-elemzéshez, RAG/Tábla/Mindkettő tárolás-móddal + automatikus friss-ha-régi frissítéssel + rendelés-statisztika/top-termékek eszközök az összesítő kérdésekhez), Gmail/Google Workspace szinkron (@mokyen.com + @majomkenyer.hu, garantáltan csak-olvasás, automatikus postafiók-felismerés, RAG + email-statisztika/lista eszközök, Korlátozott láthatósággal), választható Kérdezz-motor (Gemini vagy a cégvezető Claude-előfizetése, mindkettő ugyanazokat az eszközöket éri el — motor-független működés) + napi használat-becslés a Beállítások fülön, Email fül (saját SMTP/Brevo/SendGrid/Resend beállítással, jóváhagyás-köteles + időzíthető küldéssel, óránkénti limittel, teszt-email gombbal, chat-ből induló email-vázlat felismeréssel), nyomdai kép-generáláshoz prompt-író eszköz (Kérdezz-ben és önálló mini-eszközként is), Egyedi funkciók fül (emberi feladatok belépési figyelmeztetéssel + ismétlődő AI-feladatok, mindig emberi jóváhagyást igénylő review-sorral — PPC-áttekintés-alap most tesztelés alatt), 👍/👎 visszajelzés a Kérdezz válaszokra, Mattermost csapat-chat + OkosRAG bot (self-hosted, chat.majomrag.olab.hu, DM-ben mindig / csatornában @OkosRAG említésre válaszol, ugyanazt a tudásbázist/motort használja mint a portál, tagság-alapú jogosultsággal).