Jak korzystać z RAGFlow: Praktyczny przewodnik po tworzeniu niezawodnych aplikacji RAG
Jeśli próbowałeś zbudować system generowania rozszerzonego o wyszukiwanie (RAG), prawdopodobnie natknąłeś się na typowe problemy: halucynacje, zawodne wyszukiwanie, powolne potoki i niechlujne przetwarzanie wstępne dokumentów. RAGFlow wkracza jako kompleksowe narzędzie workflow, które pomaga w orkiestracji pozyskiwania dokumentów, dzielenia na fragmenty, wektoryzacji, wyszukiwania i generowania z większą kontrolą i możliwością obserwacji.
Ten przewodnik przyjmuje praktyczne i zorientowane na rozwiązania podejście. Przeprowadzimy Cię przez czystą konfigurację, pokażemy, jak używać RAGFlow z prawdziwymi dokumentami, i podzielimy się wzorcami, które faktycznie redukują halucynacje i poprawiają jakość odpowiedzi.
Czym jest RAGFlow i dlaczego warto go używać?
RAGFlow to system do budowania potoków generowania rozszerzonego o wyszukiwanie. W typowej konfiguracji RAG:
- Pozyskujesz dokumenty (pliki PDF, strony internetowe, slajdy, kod itp.)
- Dzielisz treść na fragmenty możliwe do wyszukania
- Osadzasz fragmenty w wektory do wyszukiwania semantycznego
- Wyszukujesz top‑k najbardziej odpowiednich fragmentów w czasie zadawania pytania
- Generujesz ugruntowaną odpowiedź za pomocą LLM
RAGFlow dodaje ustalone domyślne ustawienia, bloki workflow i zabezpieczenia, dzięki czemu możesz szybciej iterować i wdrażać bardziej niezawodne aplikacje. Jest to szczególnie przydatne, jeśli chcesz:
- Spójnego dzielenia na fragmenty i metadanych: Lepsze wyszukiwanie zaczyna się od lepszych fragmentów.
- Wymiennych osadzeń i LLM: Zamieniaj OpenAI, modele lokalne lub punkty końcowe dla przedsiębiorstw.
- Ewaluacji i zabezpieczeń: Mierz jakość wyszukiwania i redukuj halucynacje.
- Potoków możliwych do wdrożenia: Przejdź od notatnika do produkcji z mniejszą liczbą przepisów.
Szybki start: Od zera do działającego potoku RAGFlow
Poniżej znajduje się minimalny, kompleksowy workflow, który możesz dostosować. Nawet jeśli Twoje środowisko jest inne, sekwencja i zabezpieczenia są przenośne.
1) Przygotuj swoje środowisko
- Utwórz plik
.env z Twoimi kluczami:
OPENAI_API_KEY (lub inny dostawca LLM)
EMBEDDINGS_API_KEY (jeśli używasz oddzielnego dostawcy)
VECTOR_DB_URL (np. Pinecone, Weaviate, Qdrant lub lokalny)
- Ustaw katalog projektu, np.
ragflow-project/ z folderami:
data/raw/ (pliki źródłowe)
data/processed/ (oczyszczone fragmenty)
configs/ (YAML/JSON dla ustawień potoku)
eval/ (zbiory danych i raporty)
2) Pozyskuj dokumenty z czystymi metadanymi
Dobre metadane = lepsze wyszukiwanie. Normalizuj tytuły, autorów, daty i źródła.
- Konwertuj pliki PDF i slajdy na tekst za pomocą solidnego parsera
- Zachowaj strukturę: nagłówki, listy, bloki kodu i tabele
- Dołącz metadane do każdego fragmentu:
source, section, page, timestamp, version
Wskazówka: Zachowaj doc_id i chunk_id, aby obsługiwać cytaty i ponowne pozyskiwanie.
3) Wybierz strategię dzielenia na fragmenty, która pasuje do Twojej treści
Dzielenie na fragmenty silnie wpływa na jakość wyszukiwania i opóźnienie.
- Dla dokumentów narracyjnych: dzielenie semantyczne (podział według nagłówków/akapitów)
- Dla dokumentów technicznych: użyj dzielenia hybrydowego (semantyczne + stałe okno)
- Dla kodu: dziel na fragmenty według funkcji/klasy z małym oknem przesuwnym
Zalecane ustawienia na początek:
chunk_size: 600–1000 tokenów
chunk_overlap: 50–100 tokenów
max_depth: ogranicz zagnieżdżone sekcje do 2–3 poziomów, aby uniknąć fragmentacji
4) Wybierz osadzenia i magazyn wektorów
- Zacznij od silnego, ogólnego modelu osadzania (np. text‑embedding‑3‑large lub nowoczesny model lokalny). Jeśli prywatność jest kluczowa, rozważ osadzenia hostowane samodzielnie.
- Użyj bazy danych wektorów, która obsługuje:
- Wyszukiwanie hybrydowe (gęste + słowa kluczowe)
- Filtry (ograniczenia metadanych)
- Wsadowe operacje upsert i metryki indeksu
Ustawienia indeksu do przetestowania:
top_k = 5–10 dla początkowego wyszukiwania
similarity_metric = cosine (lub dot dla niektórych modeli)
- Włącz maksymalne krańcowe znaczenie (MMR), aby zmniejszyć redundancję
5) Orkiestracja wyszukiwania
Wdróż dwuetapowy moduł wyszukiwania:
- Szybkie przywoływanie kandydatów
- Wyszukiwanie hybrydowe (BM25 + gęste)
- Ponowne ocenianie za pomocą cross‑encodera lub ocenianie oparte na LLM
- Zredukuj do końcowego
top_k (np. 5–8)
Dodaj filtry metadanych: source:"handbook" AND section:"benefits" AND version:"v2", aby ograniczyć odpowiedzi do zaufanych dokumentów.
6) Ugruntowane generowanie ze strukturą
Twój prompt powinien wymuszać cytowanie i odrzucanie, gdy dowody są słabe.
Przykładowy prompt systemowy:
Jesteś uważnym asystentem. Odpowiadaj WYŁĄCZNIE informacjami popartymi podanym kontekstem.
- Cytuj źródła w tekście jako [doc_id:chunk_id].
- Jeśli kontekst jest niewystarczający, powiedz "Niewystarczająca ilość informacji w podanych dokumentach.".
- Nie wymyślaj faktów.
Szablon promptu użytkownika:
Pytanie: {query}
Kontekst:
{top_chunks}
Instrukcje:
- Najpierw podaj zwięzłą odpowiedź, a następnie szczegóły.
- Dołączaj cytaty po każdym stwierdzeniu faktograficznym.
7) Dodaj zabezpieczenia, aby zredukować halucynacje
- Sprawdzanie możliwości udzielenia odpowiedzi: Przed generowaniem zapytaj mały model: „Czy w pobranych fragmentach znajdują się bezpośrednie dowody?” Jeśli nie, zwróć pytanie wyjaśniające.
- Zasada cytuj albo milcz: Blokuj wyniki, które nie zawierają cytatów.
- Filtry toksyczności/PII dla treści korporacyjnych.
8) Ewaluacja i ciągłe doskonalenie
Utwórz zbiór eval/ z:
- 50–200 prawdziwych pytań użytkowników
- Prawdziwe odpowiedzi (lub zaufane odniesienia)
- Oczekiwane źródła (identyfikatory dokumentów), gdzie ma to zastosowanie
Mierz:
- Współczynnik trafień wyszukiwania (czy złote źródło pojawia się w top‑k?)
- Wiarygodność odpowiedzi (stwierdzenia poparte cytatami)
- Opóźnienie (p95 kompleksowo)
Iteruj na:
- Rozmiar fragmentu i nakładanie się
- Ponowne ocenianie vs. wyższe top‑k
- Struktura promptu i ograniczenia
Pełny potok RAGFlow: Przykładowa konfiguracja
Poniżej znajduje się koncepcyjna konfiguracja, którą możesz dostosować do swojego łańcucha narzędzi. W razie potrzeby zmień nazwy dostawców.
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 używać RAGFlow dla różnych typów treści
Podręczniki produktów i instrukcje obsługi
- Preferuj dzielenie semantyczne z wyraźnymi granicami sekcji
- Dołącz wersję i datę obowiązywania, aby zapobiec nieaktualnym odpowiedziom
- Używaj ścisłych filtrów: zawsze wymagaj
version = latest
Bazy wiedzy i FAQ
- Używaj mniejszych fragmentów (400–600 tokenów) dla precyzyjnych odpowiedzi
- Zwiększ pulę kandydatów i polegaj na ponownym ocenianiu, aby znaleźć dokładny fragment
- Automatycznie generuj kanoniczne pary pytań i odpowiedzi, aby zwiększyć przywoływanie za pomocą wyszukiwania leksykalnego
Dokumentacja inżynierska i kod
- Dziel na fragmenty według funkcji/modułu i dołączaj wykresy importu w metadanych
- Włącz pobieranie nadrzędny‑podrzędny: zwróć funkcję + jej kontekst docstring
- Użyj narzędzia do ponownego oceniania świadomego kodu, aby priorytetowo traktować odpowiednie symbole
Prawo i zgodność
- Wymagaj cytatów na poziomie akapitu
- Dodaj logikę odrzucania dla niekompletnego kontekstu
- Zachowaj złoty zbiór źródeł zatwierdzonych przez regulatora w oddzielnym indeksie
Wzorce promptów, które faktycznie działają
- Odpowiedz, a następnie cytuj: Krótka odpowiedź na górze; cytaty w tekście po każdym twierdzeniu
- Łańcuch pobierania: Poproś model o podsumowanie każdego fragmentu, a następnie syntezę
- Przepisywanie zapytań: Rozwiń zapytania użytkowników o synonimy i terminy domenowe przed wyszukiwaniem
- Prompty kontrastowe: „Wyjaśnij, dlaczego opcja A jest lepsza od B na podstawie kontekstu.” To wymusza wykorzystanie dowodów
Przykładowy krok przepisywania zapytań:
Oryginał: "jaka jest nasza polityka przenoszenia PTO?"
Przepisanie: "polityka przenoszenia płatnego urlopu; przeniesienie urlopu; maksymalna liczba godzin; najnowsza wersja zasad"
Obserwowalność i pętle sprzężenia zwrotnego
- Rejestruj, które fragmenty zostały użyte, ich wyniki i które zostały zignorowane
- Przechwytuj kciuki w górę/w dół z krótkim uzasadnieniem; przekaż to z powrotem do strojenia modułu wyszukiwania
- Przeprowadzaj cotygodniowe testy regresyjne na swoim zbiorze ewaluacyjnym przed wdrożeniem jakiejkolwiek zmiany modelu
Ściąga dotycząca dostrajania wydajności
- Jeśli odpowiedzi wydają się ogólne: zwiększ
candidate_top_k i dodaj silniejsze narzędzie do ponownego oceniania
- Jeśli odpowiedzi pomijają szczegóły: zmniejsz rozmiar fragmentu; nieznacznie zwiększ wagę leksykalną
- Jeśli cytaty powtarzają ten sam fragment: włącz MMR i zwiększ różnorodność
- Jeśli opóźnienie jest wysokie: buforuj osadzenia, wstępnie obliczaj przepisywanie zapytań, użyj mniejszego narzędzia do ponownego oceniania
- Jeśli koszty gwałtownie rosną: zmniejsz temperaturę generowania, skróć prompety, wypróbuj mniejszy LLM do pierwszego przejścia
Podstawowe informacje na temat bezpieczeństwa i zarządzania
- Szyfruj przechowywane wektory i redaguj poufne pola w metadanych
- Używaj kontroli dostępu na indeks; segmentuj według zespołu lub wrażliwości danych
- Prowadź rejestr pochodzenia danych: adres URL źródła dokumentu, suma kontrolna i znacznik czasu pozyskania
Migawka studium przypadku: Od niechlujnych plików PDF do zaufanych odpowiedzi
Zespół wsparcia pozyskał 1200 stron plików PDF. Początkowe wyszukiwanie było niespójne; agenci nie ufali botowi. Po przejściu na dzielenie semantyczne‑hybrydowe (800 tokenów, 80 nakładania się), włączeniu ponownego oceniania za pomocą cross‑encodera i wymuszeniu cytuj albo milcz, współczynnik trafień top‑k wzrósł z 62% do 89%, a wskaźnik adopcji agentów podwoił się. Kluczem nie był większy LLM — ale czystsze fragmenty i bardziej rygorystyczne wyszukiwanie.
Wskazówka dotycząca narzędzi: Szybka iteracja za pomocą paska bocznego AI
Warto zauważyć: jeśli eksperymentujesz z promptami i fragmentami wyszukiwania w wielu dokumentach, asystent AI, który umożliwia czatowanie na plikach PDF, stronach internetowych i kodzie bezpośrednio z przeglądarki, może przyspieszyć iterację. Nawiasem mówiąc, Sider.AI (https://sider.ai/) oferuje pasek boczny AI, który umożliwia pobieranie kontekstu ze strony, na której się znajdujesz, podsumowywanie i szybkie dopracowywanie promptów. Jest to przydatne do prototypowania promptów RAG i testowania jakości fragmentów przed sformalizowaniem potoku. Rozwiązywanie problemów z RAGFlow: Szybkie poprawki
- „Model jest pewny, ale się myli”.
- Włącz sprawdzanie możliwości udzielenia odpowiedzi; obniż temperaturę; wymagaj cytatów
- „Wyszukiwanie zwraca prawie duplikaty”.
- Włącz MMR; dodaj narzędzie do ponownego oceniania; zmniejsz nakładanie się fragmentów
- „Opóźnienia gwałtownie rosną w szczycie”.
- Wsadowe osadzanie; buforowanie przepisywania zapytań; użyj generowania strumieniowego
- „Stare zasady wciąż się pojawiają”.
- Filtruj według
version = latest; wycofaj lub oznacz jako usunięte nieaktualne dokumenty
Następne kroki: Zapewnij niezawodność RAGFlow w produkcji
- Zacznij od małego, zaufanego korpusu; najpierw udoskonal dzielenie na fragmenty i filtry
- Dodaj narzędzie do ponownego oceniania przed aktualizacją LLM
- Zbuduj zbiór ewaluacyjny ze 100 pytań i śledź współczynnik trafień co tydzień
- Podłącz sprzężenie zwrotne użytkownika, aby stale dostrajać wyszukiwanie
Kluczowe wnioski:
- Jakość wyszukiwania jest ważniejsza niż rozmiar modelu dla RAG
- Dzielenie na fragmenty, metadane i ponowne ocenianie to Twoje podstawowe dźwignie
- Zabezpieczenia, takie jak cytuj albo milcz, dramatycznie zwiększają zaufanie
- Zainwestuj wcześnie w obserwowalność i ewaluację
Dzięki tym praktykom RAGFlow staje się niezawodnym kręgosłupem dla ugruntowanych odpowiedzi — niezależnie od tego, czy zasilasz bota pomocy, copilota programisty, czy wewnętrznego asystenta wiedzy.
FAQ
P1: Czym jest RAGFlow i jak mogę go używać do QA dokumentów?
RAGFlow to framework do budowania potoków generowania rozszerzonego o wyszukiwanie. Pozyskujesz, dzielisz na fragmenty, osadzasz, wyszukujesz i generujesz odpowiedzi z cytatami, aby zmniejszyć halucynacje i poprawić dokładność.
P2: Jak powinienem dzielić dokumenty na fragmenty w RAGFlow?
Używaj semantycznego lub hybrydowego dzielenia na fragmenty z fragmentami o długości 600–1000 tokenów i nakładaniem się 50–100 tokenów. W przypadku kodu dziel na fragmenty według funkcji lub klasy i dołącz otaczający kontekst.
P3: Która baza danych wektorów najlepiej współpracuje z RAGFlow?
Wybierz magazyn, który obsługuje wyszukiwanie hybrydowe, filtry metadanych i ponowne ocenianie — Qdrant, Weaviate, Pinecone lub opcja lokalna to częste wybory.
P4: Jak zapobiec halucynacjom w aplikacji RAGFlow?
Wymuś zasadę cytuj‑albo‑milcz, dodaj sprawdzanie możliwości udzielenia odpowiedzi przed generowaniem i przestrzegaj ścisłych promptów dotyczących używania tylko pobranego kontekstu.
P5: Jakie metryki powinienem śledzić, aby ocenić RAGFlow?
Monitoruj współczynnik trafień wyszukiwania, wiarygodność odpowiedzi, opóźnienie i koszt na 100 zapytań i utrzymuj mały, ale reprezentatywny zestaw ewaluacyjny.