AI serija intervjujev 11: Kako optimizirati RAG?
Optimizacija RAG ni prilagajanje ene same komponente, temveč proces celostne optimizacije. Spodaj podajam sistematične strategije optimizacije iz štirih dimenzij: strani indeksiranja podatkov, strani iskanja, strani generiranja in strani vrednotenja, skupaj s praktičnimi izkušnjami, ki jih lahko omenite na razgovoru.
1. Optimizacija na strani indeksiranja podatkov (izboljšanje kakovosti "zbirke znanja")
To je najpogosteje spregledano področje, vendar prinaša najhitrejše rezultate.
| Točka optimizacije | Težava | Konkretni ukrep | Kazalnik učinka |
|---|---|---|---|
| Razčlenjevanje dokumentov | Tabele, diagrami poteka v PDF so prezrti ali besedilo je nepravilno kodirano/ nepravilnega vrstnega reda. | Uporaba boljših knjižnic za razčlenjevanje (npr. unstructured, način ohranitve postavitve pypdf); za tabele uporabite pandas za ekstrakcijo in pretvorbo v Markdown. |
Stopnja priklica +5–15 % |
| Velikost kosov besedila | Premajhni kosi izgubijo kontekst (npr. "njegova rast prihodkov" – "njegov" se nanaša na kaj); preveliki kosi povzročijo veliko šuma pri iskanju. | Preizkusite različne velikosti kosov (256/512/768 žetonov), prekrivanje nastavite na 10–20 %; za dolge dokumente uporabite rezanje po pomenskih mejah (odstavki/naslovi) namesto fiksne dolžine. | Stopnja zadetkov / zvestoba |
| Dodajanje metapodatkov | Najdeni so pomembni odstavki, vendar ni mogoče slediti viru ali času, ali pa je potrebno filtriranje po področju. | Vsakemu kosu dodajte metapodatke: source (ime datoteke/URL), timestamp, page_num, doc_type. Pri iskanju uporabite filtre (npr. doc_type == 'legal'). |
Natančnost filtriranja |
| Izbira vgradnega modela | Splošni vgradni modeli so slabi v vertikalnih področjih (medicina, koda, pravo). | Uporabite modele, prilagojene področju (BGE‑large‑zh, GTE‑Qwen2‑7B‑instruct) ali prilagodite svoj vgradni model (s triplet loss). | MRR@10 +10–20 % |
2. Optimizacija na strani iskanja (natančnejše "listanje")
Iskanje določa kakovost "referenčnega gradiva", ki se posreduje LLM.
| Točka optimizacije | Težava | Konkretni ukrep | Učinek |
|---|---|---|---|
| Mešano iskanje | Vektorsko iskanje ne more natančno ujemati specifičnih izrazov (npr. model izdelka ABC-123), iskanje po ključnih besedah ne razume sinonimov. |
Hkratna uporaba vektorskega iskanja (pomensko) in BM25 (ključne besede) s ponderiranjem (npr. 0,7vektor + 0,3BM25) ali združitvijo z rerank. | Stopnja priklica +10–25 % |
| Ponovno razvrščanje (Rerank) | Prvih nekaj rezultatov vektorskega iskanja ni nujno najbolj relevantnih, 10. je najboljši. | Z modelom cross‑encoder (npr. BGE‑reranker-v2, Cohere Rerank) ponovno ocenite kandidate (npr. prvih 20) in vzemite top‑K. |
Bistveno izboljšanje stopnje zadetkov (zlasti top‑1) |
| Prepisovanje poizvedb | Uporabnikova vprašanja so nejasna ali pa v večobratnem pogovoru reference niso jasne ("Koliko stane?"). | Z LLM preoblikujte prvotno vprašanje v obliko, bolj primerno za iskanje (npr. "Koliko stane iPhone 15?"); ali dopolnite z zgodovino pogovora. | Stopnja priklica +5–15 % |
| HyDE | Uporabnikovo vprašanje je prekratko ali preveč abstraktno (npr. "Povej o fotosintezi"), neposredno iskanje je slabo. | Naj LLM ustvari hipotetičen odgovor, nato ta odgovor uporabite za iskanje po dokumentih. | Primerno za odprta področja, ne pa za dejstvena natančna vprašanja |
| Prilagajanje števila iskanih kosov Top‑K | Premajhen K lahko spregleda ključne informacije; prevelik K poveča porabo žetonov in šum. | Preizkusite K=3/5/10, opazujte ravnovesje med stopnjo priklica in zvestobo odgovora. | Kompromis med učinkovitostjo in kakovostjo |
3. Optimizacija na strani generiranja (da LLM dobro izkoristi referenčno gradivo)
Tudi če je iskanje natančno, slaba navodila ali šibek model ne bodo delovali.
| Točka optimizacije | Težava | Konkretni ukrep | Učinek |
|---|---|---|---|
| Inženiring pozivov | LLM ignorira najdeno vsebino ali si izmišlja. | Jasno navodilo: "Odgovorite samo na podlagi priloženih referenc. Če informacije niso dovolj ali niso relevantne, odgovorite: 'Ni dovolj informacij.'" Dodajte few‑shot primere, ki prikazujejo navajanje virov. | Zvestoba +20–40 % |
| Stiskanje konteksta | Najdena vsebina je predolga (presega kontekstno okno modela) ali večinoma šum. | Uporabite LLMLingua ali selektivno stiskanje konteksta, ohranite najbolj relevantne stavke, nato pošljite LLM. |
Zmanjšanje tveganja izgube informacij |
| Nadgradnja LLM | Majhen model (7B) ne zmore kompleksnega sklepanja ali dolgega konteksta. | Zamenjajte z močnejšim modelom (GPT‑4o, Claude 3.5 Sonnet, Qwen2.5‑72B). | Bistveno izboljšanje natančnosti sklepanja |
| Pretakanje in citiranje | Uporabnik ne more preveriti verodostojnosti odgovora. | Med generiranjem naj LLM izpiše [citation:1], ki ustreza številki najdenega dokumenta. Na zadnji strani priložite povezavo do izvirnika. |
Zaupanje uporabnika + možnost odpravljanja napak |
| Kalibracija zavrnitve odgovora | Model si izmišlja, ko ne bi smel, ali pa reče "ne vem", ko bi moral odgovoriti. | Nastavite prag podobnosti: če je kosinusna podobnost med najdenim top‑1 kosom in vprašanjem nižja od 0,7, naj LLM sporoči, da gradivo ni relevantno. | Zmanjšanje stopnje halucinacij |
4. Stran vrednotenja in iteracije (vedeti, kam prilagoditi)
Brez meritev ni mogoče optimizirati.
| Točka optimizacije | Ukrep | Kazalnik |
|---|---|---|
| Vzpostavitev evaluacijskega nabora | Pripravite 100–300 realnih uporabniških vprašanj + standardne odgovore + pravilne ID najdenih dokumentov. | Zajemite različne težavnosti in namene. |
| Avtomatizirano vrednotenje | Uporabite RAGAS (Faithfulness, Answer Relevance, Context Recall) ali TruLens. | Trije ključni kazalniki: zvestoba, relevantnost odgovora, priklic konteksta. |
| Ročno vrednotenje | Tedensko preverite 20 slabih primerov, analizirajte vrsto napak (napaka iskanja / napaka generiranja / manjkajoča zbirka znanja). | Določite prioritete izboljšav. |
| A/B testiranje | V produkcijskem okolju testirajte različne strategije iskanja (npr. BM25 vs mešano iskanje) na skupinah. | Spletni kazalniki: zadovoljstvo uporabnikov, stopnja neodgovorjenih vprašanj. |
5. "Praktične izkušnje" za omeniti na razgovoru (dodatna točka)
"V projektu RAG, ki sem ga vodil, je bila začetna stopnja zadetkov le 67 %. Naredil sem tri stvari:
1. Spremenil sem rezanje kosov iz fiksnih 1024 na dinamično pomensko rezanje (po naslovih in odstavkih), stopnja zadetkov se je dvignila na 74 %;
2. Dodal sem mešano iskanje (vektor + BM25) in majhen model za ponovno razvrščanje, stopnja zadetkov je narasla na 83 %;
3. Optimiziral sem navodila in zahteval obvezno uporabo[Ni najdenih ustreznih informacij], stopnja halucinacij je padla z 22 % na manj kot 5 %.Poleg tega smo vzpostavili stalno evaluacijsko cevovod, ki je pred vsako spremembo zagnal RAGAS ocene na 200 vprašanjih, da smo zagotovili, da ni prišlo do poslabšanja."
Končni povzetek: Celoten načrt optimizacije RAG
Podatkovna plast ─→ Čiščenje dokumentov, optimizacija kosov, obogatitev metapodatkov, področni vgradni modeli
Iskalna plast ─→ Mešano iskanje, ponovno razvrščanje, prepisovanje poizvedb, HyDE, prilagajanje Top-K
Generativna plast ─→ Okrepitev pozivov, zahteve po navodilih, stiskanje, citiranje, prag zavrnitve
Evalvacijska plast ─→ Evalvacijski nabor, RAGAS, ročna analiza, A/B eksperimenti
评论
暂无已展示的评论。
发表评论(匿名)