← 返回列表

AI série otázek k pohovoru 11: Jak optimalizovat RAG?

Optimalizace RAG není úprava jediné fáze, ale proces optimalizace celého řetězce. Níže uvádím systematické optimalizační strategie ze čtyř dimenzí: strana indexace dat, strana vyhledávání, strana generování, strana vyhodnocení, spolu s praktickými zkušenostmi, které lze zmínit u pohovoru.


I. Optimalizace na straně indexace dat (zlepšení kvality "znalostní báze")

Toto je nejčastěji přehlížené místo, ale přináší nejrychlejší výsledky.

Optimalizační bod Problémový jev Konkrétní postup Metrika účinku
Zpracování dokumentů Tabulky, vývojové diagramy v PDF jsou ignorovány, nebo je text poškozený, pořadí zmatečné. Použít lepší parsovací knihovny (např. unstructured, pypdf s režimem zachování rozvržení); pro tabulky extrahovat pomocí pandas a převést do Markdown. Recall +5~15%
Velikost rozdělení textu Příliš malé chunk ztrácí kontext (např. "jeho letošní růst tržeb" – ztráta reference "jeho"); příliš velký chunk přináší šum při vyhledávání. Experimentovat s různou velikostí chunků (256/512/768 tokenů), překryv (overlap) nastavit na 10–20 %; u dlouhých dokumentů rozdělovat podle sémantických hranic (odstavce/nadpisy), ne na pevnou délku. Míra zásahu / věrnost
Přidání metadat Nalezen relevantní odstavec, ale nelze dohledat zdroj nebo čas, nebo je třeba filtrovat podle domény. Ke každému chunku přidat metadata: source (název souboru/URL), timestamp, page_num, doc_type. Při vyhledávání použít filtry (např. doc_type == 'legal'). Přesnost filtrování
Výběr embedding modelu Univerzální embeddingy fungují špatně ve vertikálních doménách (medicína, kód, právo). Použít doménově jemně doladěné modely (BGE‑large‑zh, GTE‑Qwen2‑7B‑instruct); nebo doladit vlastní embedding model (pomocí triplet loss). MRR@10 +10~20%

II. Optimalizace na straně vyhledávání (zpřesnění "listování v knize")

Vyhledávání určuje kvalitu "referenčních materiálů" předávaných LLM.

Optimalizační bod Problémový jev Konkrétní postup Účinek
Smíšené vyhledávání Vektorové vyhledávání nedokáže přesně přiřadit odborné termíny (např. produktový model ABC-123), klíčové slovo nechápe synonyma. Současně používat vektorové vyhledávání (sémantické) a BM25 (klíčová slova), kombinovat vážením (např. 0.7vektor + 0.3BM25) nebo rerank. Recall +10~25%
Přeřazování (Rerank) Prvních několik výsledků vektorového vyhledávání není nutně nejrelevantnější, až 10. je nejlepší. Použít cross‑encoder model (např. BGE‑reranker-v2, Cohere Rerank) k novému ohodnocení kandidátů (např. prvních 20) a vzít top‑K. Výrazné zlepšení míry zásahu (zejména top‑1)
Přepis dotazu Otázka uživatele je vágní nebo v průběhu více kol dialogu nejasná reference ("Jaká je jeho cena?"). Pomocí LLM přepsat původní otázku do formy vhodnější pro vyhledávání (např. "Jaká je cena iPhone 15?"); nebo doplnit pomocí historie dialogu. Recall +5~15%
HyDE Otázka uživatele je příliš krátká nebo abstraktní (např. "vysvětli fotosyntézu"), přímé vyhledávání je neefektivní. Nechat LLM vygenerovat hypotetickou odpověď a poté tuto odpověď použít k vyhledání dokumentů. Vhodné pro otevřené domény, ne pro přesné faktické dotazy
Úprava počtu vyhledávaných Top‑K Příliš malé K může ztratit klíčové informace; příliš velké K zvyšuje spotřebu tokenů a šum. Experimentovat s K=3/5/10, sledovat rovnováhu mezi recall a věrností odpovědi. Trade‑off mezi efektivitou a kvalitou

III. Optimalizace na straně generování (aby LLM dobře využíval referenční materiály)

I když je vyhledávání přesné, špatný prompt nebo model nepomohou.

Optimalizační bod Problémový jev Konkrétní postup Účinek
Inženýrství promptů LLM ignoruje nalezený obsah nebo si vymýšlí. Jasný pokyn: "Odpovídejte pouze na základě poskytnutých referenčních materiálů. Pokud jsou materiály nedostatečné nebo irelevantní, odpovězte 'Nemám dostatek informací'." Přidat few‑shot příklady ukazující, jak citovat zdroje. Věrnost +20~40%
Komprese kontextu Nalezený obsah je příliš dlouhý (přesahuje kontextové okno modelu) nebo obsahuje hodně šumu. Použít LLMLingua nebo selektivní kontext ke kompresi a zachovat pouze nejrelevantnější věty před předáním LLM. Snížení rizika ztráty informací
Upgrade modelu LLM Malé modely (7B) nezvládnou složité uvažování nebo si nepamatují dlouhý kontext. Použít silnější model (GPT‑4o, Claude 3.5 Sonnet, Qwen2.5‑72B). Výrazné zlepšení přesnosti uvažování
Streamování a citace Uživatel nemůže ověřit důvěryhodnost odpovědi. Během generování nechat LLM výstupovat [citation:1] odpovídající číslu referenčního dokumentu. Backend přiložit odkaz na původní text. Důvěra uživatele + laditelnost
Kalibrace odmítnutí odpovědi Model si vymýšlí, když by neměl, nebo říká "nevím", když by měl odpovědět. Nastavit prahovou hodnotu podobnosti: pokud je kosinová podobnost top‑1 chunku s otázkou nižší než 0,7, přimět LLM, aby řekl "Materiál není relevantní". Snížení míry halucinací

IV. Strana vyhodnocení a iterace (vědět, kam směřovat úpravy)

Bez měření nelze optimalizovat.

Optimalizační bod Postup Metrika
Vytvoření vyhodnocovací sady Připravit 100–300 skutečných otázek uživatelů + standardní odpovědi + správná ID dokumentů pro vyhledávání. Pokrýt různé obtížnosti a záměry.
Automatizované vyhodnocení Použít RAGAS (Faithfulness, Answer Relevance, Context Recall) nebo TruLens. Tři klíčové metriky: věrnost, relevance odpovědi, recall kontextu.
Manuální vyhodnocení Každý týden otestovat 20 špatných případů (bad case), analyzovat typ chyby (selhání vyhledávání / chyba generování / chybějící znalost). Stanovení priorit pro zlepšení.
A/B testování V produkčním prostředí testovat různé vyhledávací strategie (např. BM25 vs smíšené vyhledávání) na segmentech uživatelů. Online metriky: spokojenost uživatelů, míra nezodpovězených otázek.

V. "Praktické zkušenosti", které lze zmínit u pohovoru (bonusové body)

"V mém RAG projektu byla počáteční baseline přesnost zásahu pouze 67 %. Udělal jsem tři věci:
1. Změnil jsem rozdělování z pevné délky 1024 na dynamické sémantické dělení (podle nadpisů a odstavců), přesnost stoupla na 74 %;
2. Přidal jsem smíšené vyhledávání (vektor + BM25) a malý rerank model, přesnost stoupla na 83 %;
3. Optimalizoval jsem prompt a vynutil požadavek [Nenalezeny relevantní informace], míra halucinací klesla z 22 % na méně než 5 %.

Navíc jsme zřídili kontinuální vyhodnocovací pipeline, před každou změnou spouštíme RAGAS na 200 otázkách, abychom zajistili, že nedojde k degradaci."


Závěrečné shrnutí: Kompletní mapa cesty pro optimalizaci RAG

Datová vrstva ─→ čištění dokumentů, optimalizace rozdělení, rozšíření metadat, doménový embedding
Vyhledávací vrstva ─→ smíšené vyhledávání, rerank, přepis dotazu, HyDE, ladění Top-K
Generační vrstva ─→ posílení promptu, instrukční požadavky, komprese, citace, práh odmítnutí
Vyhodnocovací vrstva ─→ vyhodnocovací sada, RAGAS, manuální analýza, A/B experiment

评论

暂无已展示的评论。

发表评论(匿名)