Sådan bruger du RAGFlow: En praktisk guide til at bygge pålidelige RAG-apps
Hvis du har prøvet at bygge et retrieval-augmented generation (RAG) system, har du sandsynligvis stødt på de klassiske problemer: hallucinationer, ustabil hentning, langsomme pipelines og rodet dokumentforbehandling. RAGFlow træder til som et end-to-end workflow-værktøj, der hjælper dig med at orkestrere dokumentindtagelse, chunking, vektorisering, hentning og generering med mere kontrol og observerbarhed.
Denne guide har en praktisk og løsningsorienteret tilgang. Vi vil gennemgå en ren opsætning, vise dig, hvordan du bruger RAGFlow til rigtige dokumenter, og dele mønstre, der rent faktisk reducerer hallucinationer og forbedrer svarkvaliteten.
Hvad er RAGFlow, og hvorfor bruge det?
RAGFlow er et system til at bygge Retrieval-Augmented Generation pipelines. I en typisk RAG-opsætning gør du følgende:
- Indtager dokumenter (PDF'er, websider, slides, kode osv.)
- Chunker indhold i enheder, der kan hentes
- Indlejrer chunks i vektorer til semantisk søgning
- Henter top-k relevante chunks på spørgsmålstidspunktet
- Genererer et begrundet svar ved hjælp af en LLM
RAGFlow tilføjer veldefinerede standardindstillinger, workflow-blokke og sikkerhedsforanstaltninger, så du kan iterere hurtigere og levere mere pålidelige apps. Det er især nyttigt, hvis du ønsker:
- Konsistent chunking og metadata: Bedre hentning starter med bedre chunks.
- Pluggable indlejringer og LLM'er: Udskift OpenAI, lokale modeller eller enterprise endpoints.
- Evalueringer og sikkerhedsforanstaltninger: Mål hentningskvaliteten og reducer hallucinationer.
- Implementerbare pipelines: Flyt fra notebook til produktion med færre omskrivninger.
Hurtig start: Fra nul til en fungerende RAGFlow-pipeline
Nedenfor er et minimalt, end-to-end workflow, du kan tilpasse. Selvom dit miljø er anderledes, er rækkefølgen og sikkerhedsforanstaltningerne overførbare.
1) Forbered dit miljø
- Opret en
.env med dine nøgler:
OPENAI_API_KEY (eller en anden LLM-udbyder)
EMBEDDINGS_API_KEY (hvis du bruger en separat udbyder)
VECTOR_DB_URL (f.eks. Pinecone, Weaviate, Qdrant eller lokal)
- Angiv en projektmappe, f.eks.
ragflow-project/ med mapper:
data/processed/ (rensede chunks)
configs/ (YAML/JSON til pipeline-indstillinger)
eval/ (datasæt og rapporter)
2) Indtag dokumenter med rene metadata
Gode metadata = bedre hentning. Normaliser titler, forfattere, datoer og kilder.
- Konverter PDF'er og slides til tekst med en robust parser
- Bevar struktur: overskrifter, lister, kodeblokke og tabeller
- Vedhæft metadata til hver chunk:
source, section, page, timestamp, version
Tip: Behold et doc_id og chunk_id for at understøtte citater og genindtagelse.
3) Vælg en chunking-strategi, der passer til dit indhold
Chunking påvirker hentningskvaliteten og latenstiden kraftigt.
- For narrative dokumenter: semantisk chunking (opdelt efter overskrifter/afsnit)
- For tekniske dokumenter: brug hybrid chunking (semantisk + fast vindue)
- For kode: chunk efter funktion/klasse med et lille glidende vindue
Anbefalede indstillinger til at starte:
chunk_size: 600-1.000 tokens
chunk_overlap: 50-100 tokens
max_depth: begræns indlejrede sektioner til 2-3 niveauer for at undgå fragmentering
4) Vælg indlejringer og en vektorlager
- Start med en stærk generel indlejringsmodel (f.eks. text-embedding-3-large eller en moderne lokal model). Hvis privatliv er vigtigt, bør du overveje selvhostede indlejringer.
- Brug en vektor-DB, der understøtter:
- Hybrid søgning (dense + keyword)
- Filtre (metadata-begrænsninger)
- Batch upserts og indeks metrics
Indeksindstillinger til at teste:
top_k = 5-10 til indledende hentning
similarity_metric = cosine (eller dot for visse modeller)
- Aktiver max marginal relevance (MMR) for at reducere redundans
5) Hentningsorkestrering
Implementer en to-trins retriever:
- Hurtig kandidatgenkaldelse
- Hybrid søgning (BM25 + dense)
- Stor
top_k (f.eks. 30-50)
- Cross-encoder reranker eller LLM-baseret scoring
- Reducer til endelig
top_k (f.eks. 5-8)
Tilføj metadata-filtre: source:"handbook" AND section:"benefits" AND version:"v2" for at begrænse svar til pålidelige dokumenter.
6) Begrundet generering med struktur
Din prompt skal håndhæve citater og afvisning, når beviserne er svage.
Eksempel på systemprompt:
Du er en omhyggelig assistent. Svar KUN med information understøttet af den angivne kontekst.
- Citer kilder inline som [doc_id:chunk_id].
- Hvis konteksten er utilstrækkelig, skal du sige "Ikke nok information i de medfølgende dokumenter."
- Opfind ikke fakta.
Brugerprompt-skabelon:
Spørgsmål: {query}
Kontekst:
{top_chunks}
<a4>Instruktioner:</a5>- Giv et kortfattet svar først, derefter detaljer.
- Medtag citater efter hver faktuel påstand.
7) Tilføj sikkerhedsforanstaltninger for at reducere hallucinationer
- Besvarlighedscheck: Før generering skal du spørge en lille model: “Er der direkte bevis i de hentede chunks?” Hvis ikke, skal du returnere et afklarende spørgsmål.
- Citer-eller-vær-tavs politik: Bloker outputs, der mangler citater.
- Toksicitet/PII-filtre til enterprise-indhold.
8) Evaluering og løbende forbedringer
Opret et eval/ sæt med:
- 50-200 rigtige brugerspørgsmål
- Sandfærdige svar (eller pålidelige referencer)
- Forventede kilder (doc ids) hvor det er relevant
Mål:
- Hentningshitrate (forekommer guldkilden i top-k?)
- Svartrofasthed (citatunderstøttede udsagn)
- Latenstid (p95 end-to-end)
- Omkostninger (pr. 100 forespørgsler)
Iterer på:
- Chunkstørrelse og overlapning
- Reranker vs. højere top-k
- Promptstruktur og begrænsninger
En fuld RAGFlow-pipeline: Eksempelkonfiguration
Nedenfor er en konceptuel konfiguration, du kan tilpasse til din værktøjskæde. Udskift udbydernavne efter behov.
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
Sådan bruger du RAGFlow til forskellige indholdstyper
Produktmanualer og håndbøger
- Foretræk semantisk chunking med klare sektionsgrænser
- Vedhæft version og ikrafttrædelsesdato for at forhindre forældede svar
- Brug strenge filtre: kræv altid
version = latest
Vidensbaser og ofte stillede spørgsmål
- Brug mindre chunks (400-600 tokens) til præcise svar
- Forøg kandidatpuljen og stol på reranking for at finde det nøjagtige uddrag
- Autogenerer kanoniske Q/A-par for at øge genkaldelsen via leksikalsk søgning
Engineering dokumenter og kode
- Chunk efter funktion/modul, og inkluder importgrafer i metadata
- Aktiver parent-child hentning: returner funktion + dens docstring-kontekst
- Brug en kodebevidst reranker til at prioritere relevante symboler
Juridisk og compliance
- Kræv citater på afsnitsniveau
- Tilføj afvisningslogik for ufuldstændig kontekst
- Opbevar et gyldent sæt af regulatorgodkendte kilder i et separat indeks
Prompt-mønstre, der rent faktisk virker
- Svar derefter citer: Kort svar øverst; citater inline efter hver påstand
- Chain of retrieval: Bed modellen om at opsummere hver chunk først og derefter syntetisere
- Omskrivning af forespørgsel: Udvid brugerforespørgsler med synonymer og domænebetingelser før hentning
- Kontrasterende prompter: “Forklar, hvorfor mulighed A er bedre end B baseret på konteksten.” Dette tvinger bevisbrug
Eksempel på trin til omskrivning af forespørgsel:
Original: "hvad er vores PTO carryover politik?"
Omskrivning: "betalt fri carryover politik; ferie rollover; max timer; politikversion seneste"
Observerbarhed og feedback-loops
- Log hvilke chunks der blev brugt, deres scores, og hvilke der blev ignoreret
- Fang tommelfinger op/ned med en kort begrundelse; før det tilbage i retriever-tuning
- Kør ugentlige regressionstest på dit eval-sæt, før du implementerer nogen modelændring
Performance tuning snydeark
- Hvis svarene føles generiske: øg
candidate_top_k og tilføj en stærkere reranker
- Hvis svarene mangler detaljer: reducer chunkstørrelsen; øg den leksikalske vægt lidt
- Hvis citater gentager den samme chunk: aktiver MMR og øg diversiteten
- Hvis latenstiden er høj: cache indlejringer, forudberegn omskrivninger af forespørgsler, brug en mindre reranker
- Hvis omkostningerne stiger: flyt genereringstemperaturen ned, forkort prompter, prøv en mindre LLM til første gennemgang
Væsentlige sikkerheds- og governance-elementer
- Krypter lagrede vektorer, og rediger følsomme felter i metadata
- Brug adgangskontrol pr. indeks; segmenter efter team eller datafølsomhed
- Vedligehold en datalineage-record: doc-kilde URL, checksum og indtagelsestidsstempel
Case study snapshot: Fra rodede PDF'er til pålidelige svar
Et supportteam indtog 1.200 sider med PDF'er. Indledende hentning var inkonsekvent; agenter stolede ikke på botten. Efter at have skiftet til semantisk-hybrid chunking (800 tokens, 80 overlap), aktiveret cross-encoder reranking og håndhævet citer-eller-vær-tavs, steg top-k hitraten fra 62 % til 89 %, og agentadoptionen blev fordoblet. Nøglen var ikke en større LLM—det var renere chunks og strengere hentning.
Værktøjstip: Hurtig iteration med en AI-sidebar
Værd at bemærke: Hvis du eksperimenterer med prompter og hentningsstumper på tværs af mange dokumenter, kan en AI-assistent, der lader dig chatte over PDF'er, websider og kode direkte fra browseren, accelerere iterationen. Forresten tilbyder Sider.AI (https://sider.ai/) en AI-sidebar, der lader dig trække kontekst ind fra den side, du er på, opsummere og finjustere prompter hurtigt. Det er praktisk til prototyping af RAG-prompter og test af chunk-kvalitet, før du formaliserer pipelinen. Fejlfinding af RAGFlow: Hurtige rettelser
- “Modellen er sikker, men forkert.”
- Aktiver besvarlighedscheck; sænk temperaturen; kræv citater
- “Søgning returnerer næsten-duplikater.”
- Slå MMR til; tilføj en reranker; reducer chunk-overlapning
- “Latenstiden stiger ved peak.”
- Batch indlejringer; cache forespørgselsomskrivninger; brug streaming generering
- “Gamle politikker bliver ved med at dukke op.”
- Filtrer på
version = latest; afskriv eller tombstone forældede dokumenter
Næste trin: Gør din RAGFlow pålidelig i produktion
- Start med en lille, pålidelig corpus; perfekt chunking og filtre først
- Tilføj en reranker, før du opgraderer LLM'en
- Byg et 100-spørgsmåls eval-sæt, og spor hitraten ugentligt
- Tilslut brugerfeedback for løbende at tune hentning
Vigtigste takeaways:
- Hentningskvalitet slår modelstørrelse for RAG
- Chunking, metadata og reranking er dine kerne håndtag
- Sikkerhedsforanstaltninger som citer-eller-vær-tavs øger tilliden dramatisk
- Invester tidligt i observerbarhed og evaluering
Med disse metoder bliver RAGFlow en pålidelig rygrad for begrundede svar – uanset om du driver en hjælpebot, en udviklercopilot eller en intern vidensassistent.
FAQ
Q1: Hvad er RAGFlow, og hvordan bruger jeg det til dokument QA?
RAGFlow er et framework til at bygge retrieval-augmented generation pipelines. Du indtager, chunker, indlejrer, henter og genererer svar med citater for at reducere hallucinationer og forbedre nøjagtigheden.
Q2: Hvordan skal jeg chunke dokumenter i RAGFlow?
Brug semantisk eller hybrid chunking med 600-1.000 token chunks og 50-100 token overlapning. For kode, chunk efter funktion eller klasse, og inkluder omgivende kontekst.
Q3: Hvilken vektor database fungerer bedst med RAGFlow?
Vælg en lager, der understøtter hybrid søgning, metadata filtre og reranking—Qdrant, Weaviate, Pinecone eller en lokal mulighed er alle almindelige valg.
Q4: Hvordan forhindrer jeg hallucinationer i en RAGFlow app?
Håndhæv en citer-eller-vær-tavs politik, tilføj et besvarlighedscheck før generering, og hold prompter strenge om kun at bruge hentet kontekst.
Q5: Hvilke metrics skal jeg spore for at evaluere RAGFlow?
Overvåg hentningshitrate, svartrofasthed, latenstid og omkostninger pr. 100 forespørgsler, og vedligehold et lille, men repræsentativt evalueringssæt.