← 返回列表

AI serijos interviu klausimai 11: Kaip optimizuoti RAG?

RAG optimizavimas nėra vieno etapo reguliavimas, o visos grandinės optimizavimo procesas. Žemiau pateikiu sistemingas optimizavimo strategijas iš duomenų indeksavimo, paieškos, generavimo ir vertinimo dimensijų, kartu su praktine patirtimi, kurią galima paminėti interviu.


1. Duomenų indeksavimo optimizavimas (gerinti „žinių bazės“ kokybę)

Tai dažniausiai nepastebima, bet greičiausiai duoda rezultatų.

Optimizavimo taškas Problemos požymis Konkretūs veiksmai Efektyvumo rodiklis
Dokumentų analizė Lentelės, diagramos PDF faile ignoruojamos, tekstas sugadintas arba tvarka neteisinga. Naudoti geresnę analizės biblioteką (pvz., unstructured, pypdf su išdėstymo išsaugojimu); lenteles išgauti naudojant pandas ir konvertuoti į Markdown. Atšaukimas +5–15 %
Teksto bloko dydis Per mažas chunk praranda kontekstą (pvz., „Šių metų pajamos“ – „šių“ nuorodos praradimas); per didelis chunk sukelia triukšmą. Eksperimentuoti su skirtingu bloko dydžiu (256/512/768 tokenai), perdengimą nustatyti 10–20 %; ilgiems dokumentams skaidyti pagal semantines ribas (pastraipas/antraštes), o ne fiksuotu ilgiu. Pataikymo rodiklis / ištikimybė
Metaduomenų pridėjimas Rastas atitinkamas fragmentas, bet negalima nustatyti šaltinio ar laiko, arba reikia filtruoti pagal sritį. Kiekvienam blokui pridėti metaduomenis: source (failo vardas/URL), timestamp, page_num, doc_type. Paieškos metu naudoti filtrus (pvz., doc_type == 'teisinis'). Filtravimo tikslumas
Įterpimo modelio pasirinkimas Bendrinis embedding prastai veikia specifinėse srityse (medicina, kodas, teisė). Naudoti srities suderintą modelį (BGE‑large‑zh, GTE‑Qwen2‑7B‑instruct) arba suderinti savo embedding modelį (naudojant triplet loss). Paieškos MRR@10 +10–20 %

2. Paieškos optimizavimas (kad „vartymas“ būtų tikslesnis)

Paieška lemia LLM pateikiamos „informacinės medžiagos“ kokybę.

Optimizavimo taškas Problemos požymis Konkretūs veiksmai Efektyvumas
Mišri paieška Vektorinė paieška negali rasti tikslių terminų (pvz., gaminio modelis ABC-123), raktinių žodžių paieška nesupranta sinonimų. Vienu metu naudoti vektorinę paiešką (semantinę) ir BM25 (raktinius žodžius), sujungti per svorius (pvz., 0,7 * vektoriai + 0,3 * BM25) arba per rerank. Atšaukimas +10–25 %
Perrikiavimas (Rerank) Pirmi vektorinės paieškos rezultatai nėra patys aktualiausi, geriausias gali būti dešimtas. Naudoti cross‑encoder modelį (pvz., BGE‑reranker-v2, Cohere Rerank) kandidatų rinkiniui (pvz., pirmi 20) iš naujo įvertinti, pasirinkti top‑K. Pataikymas žymiai pagerėja (ypač top‑1)
Užklausos perrašymas Vartotojo klausimas neaiškus ar kelių posūkių dialoge yra neišsami nuoroda („Kokia jo kaina?“). Naudoti LLM, kad pakeistų klausimą į paieškai tinkamesnę formą (pvz., „Kokia iPhone 15 kaina?“); arba papildyti naudojant dialogo istoriją. Atšaukimas +5–15 %
HyDE Vartotojo klausimas per trumpas arba abstraktus (pvz., „Papasakok apie fotosintezę“), tiesioginė paieška prasta. Pirmiausia leisti LLM sugeneruoti hipotetinį atsakymą, tada naudoti šį atsakymą dokumentų paieškai. Tinka atviriems domenams, bet ne faktiniam tiksliam atsakymui
Paieškos kiekio Top‑K reguliavimas Per mažas K gali praleisti svarbią informaciją; per didelis K padidina tokenų suvartojimą ir triukšmą. Eksperimentuoti su K=3/5/10, stebėti atšaukimo ir atsakymo ištikimybės balansą. Efektyvumo ir rezultatų kompromisas

3. Generavimo optimizavimas (kad LLM gerai išnaudotų informacinę medžiagą)

Net ir gera paieška, jei nurodymai prasti ar modelis silpnas, rezultatas nebus geras.

Optimizavimo taškas Problemos požymis Konkretūs veiksmai Efektyvumas
Nurodymų inžinerija LLM ignoruoja rastą informaciją arba kuria melagingus faktus. Aiškiai nurodyti: „Atsakykite tik remdamiesi pateikta informacija. Jeigu informacijos nepakanka arba ji nesusijusi, atsakykite „Nėra pakankamai informacijos“.“ Pridėti few‑shot pavyzdžius, rodančius, kaip cituoti šaltinius. Ištikimybė +20–40 %
Konteksto suspaudimas Rasta informacija per ilga (viršija modelio konteksto langą) arba daug triukšmo. Naudoti LLMLingua arba selektyvų kontekstą, suspausti, palikti tik aktualiausius sakinius, tada siųsti LLM. Sumažina informacijos praradimo riziką
LLM modelio naujinimas Mažas modelis (7B) negali atlikti sudėtingo samprotavimo arba neišlaiko ilgo konteksto. Naudoti galingesnį modelį (GPT‑4o, Claude 3.5 Sonnet, Qwen2.5‑72B). Samprotavimo tikslumas žymiai padidėja
Srautinis atsakymas ir citavimas Vartotojas negali patikrinti atsakymo patikimumo. Generavimo metu leisti LLM išvesti [citation:1], atitinkantį paieškos dokumento numerį. Gale pridėti originalo nuorodą. Vartotojų pasitikėjimas + galimybė derinti
Atsisakymo kalibravimas Modelis atsako, kai neturėtų, arba sako „nežinau“, kai turėtų atsakyti. Nustatyti panašumo slenkstį: jei rasto top‑1 bloko kosinuso panašumas su klausimu mažesnis nei 0,7, nurodyti LLM „Medžiaga nesusijusi“. Sumažina haliucinacijų dažnį

4. Vertinimo ir iteracijos pusė (žinoti, kur koreguoti)

Be matavimo nėra optimizavimo.

Optimizavimo taškas Veiksmai Rodikliai
Vertinimo rinkinio sudarymas Paruošti 100–300 tikrų vartotojų klausimų + standartiniai atsakymai + teisingi paieškos dokumentų ID. Apimti skirtingą sudėtingumą, skirtingus tikslus.
Automatinis vertinimas Naudoti RAGAS (Ištikimybė, Atsakymo aktualumas, Konteksto atšaukimas) arba TruLens. Trys pagrindiniai rodikliai: ištikimybė, atsakymo aktualumas, konteksto atšaukimas.
Žmogaus vertinimas Kiekvieną savaitę atrinkti 20 blogų atvejų, analizuoti klaidų tipus (paieškos nesėkmė / generavimo klaida / žinių bazės trūkumas). Prioritetų nustatymas tobulinimui.
A/B testavimas Gamybinėje aplinkoje segmentuoti skirtingas paieškos strategijas (pvz., BM25 prieš mišrią paiešką). Tinklo rodikliai: vartotojų pasitenkinimas, atsakymo nebuvimo dažnis.

5. Interviu galima paminėti „praktinę patirtį“ (pliusiniai taškai)

„Mano atsakingame RAG projekte pradinis pataikymo rodiklis buvo tik 67%. Aš padariau tris dalykus:
1. Bloko dydį pakeičiau iš fiksuoto 1024 į dinaminį semantinį skaidymą (pagal antraštes + pastraipas), pataikymo rodiklis pakilo iki 74%;
2. Pridėjau mišrią paiešką (vektoriai + BM25) ir nedidelį rerank modelį, pataikymo rodiklis išaugo iki 83%;
3. Optimizavau nurodymus ir priverčiau atsakymą pradėti nuo [Nerasta informacijos], haliucinacijų dažnis sumažėjo nuo 22% iki mažiau nei 5%.

Be to, sukūrėme nuolatinio vertinimo grandinę: prieš kiekvieną pakeitimą paleisdavome 200 klausimų RAGAS balus, užtikrindami, kad nėra regresijos.“


Galutinė santrauka: pilnas RAG optimizavimo maršrutas

Duomenų sluoksnis ─→ Dokumentų valymas, blokų optimizavimas, metaduomenų stiprinimas, srities embedding
Paieškos sluoksnis ─→ Mišri paieška, rerank, užklausos perrašymas, HyDE, Top-K optimizavimas
Generavimo sluoksnis ─→ Nurodymų stiprinimas, instrukcijų reikalavimai, suspaudimas, citavimas, atsisakymo slenkstis
Vertinimo sluoksnis ─→ Vertinimo rinkinys, RAGAS, žmogaus analizė, A/B eksperimentai

评论

暂无已展示的评论。

发表评论(匿名)