← 返回列表

AI sērijas intervijas jautājums 11: Kā optimizēt RAG?

RAG optimizācija nav viena posma regulēšana, bet gan pilnas ķēdes optimizācijas process. Tālāk es sniedzu sistemātisku optimizācijas stratēģiju no četrām dimensijām: datu indeksēšanas puse, iegūšanas puse, ģenerēšanas puse un novērtēšanas puse, kopā ar praktisku pieredzi, ko var minēt intervijā.


1. Datu indeksēšanas puses optimizācija ("zināšanu bāzes" kvalitātes uzlabošana)

Šī ir vieta, kas visbiežāk tiek ignorēta, bet dod visātrākos rezultātus.

Optimizācijas punkts Problēmas parādība Konkrēta darbība Efektivitātes rādītājs
Dokumentu parsēšana Tabulas, diagrammas PDF failos tiek ignorētas, vai teksts ir haotisks, secība sajaukta. Izmantojiet labāku parsēšanas bibliotēku (piemēram, unstructured, pypdf izkārtojuma saglabāšanas režīmu); tabulām izmantojiet pandas un pārveidojiet Markdown formātā. Atrašanas līmenis +5~15%
Teksta sadalīšanas lielums Chunk ir pārāk mazs, zaudējot kontekstu (piemēram, "viņa šī gada ieņēmumi pieauga" — "viņa" norāde zūd); chunk pārāk liels rada daudz trokšņa. Eksperimentējiet ar dažādiem chunk izmēriem (256/512/768 tokeni), pārklāšanos 10-20%; gariem dokumentiem sadaliet pēc semantiskām robežām (rindkopas/virsraksti), nevis fiksēta garuma. Trāpījumu līmenis / uzticība
Metadatu pievienošana Atrasts atbilstošs fragments, bet nevar izsekot avotu vai laiku, vai nepieciešams filtrēt pēc jomas. Katram chunk pievienojiet metadatus: source (faila nosaukums/URL), timestamp, page_num, doc_type. Iegūšanas laikā izmantojiet filtrus (piem., doc_type == 'legal'). Filtrēšanas precizitāte
Embedding modeļa izvēle Universāli embedding slikti darbojas specializētās jomās (medicīna, kods, tiesības). Izmantojiet jomā pielāgotus modeļus (BGE-large-zh, GTE-Qwen2-7B-instruct); vai arī pielāgojiet savu embedding modeli (izmantojot triplet loss). Iegūšanas MRR@10 +10~20%

2. Iegūšanas puses optimizācija (lai "lapu šķirstīšana" būtu precīzāka)

Iegūšana nosaka LLM padoto "atsauces materiālu" kvalitāti.

Optimizācijas punkts Problēmas parādība Konkrēta darbība Efekts
Hibrīda iegūšana Vektoru iegūšana nespēj atrast precīzus terminus (piem., produkta modelis ABC-123), atslēgvārdu iegūšana nesaprot sinonīmus. Vienlaikus izmantot vektoru iegūšanu (semantisko) un BM25 (atslēgvārdus), apvienojot ar svēršanu (piem., 0.7vektors + 0.3BM25) vai pārkārtošanu. Atrašanas līmenis +10~25%
Pārkārtošana (Rerank) Pirmie daži rezultāti no vektoru iegūšanas ne vienmēr ir visatbilstošākie, 10. ir labākais. Izmantojiet cross-encoder modeli (piem., BGE-reranker-v2, Cohere Rerank), lai pārvērtētu kandidātu kopu (piem., pirmos 20) un ņemtu top-K. Ievērojams trāpījumu līmeņa pieaugums (īpaši top-1)
Vaicājuma pārrakstīšana Lietotāja jautājums ir neskaidrs vai vairāku apmaiņu dialogā norāde nav skaidra ("Kāda ir tā cena?"). Izmantojiet LLM, lai pārrakstītu sākotnējo jautājumu formātā, kas ir piemērotāks iegūšanai (piem., "Cik maksā iPhone 15?"); vai izmantojiet dialoga vēsturi, lai papildinātu. Atrašanas līmenis +5~15%
HyDE Lietotāja jautājums ir pārāk īss vai abstrakts (piem., "Pastāstiet par fotosintēzi"), tiešā iegūšana ir vāja. Vispirms lieciet LLM ģenerēt hipotētisku atbildi, pēc tam izmantojiet šo atbildi, lai iegūtu dokumentus. Piemērots atvērtām jomām, bet ne precīziem faktiskiem jautājumiem
Iegūto skaits Top-K Ja K ir pārāk mazs, var tikt palaista garām svarīga informācija; pārāk liels K palielina tokenu patēriņu un troksni. Eksperimentējiet ar K=3/5/10, novērojiet balansu starp atrašanas līmeni un atbildes precizitāti. Efektivitātes un rezultāta kompromiss

3. Ģenerēšanas puses optimizācija (lai LLM labi izmantotu atsauces materiālus)

Ja iegūšana ir precīza, bet norādes vai modelis nav labi, tas nelīdz.

Optimizācijas punkts Problēmas parādība Konkrēta darbība Efekts
Norāžu inženierija LLM ignorē iegūto saturu vai izdomā. Skaidri norādiet: "Atbildiet tikai, pamatojoties uz tālāk sniegtajiem avotiem. Ja informācijas nav pietiekami vai tā nav atbilstoša, atbildiet 'Nav pietiekami daudz informācijas.' " Pievienojiet few-shot piemērus, kas parāda, kā citēt avotus. Uzticība +20~40%
Konteksta saspiešana Iegūtais saturs ir pārāk garš (pārsniedz modeļa konteksta logu) vai lielākā daļa ir troksnis. Izmantojiet LLMLingua vai selektīvu kontekstu saspiešanu, saglabājot tikai atbilstošākos teikumus pirms nosūtīšanas LLM. Samazina informācijas zuduma risku
LLM modeļa jaunināšana Mazs modelis (7B) nespēj veikt sarežģītu spriešanu vai atcerēties garu kontekstu. Pārejiet uz spēcīgāku modeli (GPT-4o, Claude 3.5 Sonnet, Qwen2.5-72B). Ievērojams spriešanas precizitātes pieaugums
Straumēšana un citāti Lietotājs nevar pārbaudīt atbildes ticamību. Ģenerēšanas laikā lieciet LLM izvadīt [citāts:1], kas atbilst iegūtā dokumenta numuram. Aizmugursistēmā pievienojiet saiti uz oriģinālu. Lietotāja uzticība + iespēja atkļūdot
Atteikšanās atbildēt kalibrēšana Modelis izdomā, kad nevajadzētu, vai saka "nezinu", kad vajadzētu atbildēt. Iestatiet līdzības slieksni: ja iegūtā top-1 fragmenta kosinusa līdzība ar jautājumu ir zemāka par 0.7, norādiet LLM "Informācija nav atbilstoša". Samazina halucināciju līmeni

4. Novērtēšanas un iterācijas puse (zināt, kur optimizēt)

Bez mērījumiem nav iespējams optimizēt.

Optimizācijas punkts Darbība Rādītājs
Izveidot novērtēšanas kopu Sagatavojiet 100-300 reālus lietotāju jautājumus + standarta atbildes + pareizos iegūto dokumentu ID. Aptver dažādas grūtības pakāpes, dažādus nolūkus.
Automatizēta novērtēšana Izmantojiet RAGAS (Uzticība, Atbildes atbilstība, Konteksta atgādināšana) vai TruLens. Trīs galvenie rādītāji: uzticība, atbildes atbilstība, konteksta atgādināšana.
Cilvēka novērtēšana Katru nedēļu nejauši pārbaudiet 20 sliktos gadījumus, analizējot kļūdu veidus (iegūšanas neveiksme / ģenerēšanas kļūda / zināšanu bāzes trūkums). Prioritāšu noteikšana uzlabojumiem.
A/B testēšana Ražošanas vidē sadaliet lietotājus grupās, lai testētu dažādas iegūšanas stratēģijas (piem., BM25 vs hibrīda iegūšana). Tiešsaistes rādītāji: lietotāju apmierinātība, bezatbildes līmenis.

5. Intervijā minamā "praktiskā pieredze" (pluspunkti)

"Manā RAG projektā sākotnējais bāzes trāpījumu līmenis bija tikai 67%. Es izdarīju trīs lietas:
1. Nomainīju fiksēto 1024 sadalījumu uz dinamisku semantisko sadalījumu (pēc virsrakstiem un rindkopām), trāpījumu līmenis pieauga līdz 74%;
2. Ieviesu hibrīdo iegūšanu (vektori + BM25) un nelielu rerank modeli, trāpījumu līmenis sasniedza 83%;
3. Uzlaboju norādes un noteicu obligātu [Nav atrasta atbilstoša informācija], halucināciju līmenis samazinājās no 22% līdz zem 5%.

Turklāt mēs izveidojām nepārtrauktas novērtēšanas cauruļvadu, katru reizi pirms izmaiņām palaižot 200 jautājumu RAGAS rezultātus, lai pārliecinātos par regresiju neesamību."


Nobeigumā: pilna RAG optimizācijas ceļa karte

Datu slānis ─→ Dokumentu tīrīšana, sadalīšanas optimizācija, metadatu uzlabošana, jomas embedding
Iegūšanas slānis ─→ Hibrīda iegūšana, rerank, vaicājuma pārrakstīšana, HyDE, Top-K optimizācija
Ģenerēšanas slānis ─→ Norāžu stiprināšana, instrukciju prasības, saspiešana, citāti, atteikšanās slieksnis
Novērtēšanas slānis ─→ Novērtēšanas kopa, RAGAS, cilvēka analīze, A/B eksperimenti

评论

暂无已展示的评论。

发表评论(匿名)