Kaip naudoti RAGFlow: Praktinis patarimas, kaip kurti patikimas RAG programas
Jei bandėte sukurti paieška papildytos generacijos (RAG) sistemą, tikriausiai susidūrėte su klasikiniais sunkumais: haliucinacijomis, nepastovia paieška, lėtais srautais ir netvarkingu dokumentų apdorojimu. RAGFlow yra kompleksinis darbo eigos įrankis, padedantis organizuoti dokumentų įtraukimą, skaidymą į dalis, vektorizavimą, paiešką ir generavimą su didesne kontrole ir stebėjimu.
Šiame vadove pateikiamas praktinis ir į sprendimus orientuotas požiūris. Apžvelgsime švarų nustatymą, parodysime, kaip naudoti RAGFlow su tikrais dokumentais, ir pasidalinsime modeliais, kurie iš tikrųjų sumažina haliucinacijas ir pagerina atsakymų kokybę.
Kas yra RAGFlow ir kodėl jį naudoti?
RAGFlow yra sistema, skirta kurti paieška papildytos generacijos srautus. Tipiškai RAG sąrankoje jūs:
- Įtraukiate dokumentus (PDF, tinklalapius, skaidres, kodą ir t. t.)
- Skaidote turinį į paieškai tinkamus vienetus
- Įterpiate dalis į vektorius semantinei paieškai
- Randate k geriausių susijusių dalių užduodant klausimą
- Generuojate pagrįstą atsakymą naudodami LLM
RAGFlow prideda nuomonę turinčius numatytuosius nustatymus, darbo eigos blokus ir apsaugos priemones, kad galėtumėte greičiau kartoti ir pateikti patikimesnes programas. Tai ypač naudinga, jei norite:
- Nuoseklaus skaidymo ir metaduomenų: geresnė paieška prasideda nuo geresnių dalių.
- Prijungiamų įterpimų ir LLM: keiskite OpenAI, vietinius modelius ar įmonės galinius taškus.
- Įvertinimų ir apsaugos priemonių: įvertinkite paieškos kokybę ir sumažinkite haliucinacijas.
- Įdiegiamų srautų: pereikite nuo sąsiuvinio prie gamybos su mažiau perrašymų.
Greita pradžia: nuo nulio iki veikiančio RAGFlow srauto
Žemiau pateikiama minimali, kompleksinė darbo eiga, kurią galite pritaikyti. Net jei jūsų aplinka skiriasi, seka ir apsaugos priemonės yra perkeliamos.
1) Paruoškite savo aplinką
- Sukurkite
.env su savo raktais:
OPENAI_API_KEY (arba kitas LLM tiekėjas)
EMBEDDINGS_API_KEY (jei naudojate atskirą tiekėją)
VECTOR_DB_URL (pvz., Pinecone, Weaviate, Qdrant arba vietinis)
- Nustatykite projekto katalogą, pvz.,
ragflow-project/ su aplankais:
data/raw/ (šaltinio failai)
data/processed/ (išvalytos dalys)
configs/ (YAML/JSON srauto nustatymams)
eval/ (duomenų rinkiniai ir ataskaitos)
2) Įtraukite dokumentus su švariais metaduomenimis
Geri metaduomenys = geresnė paieška. Normalizuokite pavadinimus, autorius, datas ir šaltinius.
- Konvertuokite PDF ir skaidres į tekstą su patikimu analizatoriumi
- Išsaugokite struktūrą: antraštes, sąrašus, kodo blokus ir lenteles
- Pridėkite metaduomenis prie kiekvienos dalies:
source, section, page, timestamp, version
Patarimas: laikykite doc_id ir chunk_id, kad palaikytumėte citatas ir pakartotinį įtraukimą.
3) Pasirinkite turinio skaidymo strategiją, atitinkančią jūsų turinį
Skaidymas stipriai veikia paieškos kokybę ir delsą.
- Pasakojimo dokumentams: semantinis skaidymas (skirstymas pagal antraštes/pastraipas)
- Techniniams dokumentams: naudokite hibridinį skaidymą (semantinį + fiksuotą langą)
- Kodui: skaidykite pagal funkciją/klasę su mažu slankiojančiu langu
Rekomenduojami nustatymai pradžiai:
chunk_size: 600–1 000 žodžių
chunk_overlap: 50–100 žodžių
max_depth: apribokite įdėtus skyrius iki 2–3 lygių, kad išvengtumėte fragmentacijos
4) Pasirinkite įterpimus ir vektorių saugyklą
- Pradėkite nuo stipraus bendrosios paskirties įterpimo modelio (pvz., text‑embedding‑3‑large arba modernaus vietinio modelio). Jei privatumas yra svarbus, apsvarstykite galimybę patys talpinti įterpimus.
- Naudokite vektorių DB, kuris palaiko:
- Hibridinę paiešką (tanki + raktinis žodis)
- Filtrus (metaduomenų apribojimai)
- Paketinį įterpimą ir indekso metrikas
Indekso nustatymai, kuriuos reikia išbandyti:
top_k = 5–10 pradinei paieškai
similarity_metric = cosine (arba dot tam tikriems modeliams)
- Įgalinkite maksimalų marginalinį aktualumą (MMR), kad sumažintumėte perteikimą
5) Paieškos organizavimas
Įdiekite dviejų etapų paieškos sistemą:
- Greitas kandidatų atšaukimas
- Hibridinė paieška (BM25 + tanki)
- Didelis
top_k (pvz., 30–50)
- Kryžminis koduotojo perrikiuotojas arba LLM pagrįstas vertinimas
- Sumažinkite iki galutinio
top_k (pvz., 5–8)
Pridėkite metaduomenų filtrus: source:"handbook" AND section:"benefits" AND version:"v2", kad apribotumėte atsakymus patikimais dokumentais.
6) Pagrįsta generacija su struktūra
Jūsų raginimas turėtų užtikrinti citatas ir atsisakymą, kai įrodymų nepakanka.
Sistemos raginimo pavyzdys:
Jūs esate kruopštus asistentas. Atsakykite TIK su informacija, pagrįsta pateiktu kontekstu.
- Cituokite šaltinius eilutėje kaip [doc_id:chunk_id].
- Jei konteksto nepakanka, sakykite: „Pateiktuose dokumentuose nepakanka informacijos.“
- Neišgalvokite faktų.
Vartotojo raginimo šablonas:
Klausimas: {query}
Kontekstas:
{top_chunks}
Instrukcijos:
- Pirmiausia pateikite glaustą atsakymą, tada išsamią informaciją.
- Po kiekvieno faktinio teiginio įtraukite citatas.
7) Pridėkite apsaugos priemones, kad sumažintumėte haliucinacijas
- Atsakymo patikrinimas: prieš generavimą paklauskite mažo modelio: „Ar gautose dalyse yra tiesioginių įrodymų?“ Jei ne, pateikite patikslinantį klausimą.
- Cituoti arba tylėti politika: blokuokite išvestis, kuriose nėra citatų.
- Toksiškumo/PAI filtrai įmonės turiniui.
8) Įvertinimas ir nuolatinis tobulinimas
Sukurkite eval/ rinkinį su:
- 50–200 tikrų vartotojų klausimų
- Teisingi atsakymai (arba patikimi šaltiniai)
- Numatomi šaltiniai (doc ID), kur taikoma
Įvertinkite:
- Paieškos pataikymo dažnis (ar auksinis šaltinis pasirodo top‑k?)
- Atsakymo ištikimybė (citatomis pagrįsti teiginiai)
Kartokite:
- Dalies dydis ir persidengimas
- Įterpimo modelio pasirinkimas
- Perrikiuotojas vs. didesnis top‑k
- Raginimo struktūra ir apribojimai
Visas RAGFlow srautas: Konfigūracijos pavyzdys
Žemiau pateikiama konceptuali konfigūracija, kurią galite pritaikyti savo įrankių grandinei. Pakeiskite tiekėjų pavadinimus, jei reikia.
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:
<a18>fields: [doc_id, title, section, page, version, source]</a19>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
<a33>model: bge-reranker-large</a34><a34>final_top_k: 7</a35>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
Kaip naudoti RAGFlow skirtingiems turinio tipams
Produktų vadovai ir instrukcijos
- Pirmenybę teikite semantiniam skaidymui su aiškiomis skyrių ribomis
- Pridėkite versiją ir galiojimo datą, kad išvengtumėte pasenusių atsakymų
- Naudokite griežtus filtrus: visada reikalaukite
version = latest
Žinių bazės ir DUK
- Naudokite mažesnes dalis (400–600 žodžių) tiksliems atsakymams
- Padidinkite kandidatų grupę ir pasikliaukite perrikiuotoju, kad rastumėte tikslų fragmentą
- Automatiškai generuokite kanonines Q/A poras, kad padidintumėte atšaukimą per leksinę paiešką
Inžineriniai dokumentai ir kodas
- Skaidykite pagal funkciją/modulį ir įtraukite importavimo grafikus į metaduomenis
- Įgalinkite tėvų ir vaikų paiešką: grąžinkite funkciją + jos docstring kontekstą
- Naudokite kodui skirtą perrikiuotoją, kad nustatytumėte susijusių simbolių prioritetą
Teisinis ir atitikties užtikrinimas
- Reikalaukite pastraipų lygio citatų
- Pridėkite atsisakymo logiką nepilnam kontekstui
- Laikykite auksinį reguliatoriaus patvirtintų šaltinių rinkinį atskirame indekse
Raginimo modeliai, kurie iš tikrųjų veikia
- Atsakykite, tada cituokite: trumpas atsakymas viršuje; citatos eilutėje po kiekvieno teiginio
- Paieškos grandinė: paprašykite modelio pirmiausia apibendrinti kiekvieną dalį, tada susintetinti
- Užklausos perrašymas: išplėskite vartotojų užklausas sinonimais ir srities terminais prieš paiešką
- Kontrastingi raginimai: „Paaiškinkite, kodėl A variantas yra geresnis už B, remiantis kontekstu.“ Tai priverčia naudoti įrodymus
Užklausos perrašymo žingsnio pavyzdys:
Originalas: "kokia mūsų PTO perkėlimo politika?"
Perrašymas: "mokamos atostogos perkėlimo politika; atostogų perkėlimas; maksimalios valandos; politika versija naujausia"
Stebėjimas ir grįžtamojo ryšio ciklai
- Registruokite, kurios dalys buvo naudojamos, jų balai ir kurios buvo ignoruojamos
- Užfiksuokite teigiamus/neigiamus atsiliepimus su trumpu paaiškinimu; įveskite tai atgal į paieškos sistemos derinimą
- Vykdykite savaitinius regresijos testus su savo eval rinkiniu prieš diegdami bet kokį modelio pakeitimą
Našumo derinimo atmintinė
- Jei atsakymai atrodo bendri: padidinkite
candidate_top_k ir pridėkite stipresnį perrikiuotoją
- Jei atsakymuose trūksta detalių: sumažinkite dalies dydį; šiek tiek padidinkite leksinį svorį
- Jei citatos kartoja tą pačią dalį: įgalinkite MMR ir padidinkite įvairovę
- Jei delsa yra didelė: talpinkite įterpimus, iš anksto apskaičiuokite užklausų perrašymus, naudokite mažesnį perrikiuotoją
- Jei išlaidos šokteli: sumažinkite generavimo temperatūrą, sutrumpinkite raginimus, išbandykite mažesnį LLM pirmajam etapui
Saugumo ir valdymo pagrindai
- Užšifruokite saugomus vektorius ir redaguokite jautrius laukus metaduomenyse
- Naudokite kiekvieno indekso prieigos kontrolę; segmentuokite pagal komandą arba duomenų jautrumą
- Tvarkykite duomenų kilmės įrašą: dokumento šaltinio URL, kontrolinę sumą ir įtraukimo laiko žymą
Atvejo analizės momentinė nuotrauka: nuo netvarkingų PDF iki patikimų atsakymų
Palaikymo komanda įtraukė 1 200 PDF puslapių. Pradinė paieška buvo nenuosekli; agentai nepasitikėjo botu. Perėjus prie semantinio hibridinio skaidymo (800 žodžių, 80 persidengimas), įgalinus kryžminį koduotojo perrikiuotoją ir užtikrinus citavimą arba tylėjimą, aukščiausio lygio pataikymo dažnis padidėjo nuo 62 % iki 89 %, o agentų įsisavinimas padvigubėjo. Svarbiausia buvo ne didesnis LLM, o švaresnės dalys ir griežtesnė paieška.
Įrankių patarimas: Greitas kartojimas su AI šonine juosta
Verta paminėti: jei eksperimentuojate su raginimais ir paieškos fragmentais daugelyje dokumentų, AI asistentas, kuris leidžia jums kalbėtis apie PDF, tinklalapius ir kodą tiesiai iš naršyklės, gali pagreitinti kartojimą. Beje, Sider.AI (https://sider.ai/) siūlo AI šoninę juostą, kuri leidžia jums įtraukti kontekstą iš puslapio, kuriame esate, apibendrinti ir greitai patobulinti raginimus. Tai patogu prototipų RAG raginimams ir dalių kokybės testavimui prieš formalizuojant srautą. RAGFlow trikčių šalinimas: Greiti pataisymai
- „Modelis yra įsitikinęs, bet neteisus.“
- Įgalinkite atsakymo patikrinimą; sumažinkite temperatūrą; reikalaukite citatų
- „Paieška grąžina beveik dublikatus.“
- Įjunkite MMR; pridėkite perrikiuotoją; sumažinkite dalių persidengimą
- „Delsta šokteli piko metu.“
- Paketiniai įterpimai; talpinkite užklausų perrašymus; naudokite srautinę generaciją
- „Senos politikos nuolat pasirodo.“
- Filtruokite pagal
version = latest; nurašykite arba pašalinkite pasenusius dokumentus
Kiti žingsniai: Padarykite savo RAGFlow patikimą gamyboje
- Pradėkite nuo mažo, patikimo korpuso; pirmiausia patobulinkite skaidymą ir filtrus
- Pridėkite perrikiuotoją prieš atnaujindami LLM
- Sukurkite 100 klausimų eval rinkinį ir kas savaitę stebėkite pataikymo dažnį
- Įveskite vartotojo atsiliepimus, kad nuolat derintumėte paiešką
Pagrindiniai dalykai:
- Paieškos kokybė pranoksta modelio dydį RAG
- Skaidymas, metaduomenys ir perrikiavimas yra jūsų pagrindinės svirtys
- Apsaugos priemonės, tokios kaip citavimas arba tylėjimas, dramatiškai padidina pasitikėjimą
- Anksti investuokite į stebėjimą ir įvertinimą
Naudojant šias praktikas, RAGFlow tampa patikimu pagrindu pagrįstiems atsakymams, nesvarbu, ar maitinate pagalbos botą, kūrėjo bendrapilotį ar vidinį žinių asistentą.
DUK
Q1: Kas yra RAGFlow ir kaip aš galiu jį panaudoti dokumentų QA?
RAGFlow yra sistema paieškos papildytos generacijos srautams kurti. Jūs įtraukiate, skaidote, įterpiate, randate ir generuojate atsakymus su citatomis, kad sumažintumėte haliucinacijas ir pagerintumėte tikslumą.
Q2: Kaip aš turėčiau skaidyti dokumentus RAGFlow?
Naudokite semantinį arba hibridinį skaidymą su 600–1 000 žodžių dalimis ir 50–100 žodžių persidengimu. Kodui, skaidykite pagal funkciją arba klasę ir įtraukite aplinkinį kontekstą.
Q3: Kuri vektorių duomenų bazė geriausiai veikia su RAGFlow?
Pasirinkite saugyklą, kuri palaiko hibridinę paiešką, metaduomenų filtrus ir perrikiavimą – Qdrant, Weaviate, Pinecone arba vietinė parinktis yra dažnas pasirinkimas.
Q4: Kaip aš galiu užkirsti kelią haliucinacijoms RAGFlow programoje?
Įgyvendinkite citavimo arba tylėjimo politiką, pridėkite atsakymo patikrinimą prieš generavimą ir laikykite raginimus griežtais apie tik paimto konteksto naudojimą.
Q5: Kokias metrikas aš turėčiau stebėti, kad įvertinčiau RAGFlow?
Stebėkite paieškos pataikymo dažnį, atsakymo ištikimybę, delsą ir kainą už 100 užklausų ir palaikykite mažą, bet reprezentatyvų įvertinimo rinkinį.