← 返回列表

AI-seriens intervjufråga 11: Hur optimerar man RAG?

Optimering av RAG är inte en justering av en enskild del, utan en process av fullkedjeoptimering. Nedan ger jag systematiska optimeringsstrategier utifrån fyra dimensioner: dataindexeringssidan, hämtningssidan, genereringssidan och utvärderingssidan, och bifogar praktiska erfarenheter som kan nämnas i intervjuer.


1. Optimering på dataindexeringssidan (förbättra kvaliteten på "kunskapsbasen")

Detta är den mest förbisedda men samtidigt mest effektiva förbättringen.

Optimeringspunkt Problemobservation Specifik åtgärd Effektmått
Dokumenttolkning Tabeller och flödesdiagram i PDF ignoreras, eller texten blir otydlig och ordningen felaktig. Byt till bättre tolkningbibliotek (t.ex. unstructured, pypdf med layoutbevarande läge); för tabeller, använd pandas för extraktion och konvertera till Markdown. Återkallelse +5~15%
Textstyckestorlek För små chunkar förlorar sammanhang (t.ex. "hans intäkter växte i år" där "hans" referens försvinner); för stora chunkar leder till mer brus vid sökning. Experimentera med olika chunk-storlekar (256/512/768 tokens), med överlappning satt till 10–20%; för långa dokument, klipp efter semantiska gränser (stycken/rubriker) istället för fast längd. Träfffrekvens / pålitlighet
Metadata-tillägg Relevanta stycken hittas men kan inte spåras till källa eller tid, eller det behövs filtrering efter ämne. Lägg till metadata för varje chunk: source (filnamn/URL), timestamp, page_num, doc_type. Använd filter vid sökning (t.ex. doc_type == 'legal'). Filtreringsprecision
Val av inbäddningsmodell Generisk embedding presterar dåligt inom vertikala domäner (medicin, kod, juridik). Använd domänfinjusterade modeller (BGE-large-zh, GTE-Qwen2-7B-instruct); eller finjustera en egen inbäddningsmodell (med triplet loss). Sök-MRR@10 +10~20%

2. Optimering på söksidan (göra "bläddringen" mer träffsäker)

Sökningen avgör kvaliteten på de "referensmaterial" som matas till LLM:en.

Optimeringspunkt Problemobservation Specifik åtgärd Effekt
Hybridsökning Vektorsökning kan inte matcha exakta termer (t.ex. produktmodell ABC-123), nyckelordssökning förstår inte synonymer. Använd både vektorsökning (semantisk) och BM25 (nyckelord), kombinera via viktning (t.ex. 0.7vektor + 0.3BM25) eller rerankning. Återkallelse +10~25%
Omrankning (Rerank) De första resultaten från vektorsökning är inte alltid mest relevanta; det 10:e kan vara bäst. Använd en cross-encoder-modell (t.ex. BGE-reranker-v2, Cohere Rerank) för att poängsätta kandidater (t.ex. topp 20) och ta top-K. Träfffrekvensen ökar markant (särskilt top-1)
Frågeomformulering Användarens fråga är vag eller otydlig i flervändskonversation ("Vad är priset på den?"). Låt LLM:en omformulera den ursprungliga frågan till en mer sökvänlig form (t.ex. "Vad är priset på iPhone 15?"); eller komplettera med dialoghistorik. Återkallelse +5~15%
HyDE Användarens fråga är för kort eller abstrakt (t.ex. "Berätta om fotosyntes"), direkt sökning fungerar dåligt. Låt först LLM:en generera ett hypotetiskt svar, använd sedan detta svar för att söka i dokumenten. Lämplig för öppna domäner, men inte för faktabaserade exakta frågor
Justering av sökantal Top-K För litet K kan missa viktig information; för stort K ökar tokenförbrukning och brus. Experimentera med K=3/5/10, observera balansen mellan återkallelse och svarspålitlighet. Avvägning mellan effektivitet och resultat

3. Optimering på genereringssidan (få LLM:en att använda referensmaterialet väl)

Även om sökningen är träffsäker, om prompten är dålig eller modellen inte räcker till, så blir det inget bra.

Optimeringspunkt Problemobservation Specifik åtgärd Effekt
Promptteknik LLM:en ignorerar sökresultaten eller hittar på fakta. Tydlig instruktion: "Svara endast baserat på de medföljande referensmaterialen. Om materialet inte räcker eller är irrelevant, svara 'Det finns inte tillräcklig information'." Lägg till few-shot-exempel som visar hur man citerar källor. Pålitlighet +20~40%
Kontextkomprimering Det hämtade materialet är för långt (över modellens kontextfönster) eller innehåller mycket brus. Använd LLMLingua eller selektiv kontext-komprimering, behåll de mest relevanta meningarna innan de skickas till LLM:en. Minskar risk för att förlora information
Uppgradering av LLM-modell Liten modell (7B) klarar inte komplexa resonemang eller minns lång kontext dåligt. Byt till starkare modell (GPT-4o, Claude 3.5 Sonnet, Qwen2.5-72B). Resonemangsprecision förbättras avsevärt
Strömning och citering Användaren kan inte verifiera svarspålitlighet. Låt LLM:en under genereringen mata ut [citation:1] som motsvarar det hämtade dokumentets ID. Bifoga originaltextlänk på serversidan. Användartillit + felsökning
Kalibrering av nekande svar Modellen hittar på när den inte borde svara, eller säger 'vet inte' när den borde svara. Sätt en likhetströskel: om cosinuslikheten mellan den hämtade top-1-chunken och frågan är lägre än 0,7, uppmana LLM:en att "materialet är irrelevant". Minskar hallucinationer

4. Utvärderings- och iterationssidan (veta vart man ska justera)

Utan mätning går det inte att optimera.

Optimeringspunkt Åtgärd Mått
Skapa utvärderingsset Förbered 100–300 verkliga användarfrågor + standardsvar + korrekta dokument-ID:n för sökning. Täck olika svårighetsgrader och avsikter.
Automatiserad utvärdering Använd RAGAS (Faithfulness, Answer Relevance, Context Recall) eller TruLens. Tre kärnmått: pålitlighet, svarsrelevans, kontextåterkallelse.
Manuell utvärdering Varje vecka granska 20 dåliga fall, analysera feltyper (sökfel / generationsfel / kunskapsbrist). Prioriteringsordning för förbättringar.
A/B-test I produktionsmiljö, testa olika sökstrategier i delade grupper (t.ex. BM25 vs hybridsökning). Online-mått: användarnöjdhet, andel obesvarade frågor.

5. "Praktiska erfarenheter" att nämna i intervjuer (pluspoäng)

"I det RAG-projekt jag ansvarade för var baslinjeträfffrekvensen initialt bara 67%. Jag gjorde tre saker:
1. Ändrade chunkning från fast 1024 till dynamisk semantisk uppdelning (efter rubrik + stycke), träfffrekvensen steg till 74%;
2. Lade till hybridsökning (vektor + BM25) och en liten rerank-modell, träfffrekvensen steg till 83%;
3. Optimerade prompten och tvingade fram [Ingen relevant information hittad], hallucinationerna minskade från 22% till under 5%.

Dessutom byggde vi en kontinuerlig utvärderingspipeline; varje ändring testades mot 200 frågor med RAGAS-poäng för att säkerställa ingen försämring."


Slutlig sammanfattning: En komplett roadmap för RAG-optimering

Datalager ─→ Rengöring av dokument, optimering av uppdelning, metadataförbättring, domänanpassad embedding
Söklager ─→ Hybridsökning, rerankning, frågeomformulering, HyDE, Top-K-justering
Genereringslager ─→ Promptförbättring, instruktionskrav, komprimering, citering, tröskel för nekande svar
Utvärderingslager ─→ Utvärderingsset, RAGAS, manuell analys, A/B-experiment

评论

暂无已展示的评论。

发表评论(匿名)