Jak používat RAGFlow: Praktický průvodce pro vytváření spolehlivých RAG aplikací
Pokud jste se pokoušeli vytvořit systém generování rozšířený o načítání (RAG), pravděpodobně jste narazili na klasické problémy: halucinace, nespolehlivé načítání, pomalé pipeline a chaotické předzpracování dokumentů. RAGFlow vstupuje do hry jako komplexní nástroj pro workflow, který vám pomáhá řídit příjem dokumentů, dělení na bloky, vektorizaci, načítání a generování s větší kontrolou a možností sledování.
Tento průvodce přistupuje k problematice prakticky a zaměřuje se na řešení. Projdeme si čisté nastavení, ukážeme vám, jak používat RAGFlow pro reálné dokumenty, a podělíme se o vzory, které skutečně snižují halucinace a zlepšují kvalitu odpovědí.
Co je RAGFlow a proč ho používat?
RAGFlow je systém pro budování pipeline generování rozšířeného o načítání. V typickém nastavení RAG:
- Přijímáte dokumenty (PDF, webové stránky, slidy, kód atd.)
- Dělíte obsah na bloky pro účely načítání
- Vkládáte bloky do vektorů pro sémantické vyhledávání
- Načítáte top‑k relevantních bloků v době dotazu
- Generujete zdůvodněnou odpověď pomocí LLM
RAGFlow přidává přednastavené výchozí hodnoty, bloky workflow a ochranné prvky, abyste mohli rychleji iterovat a dodávat spolehlivější aplikace. Je to obzvláště užitečné, pokud chcete:
- Konzistentní dělení na bloky a metadata: Lepší načítání začíná lepšími bloky.
- Vyměnitelné embeddingy a LLM: Měňte OpenAI, lokální modely nebo podnikové koncové body.
- Hodnocení a ochranné prvky: Měřte kvalitu načítání a snižte halucinace.
- Nasazitelné pipeline: Přesuňte se z notebooku do produkce s menším počtem přepisů.
Rychlý start: Od nuly k funkční pipeline RAGFlow
Níže je uveden minimální, komplexní workflow, který si můžete přizpůsobit. I když se vaše prostředí liší, sekvence a ochranné prvky jsou přenositelné.
1) Připravte si prostředí
- Vytvořte
.env se svými klíči:
OPENAI_API_KEY (nebo jiný poskytovatel LLM)
EMBEDDINGS_API_KEY (pokud používáte samostatného poskytovatele)
VECTOR_DB_URL (např. Pinecone, Weaviate, Qdrant nebo lokální)
- Nastavte adresář projektu, např.
ragflow-project/ se složkami:
data/raw/ (zdrojové soubory)
data/processed/ (vyčištěné bloky)
configs/ (YAML/JSON pro nastavení pipeline)
eval/ (datasety a reporty)
2) Přijímejte dokumenty s čistými metadaty
Dobrá metadata = lepší načítání. Normalizujte názvy, autory, data a zdroje.
- Převeďte PDF a slidy na text pomocí robustního parseru
- Zachovejte strukturu: nadpisy, seznamy, bloky kódu a tabulky
- Připojte metadata ke každému bloku:
source, section, page, timestamp, version
Tip: Uchovávejte doc_id a chunk_id pro podporu citací a opětovného příjmu.
3) Zvolte strategii dělení na bloky, která odpovídá vašemu obsahu
Dělení na bloky silně ovlivňuje kvalitu načítání a latenci.
- Pro narativní dokumenty: sémantické dělení na bloky (rozdělení podle nadpisů/odstavců)
- Pro technické dokumenty: použijte hybridní dělení na bloky (sémantické + pevné okno)
- Pro kód: rozdělujte podle funkce/třídy s malým posuvným oknem
Doporučená nastavení pro začátek:
chunk_size: 600–1 000 tokenů
chunk_overlap: 50–100 tokenů
max_depth: omezte vnořené sekce na 2–3 úrovně, abyste se vyhnuli fragmentaci
4) Vyberte embeddingy a vektorové úložiště
- Začněte se silným univerzálním embeddingovým modelem (např. text‑embedding‑3‑large nebo moderní lokální model). Pokud je klíčové soukromí, zvažte self‑hosted embeddingy.
- Použijte vektorovou databázi, která podporuje:
- Hybridní vyhledávání (husté + klíčové slovo)
- Dávkové upserty a indexové metriky
Nastavení indexu pro testování:
top_k = 5–10 pro počáteční načítání
similarity_metric = cosine (nebo dot pro určité modely)
- Povolte maximální okrajovou relevanci (MMR) pro snížení redundance
5) Orchestrace načítání
Implementujte dvoufázový retriever:
- Rychlé vyvolání kandidátů
- Hybridní vyhledávání (BM25 + husté)
- Velké
top_k (např. 30–50)
- Cross‑encoder reranker nebo bodování založené na LLM
- Redukce na konečné
top_k (např. 5–8)
Přidejte filtry metadat: source:"handbook" AND section:"benefits" AND version:"v2" pro omezení odpovědí na důvěryhodné dokumenty.
6) Zdůvodněné generování se strukturou
Váš prompt by měl vynucovat citace a odmítnutí, pokud jsou důkazy slabé.
Příklad systémového promptu:
Jste pečlivý asistent. Odpovídejte POUZE informacemi podloženými poskytnutým kontextem.
- Citujte zdroje inline jako [doc_id:chunk_id].
- Pokud je kontext nedostatečný, řekněte: „V poskytnutých dokumentech není dostatek informací.“
- Nevymýšlejte si fakta.
Šablona uživatelského promptu:
Otázka: {query}
Kontext:
{top_chunks}
Instrukce:
- Nejprve uveďte stručnou odpověď, poté podrobnosti.
- Po každém faktickém tvrzení uveďte citace.
7) Přidejte ochranné prvky pro snížení halucinací
- Kontrola odpověditelnosti: Před generováním se zeptejte malého modelu: „Existují v načtených blocích přímé důkazy?“ Pokud ne, vraťte objasňující otázku.
- Zásada cituj‑nebo‑mlč: Blokujte výstupy, které postrádají citace.
- Filtry toxicity/PII pro podnikový obsah.
8) Hodnocení a neustálé zlepšování
Vytvořte eval/ sadu s:
- 50–200 skutečných uživatelských otázek
- Základní pravdivé odpovědi (nebo důvěryhodné reference)
- Očekávané zdroje (ID dokumentů), kde je to relevantní
Měřte:
- Míra úspěšnosti načítání (zobrazí se zlatý zdroj v top‑k?)
- Věrnost odpovědi (tvrzení podložená citacemi)
Iterujte na:
- Velikost a překrytí bloku
- Volba embeddingového modelu
- Struktura a omezení promptu
Kompletní pipeline RAGFlow: Příklad konfigurace
Níže je uvedena koncepční konfigurace, kterou si můžete přizpůsobit pro svůj toolchain. Podle potřeby nahraďte názvy poskytovatelů.
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
Jak používat RAGFlow pro různé typy obsahu
Produktové manuály a příručky
- Preferujte sémantické dělení na bloky s jasnými hranicemi sekcí
- Připojte verzi a datum platnosti, abyste zabránili zastaralým odpovědím
- Používejte striktní filtry: vždy vyžadujte
version = latest
Znalostní báze a FAQ
- Používejte menší bloky (400–600 tokenů) pro přesné odpovědi
- Zvyšte fond kandidátů a spoléhejte se na přeřazení, abyste našli přesný úryvek
- Automaticky generujte kanonické páry otázek a odpovědí, abyste zvýšili vyvolání pomocí lexikálního vyhledávání
Technické dokumenty a kód
- Dělte podle funkce/modulu a zahrňte importní grafy do metadat
- Povolte načítání rodič‑dítě: vraťte funkci + její kontext docstringu
- Použijte reranker s ohledem na kód pro upřednostnění relevantních symbolů
Právní záležitosti a dodržování předpisů
- Vyžadujte citace na úrovni odstavce
- Přidejte logiku odmítnutí pro neúplný kontext
- Udržujte zlatou sadu zdrojů schválených regulátorem v samostatném indexu
Vzory promptů, které skutečně fungují
- Odpovězte a poté citujte: Krátká odpověď nahoře; citace inline za každým tvrzením
- Řetězec načítání: Požádejte model, aby nejprve shrnul každý blok a poté syntetizoval
- Přepsání dotazu: Rozšiřte uživatelské dotazy o synonyma a oborové termíny před načítáním
- Kontrastní prompoty: „Vysvětlete, proč je možnost A lepší než B na základě kontextu.“ To vynucuje použití důkazů
Příklad kroku přepsání dotazu:
Původní: "jaká je naše politika převodu PTO?"
Přepsané: "politika převodu placeného volna; převod dovolené; maximální hodiny; verze zásad nejnovější"
Sledovatelnost a zpětnovazební smyčky
- Zaznamenávejte, které bloky byly použity, jejich skóre a které byly ignorovány
- Zachyťte palce nahoru/dolů s krátkým odůvodněním; vraťte to zpět do ladění retrieveru
- Spouštějte týdenní regresní testy na vaší eval sadě před nasazením jakékoli změny modelu
Tahák pro ladění výkonu
- Pokud jsou odpovědi obecné: zvyšte
candidate_top_k a přidejte silnější reranker
- Pokud odpovědi postrádají podrobnosti: zmenšete velikost bloku; mírně zvyšte lexikální váhu
- Pokud se citace opakují ve stejném bloku: povolte MMR a zvyšte rozmanitost
- Pokud je latence vysoká: ukládejte embeddingy do mezipaměti, předem vypočítejte přepsání dotazů, použijte menší reranker
- Pokud náklady prudce stoupnou: snižte teplotu generování, zkraťte prompoty, zkuste menší LLM pro první průchod
Základní prvky zabezpečení a správy
- Šifrujte uložené vektory a redigujte citlivá pole v metadatech
- Používejte řízení přístupu pro každý index; segmentujte podle týmu nebo citlivosti dat
- Udržujte záznam o původu dat: URL zdroje dokumentu, kontrolní součet a časové razítko příjmu
Snímek případové studie: Od chaotických PDF k důvěryhodným odpovědím
Tým podpory přijal 1 200 stran PDF. Počáteční načítání bylo nekonzistentní; agenti botovi nedůvěřovali. Po přechodu na sémanticko‑hybridní dělení na bloky (800 tokenů, 80 překrytí), povolení cross‑encoder rerankingu a vynucení cite‑or‑silence vzrostla míra úspěšnosti top‑k ze 62 % na 89 % a adopce agentů se zdvojnásobila. Klíčem nebyl větší LLM – byly to čistší bloky a přísnější načítání.
Tip pro nástroje: Rychlá iterace s postranním panelem AI
Stojí za zmínku: pokud experimentujete s prompoty a úryvky načítání napříč mnoha dokumenty, asistent AI, který vám umožní chatovat přes PDF, webové stránky a kód přímo z prohlížeče, může urychlit iteraci. Mimochodem, Sider.AI (https://sider.ai/) nabízí postranní panel AI, který vám umožní vkládat kontext ze stránky, na které se nacházíte, shrnovat a rychle upřesňovat prompoty. Je to užitečné pro prototypování RAG promptů a testování kvality bloku před formalizací pipeline. Řešení problémů s RAGFlow: Rychlé opravy
- „Model je si jistý, ale mýlí se.“
- Povolte kontrolu odpověditelnosti; snižte teplotu; vyžadujte citace
- „Vyhledávání vrací téměř duplikáty.“
- Zapněte MMR; přidejte reranker; snižte překrytí bloku
- „Latence prudce stoupá ve špičce.“
- Dávkové embeddingy; ukládejte přepsání dotazů do mezipaměti; použijte streamované generování
- „Stále se zobrazují staré zásady.“
- Filtrujte podle
version = latest; znehodnoťte nebo odstraňte zastaralé dokumenty
Další kroky: Zajistěte spolehlivost RAGFlow v produkci
- Začněte s malým, důvěryhodným korpusem; nejprve zdokonalte dělení na bloky a filtry
- Přidejte reranker před upgradem LLM
- Vytvořte eval sadu se 100 otázkami a sledujte míru úspěšnosti týdně
- Zapojte uživatelskou zpětnou vazbu pro neustálé ladění načítání
Klíčové poznatky:
- Kvalita načítání je pro RAG důležitější než velikost modelu
- Dělení na bloky, metadata a přeřazení jsou vaše hlavní páky
- Ochranné prvky, jako je cite‑or‑silence, dramaticky zvyšují důvěru
- Investujte brzy do sledovatelnosti a hodnocení
Díky těmto postupům se RAGFlow stává spolehlivou páteří pro zdůvodněné odpovědi – ať už poháníte help bota, vývojářského kopilota nebo interního asistenta znalostí.
FAQ
Q1: Co je RAGFlow a jak ho používám pro dokumentové QA?
RAGFlow je framework pro budování pipeline generování rozšířeného o načítání. Přijímáte, dělíte na bloky, vkládáte, načítáte a generujete odpovědi s citacemi, abyste snížili halucinace a zlepšili přesnost.
Q2: Jak mám dělit dokumenty na bloky v RAGFlow?
Použijte sémantické nebo hybridní dělení na bloky s bloky o velikosti 600–1 000 tokenů a překrytím 50–100 tokenů. Pro kód dělte podle funkce nebo třídy a zahrňte okolní kontext.
Q3: Která vektorová databáze funguje nejlépe s RAGFlow?
Vyberte úložiště, které podporuje hybridní vyhledávání, filtry metadat a přeřazení – Qdrant, Weaviate, Pinecone nebo lokální možnost jsou běžné volby.
Q4: Jak zabráním halucinacím v aplikaci RAGFlow?
Vynucujte zásadu cituj‑nebo‑mlč, přidejte kontrolu odpověditelnosti před generováním a udržujte přísné prompoty ohledně používání pouze načteného kontextu.
Q5: Jaké metriky bych měl sledovat pro hodnocení RAGFlow?
Monitorujte míru úspěšnosti načítání, věrnost odpovědi, latenci a cenu za 100 dotazů a udržujte malou, ale reprezentativní sadu hodnocení.