Hoe RAGFlow te gebruiken: Een praktische handleiding voor het bouwen van betrouwbare RAG-apps
Als je hebt geprobeerd een retrieval-augmented generation (RAG) systeem te bouwen, ben je waarschijnlijk tegen de klassieke pijnpunten aangelopen: hallucinaties, onbetrouwbare retrieval, trage pipelines en rommelige document preprocessing. RAGFlow treedt op als een end-to-end workflow tool die je helpt bij het orkestreren van documentinname, chunking, vectorisatie, retrieval en generatie met meer controle en observeerbaarheid.
Deze handleiding hanteert een praktische en oplossingsgerichte aanpak. We doorlopen een schone setup, laten je zien hoe je RAGFlow kunt gebruiken voor echte documenten en delen patronen die daadwerkelijk hallucinaties verminderen en de antwoordkwaliteit verbeteren.
Wat is RAGFlow en waarom zou je het gebruiken?
RAGFlow is een systeem voor het bouwen van Retrieval-Augmented Generation pipelines. In een typische RAG-opstelling doe je het volgende:
- Documenten innemen (PDF's, webpagina's, slides, code, etc.)
- Content chunkeren in opvraagbare eenheden
- Chunks embedden in vectoren voor semantisch zoeken
- Top‑k relevante chunks ophalen op het moment van de vraag
- Een onderbouwd antwoord genereren met behulp van een LLM
RAGFlow voegt bevooroordeelde defaults, workflowblokken en guardrails toe, zodat je sneller kunt itereren en betrouwbaardere apps kunt leveren. Het is vooral handig als je het volgende wilt:
- Consistente chunking en metadata: Betere retrieval begint met betere chunks.
- Pluggable embeddings en LLM's: Wissel OpenAI, lokale modellen of enterprise endpoints.
- Evaluaties en guardrails: Meet de retrieval kwaliteit en verminder hallucinaties.
- Implementeerbare pipelines: Ga van notebook naar productie met minder herschrijvingen.
Snelle start: Van nul naar een werkende RAGFlow pipeline
Hieronder staat een minimale, end-to-end workflow die je kunt aanpassen. Zelfs als je omgeving anders is, zijn de volgorde en guardrails draagbaar.
1) Bereid je omgeving voor
- Maak een
.env met je keys:
OPENAI_API_KEY (of een andere LLM-provider)
EMBEDDINGS_API_KEY (als je een aparte provider gebruikt)
VECTOR_DB_URL (bijv. Pinecone, Weaviate, Qdrant, of lokaal)
- Stel een projectdirectory in, bijvoorbeeld
ragflow-project/ met mappen:
data/raw/ (bronbestanden)
data/processed/ (schoongemaakte chunks)
configs/ (YAML/JSON voor pipeline instellingen)
eval/ (datasets en rapporten)
2) Neem documenten in met schone metadata
Goede metadata = betere retrieval. Normaliseer titels, auteurs, datums en bronnen.
- Converteer PDF's en slides naar tekst met een robuuste parser
- Behoud de structuur: headings, lijsten, codeblokken en tabellen
- Voeg metadata toe aan elke chunk:
source, section, page, timestamp, version
Tip: Bewaar een doc_id en chunk_id om citaten en heropname te ondersteunen.
3) Kies een chunking strategie die past bij je content
Chunking heeft een sterke invloed op de retrieval kwaliteit en latency.
- Voor narratieve documenten: semantic chunking (splitsen op headings/paragrafen)
- Voor technische documenten: gebruik hybrid chunking (semantisch + vast venster)
- Voor code: chunk per function/class met een klein sliding window
Aanbevolen instellingen om mee te beginnen:
chunk_size: 600–1.000 tokens
chunk_overlap: 50–100 tokens
max_depth: beperk geneste secties tot 2–3 niveaus om fragmentatie te voorkomen
4) Kies embeddings en een vector store
- Begin met een sterk, algemeen embedding model (bijv. text‑embedding‑3‑large of een modern lokaal model). Als privacy belangrijk is, overweeg dan self‑hosted embeddings.
- Gebruik een vector DB die het volgende ondersteunt:
- Hybrid search (dense + keyword)
- Filters (metadata constraints)
- Batch upserts en index metrics
Index instellingen om te testen:
top_k = 5–10 voor initiële retrieval
similarity_metric = cosine (of dot voor bepaalde modellen)
- Schakel max marginal relevance (MMR) in om redundantie te verminderen
5) Retrieval orkestratie
Implementeer een two‑stage retriever:
- Hybrid search (BM25 + dense)
- Grote
top_k (bijv. 30–50)
- Cross‑encoder reranker of LLM‑based scoring
- Reduceer tot final
top_k (bijv. 5–8)
Voeg metadata filters toe: source:"handbook" AND section:"benefits" AND version:"v2" om antwoorden te beperken tot vertrouwde documenten.
6) Onderbouwde generatie met structuur
Je prompt moet citaten afdwingen en weigering wanneer het bewijs zwak is.
Voorbeeld systeem prompt:
Je bent een zorgvuldige assistent. Antwoord ALLEEN met informatie die wordt ondersteund door de verstrekte context.
- Citeer bronnen inline als [doc_id:chunk_id].
- Als de context onvoldoende is, zeg dan "Niet genoeg informatie in de verstrekte documenten."
- Verzin geen feiten.
User prompt template:
Vraag: {query}
Context:
{top_chunks}
Instructies:
- Geef eerst een beknopt antwoord, daarna details.
- Voeg citaten toe na elke feitelijke bewering.
7) Voeg guardrails toe om hallucinaties te verminderen
- Answerability check: Vraag vóór de generatie een klein model: “Is er direct bewijs in de opgehaalde chunks?” Zo niet, retourneer dan een verduidelijkende vraag.
- Cite‑or‑silence policy: Blokkeer outputs die geen citaten bevatten.
- Toxicity/PII filters voor enterprise content.
8) Evaluatie en continue verbetering
Maak een eval/ set met:
- 50–200 echte gebruikersvragen
- Ground truth antwoorden (of vertrouwde referenties)
- Verwachte bronnen (doc ids) waar van toepassing
Meet:
- Retrieval hit rate (verschijnt de gold source in top‑k?)
- Answer faithfulness (citation‑supported statements)
Itereer op:
- Reranker vs. hogere top‑k
- Prompt structuur en constraints
Een volledige RAGFlow pipeline: Voorbeeld configuratie
Hieronder staat een conceptuele configuratie die je kunt aanpassen aan je toolchain. Vervang providernamen indien nodig.
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
Hoe RAGFlow te gebruiken voor verschillende contenttypes
Producthandleidingen en handboeken
- Geef de voorkeur aan semantic chunking met duidelijke section boundaries
- Voeg version en effective date toe om verouderde antwoorden te voorkomen
- Gebruik strikte filters: vereis altijd
version = latest
Knowledge bases en FAQ's
- Gebruik kleinere chunks (400–600 tokens) voor precieze antwoorden
- Verhoog de candidate pool en vertrouw op reranking om de exacte snippet te vinden
- Genereer automatisch canonical Q/A pairs om de recall via lexical search te stimuleren
Engineering documenten en code
- Chunk per function/module en neem import graphs op in metadata
- Schakel parent‑child retrieval in: retourneer function + de docstring context
- Gebruik een code‑aware reranker om relevante symbols te prioriteren
Juridisch en compliance
- Vereis citaten op paragraph‑level
- Voeg refusal logic toe voor incomplete context
- Bewaar een golden set van regulator‑approved sources in een aparte index
Prompt patronen die daadwerkelijk werken
- Answer then cite: Kort antwoord bovenaan; citaten inline na elke bewering
- Chain of retrieval: Vraag het model om eerst elke chunk samen te vatten en vervolgens te synthetiseren
- Query rewrite: Breid user queries uit met synoniemen en domain terms vóór retrieval
- Contrastive prompts: “Leg uit waarom optie A beter is dan B op basis van de context.” Dit dwingt het gebruik van bewijs af
Voorbeeld query‑rewrite stap:
Origineel: "wat is ons PTO carryover beleid?"
Rewrite: "paid time off carryover beleid; vacation rollover; max hours; policy version latest"
Observeerbaarheid en feedback loops
- Log welke chunks zijn gebruikt, hun scores en welke zijn genegeerd
- Leg thumbs‑up/down vast met een korte rationale; voer dat terug in retriever tuning
- Voer wekelijks regression tests uit op je eval set voordat je een modelwijziging implementeert
Performance tuning cheatsheet
- Als antwoorden generiek aanvoelen: verhoog
candidate_top_k en voeg een sterkere reranker toe
- Als antwoorden details missen: verlaag chunk size; boost lexical weight iets
- Als citaten dezelfde chunk herhalen: schakel MMR in en verhoog de diversity
- Als de latency hoog is: cache embeddings, precompute query rewrites, gebruik een kleinere reranker
- Als de kosten stijgen: verlaag de generation temperature, verkort prompts, probeer een kleinere LLM voor de eerste pass
Security en governance essentials
- Versleutel opgeslagen vectoren en verwijder gevoelige fields in metadata
- Gebruik per‑index access control; segmenteer op team of data sensitivity
- Onderhoud een data lineage record: doc source URL, checksum en ingestion timestamp
Case study snapshot: Van rommelige PDF's naar vertrouwde antwoorden
Een support team nam 1.200 pagina's PDF's op. De initiële retrieval was inconsistent; agents vertrouwden de bot niet. Na over te schakelen op semantic‑hybrid chunking (800 tokens, 80 overlap), het inschakelen van cross‑encoder reranking en het afdwingen van cite‑or‑silence, steeg de top‑k hit rate van 62% naar 89% en verdubbelde de agent adoption. De sleutel was niet een grotere LLM—het waren schonere chunks en striktere retrieval.
Tooling tip: Snelle iteratie met een AI sidebar
Het is de moeite waard om op te merken: als je experimenteert met prompts en retrieval snippets in veel documenten, kan een AI assistent waarmee je rechtstreeks vanuit de browser over PDF's, webpagina's en code kunt chatten, de iteratie versnellen. Overigens, Sider.AI (https://sider.ai/) biedt een AI sidebar waarmee je context kunt ophalen van de pagina waarop je je bevindt, samenvattingen kunt maken en prompts snel kunt verfijnen. Het is handig voor het prototypen van RAG prompts en het testen van de chunk kwaliteit voordat je de pipeline formaliseert. Probleemoplossing RAGFlow: Snelle oplossingen
- “Het model is zelfverzekerd maar fout.”
- Schakel answerability check in; verlaag de temperature; vereis citaten
- “Search retourneert near‑duplicates.”
- Zet MMR aan; voeg een reranker toe; verminder chunk overlap
- “Latency spikes at peak.”
- Batch embeddings; cache query rewrites; gebruik streaming generation
- “Old policies blijven verschijnen.”
- Filter op
version = latest; deprecate of tombstone outdated docs
Volgende stappen: Maak je RAGFlow betrouwbaar in productie
- Begin met een kleine, vertrouwde corpus; perfectioneer eerst chunking en filters
- Voeg een reranker toe voordat je de LLM upgrade
- Bouw een 100‑question eval set en track de hit rate wekelijks
- Wire user feedback in om de retrieval continu te tunen
Belangrijkste punten:
- Retrieval kwaliteit verslaat model size voor RAG
- Chunking, metadata en reranking zijn je core levers
- Guardrails zoals cite‑or‑silence verhogen het vertrouwen drastisch
- Investeer vroeg in observeerbaarheid en evaluatie
Met deze practices wordt RAGFlow een betrouwbare backbone voor onderbouwde antwoorden—of je nu een help bot, een developer copilot of een interne knowledge assistant aandrijft.
FAQ
V1:Wat is RAGFlow en hoe gebruik ik het voor document QA?
RAGFlow is een framework voor het bouwen van retrieval-augmented generation pipelines. Je neemt in, chunkert, embedt, haalt op en genereert antwoorden met citaten om hallucinaties te verminderen en de nauwkeurigheid te verbeteren.
V2:Hoe moet ik documenten chunkeren in RAGFlow?
Gebruik semantic of hybrid chunking met 600–1.000 token chunks en 50–100 token overlap. Voor code, chunk per function of class en neem de omliggende context op.
V3:Welke vector database werkt het beste met RAGFlow?
Kies een store die hybrid search, metadata filters en reranking ondersteunt—Qdrant, Weaviate, Pinecone of een lokale optie zijn allemaal gebruikelijke keuzes.
V4:Hoe voorkom ik hallucinaties in een RAGFlow app?
Dwing een cite‑or‑silence policy af, voeg een answerability check toe vóór de generation en houd prompts strict over het gebruik van alleen opgehaalde context.
V5:Welke metrics moet ik tracken om RAGFlow te evalueren?
Monitor retrieval hit rate, answer faithfulness, latency en cost per 100 queries, en onderhoud een kleine maar representatieve evaluatie set.