Hogyan használd a RAGFlow-t: Gyakorlati útmutató megbízható RAG alkalmazások készítéséhez
Ha próbáltál már retrieval-augmented generation (RAG) rendszert építeni, valószínűleg beleütköztél a klasszikus problémákba: hallucinációk, megbízhatatlan lekérdezés, lassú pipeline-ok és kusza dokumentumfeldolgozás. A RAGFlow egy end-to-end munkafolyamat eszköz, amely segít a dokumentumok betöltésének, darabolásának, vektorizálásának, lekérdezésének és generálásának vezénylésében nagyobb kontrollal és megfigyelhetőséggel.
Ez az útmutató gyakorlati és megoldásközpontú megközelítést alkalmaz. Végigvezetünk egy tiszta beállításon, megmutatjuk, hogyan használhatod a RAGFlow-t valódi dokumentumokhoz, és megosztunk olyan mintákat, amelyek ténylegesen csökkentik a hallucinációkat és javítják a válaszok minőségét.
Mi az a RAGFlow és miért érdemes használni?
A RAGFlow egy rendszer a Retrieval-Augmented Generation pipeline-ok építéséhez. Egy tipikus RAG beállításban a következők történnek:
- Dokumentumok betöltése (PDF-ek, weboldalak, diák, kód stb.)
- A tartalom darabolása lekérdezhető egységekre
- A darabok beágyazása vektorokba a szemantikus kereséshez
- A top‑k releváns darabok lekérdezése kérdésfeltevéskor
- Egy megalapozott válasz generálása egy LLM segítségével
A RAGFlow véleményes alapértelmezéseket, munkafolyamat blokkokat és korlátokat ad hozzá, így gyorsabban iterálhatsz és megbízhatóbb alkalmazásokat szállíthatsz. Különösen hasznos, ha a következőket szeretnéd:
- Konzisztens darabolás és metaadatok: A jobb lekérdezés jobb darabokkal kezdődik.
- Plug-in beágyazások és LLM-ek: Cseréld le az OpenAI-t, a helyi modelleket vagy a vállalati végpontokat.
- Értékelések és korlátok: Mérd a lekérdezés minőségét és csökkentsd a hallucinációkat.
- Telepíthető pipeline-ok: Lépj tovább a notebook-tól a gyártásig kevesebb újraírással.
Gyorsindítás: A nulláról egy működő RAGFlow pipeline-ig
Az alábbiakban egy minimális, end‑to‑end munkafolyamat látható, amelyet adaptálhatsz. Még ha a környezeted eltér is, a sorrend és a korlátok hordozhatók.
1) Készítsd elő a környezeted
- Hozzon létre egy
.env fájlt a kulcsaidhoz:
OPENAI_API_KEY (vagy egy másik LLM szolgáltató)
EMBEDDINGS_API_KEY (ha külön szolgáltatót használsz)
VECTOR_DB_URL (pl. Pinecone, Weaviate, Qdrant vagy helyi)
- Állíts be egy projekt könyvtárat, pl.
ragflow-project/ a következő mappákkal:
data/processed/ (tisztított darabok)
configs/ (YAML/JSON a pipeline beállításokhoz)
eval/ (adatkészletek és jelentések)
2) Dokumentumok betöltése tiszta metaadatokkal
Jó metaadatok = jobb lekérdezés. Normalizáld a címeket, a szerzőket, a dátumokat és a forrásokat.
- Konvertáld a PDF-eket és a diákat szöveggé egy robusztus parserrel
- Őrizd meg a struktúrát: címsorok, listák, kódblokkok és táblázatok
- Csatolj metaadatokat minden darabhoz:
source, section, page, timestamp, version
Tipp: Tarts egy doc_id és chunk_id azonosítót a hivatkozások és az újra betöltés támogatásához.
3) Válassz egy darabolási stratégiát, amely illeszkedik a tartalmadhoz
A darabolás erősen befolyásolja a lekérdezés minőségét és a késleltetést.
- Narratív dokumentumokhoz: szemantikus darabolás (címsorok/bekezdések szerinti felosztás)
- Technikai dokumentumokhoz: használj hibrid darabolást (szemantikus + fix ablak)
- Kódhoz: darabolj függvény/osztály szerint egy kis csúszóablakkal
Ajánlott beállítások a kezdéshez:
chunk_size: 600–1000 token
chunk_overlap: 50–100 token
max_depth: korlátozd a beágyazott szakaszokat 2–3 szintre a töredezettség elkerülése érdekében
4) Válassz beágyazásokat és egy vektor tárolót
- Kezdd egy erős, általános célú beágyazási modellel (pl. text‑embedding‑3‑large vagy egy modern helyi modellel). Ha a magánélet kulcsfontosságú, fontold meg a saját hosztolású beágyazásokat.
- Használj egy vektor DB-t, amely támogatja a következőket:
- Hibrid keresés (dense + kulcsszó)
- Szűrők (metaadat korlátozások)
- Batch upsert-ek és index metrikák
Tesztelendő indexbeállítások:
top_k = 5–10 a kezdeti lekérdezéshez
similarity_metric = cosine (vagy dot bizonyos modellekhez)
- Engedélyezd a max marginal relevance (MMR) a redundancia csökkentése érdekében
5) Lekérdezés vezénylése
Implementálj egy kétlépcsős lekérdezőt:
- Hibrid keresés (BM25 + dense)
- Cross‑encoder újrarangsoroló vagy LLM‑alapú pontozás
- Csökkentsd a végső
top_k (pl. 5–8)
Adj hozzá metaadat szűrőket: source:"handbook" AND section:"benefits" AND version:"v2" a válaszok megbízható dokumentumokra korlátozásához.
6) Megalapozott generálás struktúrával
A promptodnak érvényesítenie kell a hivatkozásokat és az elutasítást, ha a bizonyíték gyenge.
Példa rendszer prompt:
Óvatos asszisztens vagy. CSAK a megadott kontextus által támogatott információkkal válaszolj.
- Hivatkozz a forrásokra soronként [doc_id:chunk_id] formátumban.
- Ha a kontextus nem elegendő, mondd azt, hogy "Nincs elég információ a megadott dokumentumokban."
- Ne találj ki tényeket.
Felhasználói prompt sablon:
Kérdés: {query}
Kontextus:
{top_chunks}
Utasítások:
- Először adj egy tömör választ, majd részleteket.
- Minden tényszerű állítás után tüntess fel hivatkozásokat.
7) Adj hozzá korlátokat a hallucinációk csökkentése érdekében
- Válaszolhatóság ellenőrzése: Generálás előtt kérdezz meg egy kis modellt: „Van közvetlen bizonyíték a lekérdezett darabokban?” Ha nem, adj vissza egy pontosító kérdést.
- Hivatkozás vagy hallgatás szabályzat: Tiltsd le a hivatkozások nélküli kimeneteket.
- Toxicitás/PII szűrők vállalati tartalomhoz.
8) Értékelés és folyamatos fejlesztés
Hozzon létre egy eval/ készletet a következőkkel:
- 50–200 valódi felhasználói kérdés
- Helyes válaszok (vagy megbízható hivatkozások)
- Várható források (dokumentum azonosítók), ahol alkalmazható
Mérd:
- Lekérdezési találati arány (megjelenik-e az aranyforrás a top‑k-ban?)
- Válasz hűség (hivatkozással alátámasztott állítások)
- Késleltetés (p95 end‑to‑end)
- Költség (100 lekérdezésenként)
Iterálj a következőn:
- Beágyazási modell választása
- Újrarangsoroló vs. magasabb top‑k
- Prompt struktúra és korlátozások
Egy teljes RAGFlow pipeline: Példa konfiguráció
Az alábbiakban egy koncepcionális konfiguráció látható, amelyet adaptálhatsz az eszközkészletedhez. Cseréld le a szolgáltatóneveket szükség szerint.
project: product-handbook-rag
io:
input_path: data/raw/
output_index: product-handbook-index
parsing:
pdf:
strategy: auto
keep_layout: true
extract_tables: true
markdown:
preserve_headings: true
chunking:
method: semantic_hybrid
target_tokens: 800
overlap_tokens: 80
windowing: 2
metadata:
fields: [doc_id, title, section, page, version, source]
embeddings:
provider: openai
model: text-embedding-3-large
vectorstore:
type: qdrant
url: ${VECTOR_DB_URL}
similarity: cosine
retrieval:
hybrid: true
lexical_weight: 0.35
semantic_weight: 0.65
candidate_top_k: 40
rerank:
enabled: true
model: bge-reranker-large
final_top_k: 7
generation:
llm: gpt-4o
temperature: 0.2
cite_or_silence: true
guardrails:
answerability_check: true
pii_filter: true
toxicity_filter: moderate
monitoring:
log_traces: true
latency_budget_ms: 3500
cost_budget_per_100: 1.25
Hogyan használd a RAGFlow-t különböző tartalomtípusokhoz
Termék kézikönyvek és útmutatók
- Előnyben részesítsd a szemantikus darabolást egyértelmű szakaszhatárokkal
- Csatolj verziót és érvényességi dátumot az elavult válaszok elkerülése érdekében
- Használj szigorú szűrőket: mindig követeld meg a
version = latest értéket
Tudásbázisok és GYIK-ek
- Használj kisebb darabokat (400–600 token) a pontos válaszokhoz
- Növeld a jelöltkészletet, és támaszkodj az újrarangsorolásra a pontos részlet megtalálásához
- Automatikusan generálj kanonikus K/V párokat a lekérdezés növelése érdekében a lexikai keresésen keresztül
Mérnöki dokumentumok és kód
- Darabolj függvény/modul szerint, és foglalj bele import gráfokat a metaadatokba
- Engedélyezd a szülő-gyermek lekérdezést: add vissza a függvényt + a hozzá tartozó docstring kontextust
- Használj kódtudatos újrarangsorolót a releváns szimbólumok prioritásához
Jogi és megfelelőségi
- Követeld meg a bekezdés szintű hivatkozásokat
- Adj hozzá elutasítási logikát a hiányos kontextushoz
- Tarts fenn egy aranyszabálynak megfelelő, szabályozó által jóváhagyott forráskészletet egy külön indexben
Prompt minták, amelyek ténylegesen működnek
- Válaszolj, majd hivatkozz: Rövid válasz felül; hivatkozások soronként minden állítás után
- Lekérdezési lánc: Kérd meg a modellt, hogy először foglalja össze az egyes darabokat, majd szintetizálja
- Lekérdezés átírása: Bővítsd a felhasználói lekérdezéseket szinonimákkal és szakterületekkel kapcsolatos kifejezésekkel a lekérdezés előtt
- Kontrasztív promptok: „Magyarázd el, hogy az A opció miért jobb, mint a B a kontextus alapján.” Ez bizonyítékhasználatra kényszerít
Példa lekérdezés-átírási lépésre:
Eredeti: "mi a PTO átviteli szabályzatunk?"
Átírás: "fizetett szabadság átviteli szabályzat; szabadság átgördítése; maximális óraszám; szabályzat verzió legfrissebb"
Megfigyelhetőség és visszacsatolási hurkok
- Naplózd, hogy mely darabokat használták fel, a pontszámaikat és melyeket hagytak figyelmen kívül
- Rögzítsd a hüvelykujj felfelé/lefelé mutató jelzéseket egy rövid indoklással; tápláld vissza a lekérdező hangolásába
- Futtass heti regressziós teszteket az értékelő készleteden, mielőtt bármilyen modellváltoztatást telepítenél
Teljesítményhangolási puska
- Ha a válaszok általánosnak tűnnek: növeld a
candidate_top_k értéket, és adj hozzá egy erősebb újrarangsorolót
- Ha a válaszokból hiányoznak a részletek: csökkentsd a darabméretet; enyhén növeld a lexikai súlyt
- Ha a hivatkozások ugyanazt a darabot ismétlik: engedélyezd az MMR-t, és növeld a sokféleséget
- Ha magas a késleltetés: gyorsítótárazd a beágyazásokat, számítsd ki előre a lekérdezés-átírásokat, használj kisebb újrarangsorolót
- Ha a költségek megugranak: vidd lejjebb a generálási hőmérsékletet, rövidítsd le a promptokat, próbálj ki egy kisebb LLM-et az első menetben
Biztonsági és irányítási alapelvek
- Titkosítsd a tárolt vektorokat, és takard el az érzékeny mezőket a metaadatokban
- Használj indexenkénti hozzáférés-vezérlést; szegmentálj csapat vagy adatok érzékenysége szerint
- Vezess adatvonal nyilvántartást: dokumentum forrás URL, ellenőrzőösszeg és betöltési időbélyeg
Esettanulmány pillanatkép: A kusza PDF-ektől a megbízható válaszokig
Egy támogatási csapat 1200 oldal PDF-et töltött be. A kezdeti lekérdezés következetlen volt; az ügynökök nem bíztak a botban. Miután átváltottak a szemantikus-hibrid darabolásra (800 token, 80 átfedés), engedélyezték a cross‑encoder újrarangsorolást, és érvényesítették a hivatkozás vagy hallgatás szabályt, a top‑k találati arány 62%-ról 89%-ra nőtt, és az ügynökök általi elfogadás megduplázódott. A kulcs nem egy nagyobb LLM volt – hanem a tisztább darabok és a szigorúbb lekérdezés.
Eszköz tipp: Gyors iteráció egy AI oldalsávval
Érdemes megjegyezni: ha promptokkal és lekérdezési részletekkel kísérletezel sok dokumentumban, egy AI asszisztens, amely lehetővé teszi a csevegést PDF-ek, weboldalak és kódok felett közvetlenül a böngészőből, felgyorsíthatja az iterációt. Egyébként a Sider.AI (https://sider.ai/) egy AI oldalsávot kínál, amely lehetővé teszi, hogy kontextust vonj be az éppen megtekintett oldalról, összefoglalj és gyorsan finomítsd a promptokat. Ez hasznos a RAG promptok prototípusának elkészítéséhez és a darabok minőségének teszteléséhez, mielőtt formalizálnád a pipeline-t. A RAGFlow hibaelhárítása: Gyors javítások
- „A modell magabiztos, de téved.”
- Engedélyezd a válaszolhatóság ellenőrzését; csökkentsd a hőmérsékletet; követeld meg a hivatkozásokat
- „A keresés közel azonos másolatokat ad vissza.”
- Kapcsold be az MMR-t; adj hozzá egy újrarangsorolót; csökkentsd a darabok átfedését
- „A késleltetés csúcsértéket ér el.”
- Batch beágyazások; gyorsítótárazd a lekérdezés-átírásokat; használj streaming generálást
- „Régi szabályzatok jelennek meg folyamatosan.”
- Szűrj a
version = latest értékre; értékeld le vagy temesd el az elavult dokumentumokat
Következő lépések: Tedd a RAGFlow-t megbízhatóvá a gyártásban
- Kezdd egy kis, megbízható korpusszal; tökéletesítsd először a darabolást és a szűrőket
- Adj hozzá egy újrarangsorolót az LLM frissítése előtt
- Építs egy 100 kérdéses értékelő készletet, és kövesd nyomon a találati arányt hetente
- Vezesd be a felhasználói visszajelzéseket a lekérdezés folyamatos hangolásához
Főbb tudnivalók:
- A lekérdezés minősége felülmúlja a modellméretet a RAG esetében
- A darabolás, a metaadatok és az újrarangsorolás a fő mozgatórugóid
- Az olyan korlátok, mint a hivatkozás vagy hallgatás drámaian növelik a bizalmat
- Fektess be korán a megfigyelhetőségbe és az értékelésbe
Ezekkel a gyakorlatokkal a RAGFlow a megalapozott válaszok megbízható gerincévé válik – akár egy súgóbothoz, egy fejlesztői pilótához vagy egy belső tudásasszisztenshez használod.
GYIK
Q1: Mi az a RAGFlow, és hogyan használhatom dokumentum QA-hoz?
A RAGFlow egy keretrendszer a retrieval-augmented generation pipeline-ok építéséhez. Betöltesz, darabolsz, beágyazol, lekérdezel és válaszokat generálsz hivatkozásokkal a hallucinációk csökkentése és a pontosság javítása érdekében.
Q2: Hogyan daraboljam a dokumentumokat a RAGFlow-ban?
Használj szemantikus vagy hibrid darabolást 600–1000 tokenes darabokkal és 50–100 tokenes átfedéssel. Kód esetén darabolj függvény vagy osztály szerint, és foglalj bele környező kontextust.
Q3: Melyik vektor adatbázis működik a legjobban a RAGFlow-val?
Válassz egy tárolót, amely támogatja a hibrid keresést, a metaadat szűrőket és az újrarangsorolást – a Qdrant, a Weaviate, a Pinecone vagy egy helyi opció mind gyakori választások.
Q4: Hogyan akadályozhatom meg a hallucinációkat egy RAGFlow alkalmazásban?
Vegyél fel egy hivatkozás vagy hallgatás szabályzatot, adj hozzá egy válaszolhatóság ellenőrzését a generálás előtt, és tartsd szigorúan a promptokat a csak lekérdezett kontextus használatával kapcsolatban.
Q5: Milyen metrikákat kell követnem a RAGFlow értékeléséhez?
Figyeld a lekérdezési találati arányt, a válasz hűségét, a késleltetést és a költséget 100 lekérdezésenként, és tarts fenn egy kicsi, de reprezentatív értékelő készletet.