AI-sarjan haastattelukysymys 11: Miten RAG:ia optimoidaan?
RAG:n optimointi ei ole yhden osa-alueen säätöä, vaan koko ketjun optimointiprosessi. Alla annan systemaattisia optimointistrategioita neljästä ulottuvuudesta: tietoindeksointi, haku, generointi ja arviointi, sekä liitän käytännön kokemuksia, joita voi mainita haastattelussa.
1. Tietoindeksointipuolen optimointi ("tietokannan" laadun parantaminen)
Tämä on helposti huomiotta jäävä mutta nopeimmin tuloksia tuova osa.
| Säätökohta | Ongelma | Tarkka toimenpide | Vaikutusmittari |
|---|---|---|---|
| Dokumentin jäsennys | PDF:n taulukot, vuokaaviot jätetään huomiotta, tai teksti on sotkussa. | Käytä parempia jäsennyskirjastoja (esim. unstructured, pypdf asettelun säilytystila); taulukoille käytä pandas-kirjastoa ja muunna ne Markdowniksi. |
Hakutarkkuus +5–15 % |
| Tekstin lohkokoko | Liian pieni lohko menettää kontekstin (esim. "Hänen liikevaihtonsa kasvoi" - "hän" viittaus katoaa); liian suuri lohko lisää kohinaa. | Kokeile eri lohkokokoja (256/512/768 tokenia), limitys 10–20 %; pitkille dokumenteille jaa semanttisten rajojen (kappaleet/otsikot) mukaan eikä kiinteän pituuden perusteella. | Osumatarkkuus / uskollisuus |
| Metadatan lisääminen | Osuma löytyy, mutta lähdettä tai aikaa ei voida jäljittää, tai tarvitaan alakohtaista suodatusta. | Lisää jokaiselle lohkolle metadataa: source (tiedostonimi/URL), timestamp, page_num, doc_type. Käytä hakusuodattimia (esim. doc_type == 'legal'). |
Suodatuksen tarkkuus |
| Upotusmallin valinta | Yleinen upotusmalli toimii huonosti erikoisaloilla (lääketiede, koodi, laki). | Käytä alakohtaiseen tarpeeseen hienosäädettyjä malleja (BGE-large-zh, GTE-Qwen2-7B-instruct); tai hienosäädä oma upotusmalli (triplet loss -menetelmällä). | Haussa MRR@10 +10–20 % |
2. Hakupuolen optimointi ("kirjan selaamisen" tarkentaminen)
Haku määrää LLM:lle syötettävän "lähdemateriaalin" laadun.
| Säätökohta | Ongelma | Tarkka toimenpide | Vaikutus |
|---|---|---|---|
| Yhdistelmähaku | Vektorihaku ei löydä tarkkoja termejä (esim. tuotemalli ABC-123), avainsanahaku ei ymmärrä synonyymejä. |
Käytä samanaikaisesti vektorihakua (semanttinen) ja BM25:ttä (avainsana), yhdistä painotuksella (esim. 0.7vektori + 0.3BM25) tai rerank-fuusiolla. | Hakutarkkuus +10–25 % |
| Uudelleenjärjestäminen (Rerank) | Vektoriotosten kärkitulokset eivät ole aina osuvimpia, 10. tulos saattaa olla paras. | Käytä cross-encoder-mallia (esim. BGE-reranker-v2, Cohere Rerank) uudelleen pisteyttämään kandidaattijoukko (esim. 20 parasta) ja ota top-K. |
Osumatarkkuus paranee merkittävästi (etenkin top-1) |
| Kyselyn uudelleenkirjoitus | Käyttäjän kysymys on epäselvä tai monivuoroisessa keskustelussa viittaus on epäselvä ("Mikä sen hinta on?"). | Käytä LLM:ää muokkaamaan alkuperäinen kysymys hakuun sopivammaksi (esim. "Mikä on iPhone 15:n hinta?"); tai täydennä keskusteluhistorian avulla. | Hakutarkkuus +5–15 % |
| HyDE | Kysymys on liian lyhyt tai abstrakti (esim. "Kerro fotosynteesistä"), suora haku on tehoton. | Anna LLM:n ensin tuottaa hypoteettinen vastaus, ja käytä tätä vastausta dokumenttien hakuun. | Sopii avoimiin alueisiin, mutta ei tosiasiatarkkoihin kysymyksiin |
| Top-K -arvon säätö | Liian pieni K saattaa jättää tärkeän tiedon pois; liian suuri K lisää token-kulutusta ja kohinaa. | Kokeile K=3/5/10, tarkkaile hakutarkkuuden ja vastauksen uskollisuuden tasapainoa. | Tehokkuuden ja tulosten välinen kompromissi |
3. Generointipuolen optimointi (LLM:n hyödyntäminen lähdemateriaalista)
Vaikka haku olisi tarkka, huono kehote tai malli ei toimi.
| Säätökohta | Ongelma | Tarkka toimenpide | Vaikutus |
|---|---|---|---|
| Kehotesuunnittelu | LLM jättää huomiotta hakutulokset tai keksii asioita. | Anna selkeä ohje: "Vastaa vain alla olevan lähdemateriaalin perusteella. Jos materiaali ei riitä tai ei ole relevanttia, vastaa 'Ei tarpeeksi tietoa'." Lisää muutamia esimerkkejä siitä, miten lähteisiin viitataan. | Uskollisuus +20–40 % |
| Kontekstin pakkaaminen | Haettu sisältö on liian pitkä (ylittää mallin konteksti-ikkunan) tai sisältää paljon kohinaa. | Käytä LLMLingua tai Valikoiva konteksti -pakkausta, säilytä olennaisimmat lauseet ennen LLM:lle lähettämistä. |
Vähentää tiedon menettämisen riskiä |
| LLM-mallin päivitys | Pieni malli (7B) ei kykene monimutkaiseen päättelyyn tai muista pitkää kontekstia. | Vaihda vahvempaan malliin (GPT-4o, Claude 3.5 Sonnet, Qwen2.5-72B). | Päättelytarkkuus paranee huomattavasti |
| Virtaus ja lähteet | Käyttäjä ei voi varmistaa vastauksen luotettavuutta. | Anna LLM:n tuottaa [citation:1]-viittauksia, jotka vastaavat haettujen dokumenttien numeroita. Liitä taustalle alkuperäisen tekstin linkki. |
Käyttäjän luottamus + virheenkorjaus |
| Vastauksesta kieltäytymisen kalibrointi | Malli keksii vastauksia, kun ei pitäisi, tai sanoo ei tiedä, kun pitäisi osata. | Aseta samankaltaisuuskynnys: jos parhaan lohkon kosiniläheisyys kysymyksen kanssa on alle 0.7, kehota LLM:ää sanomaan "lähde ei ole relevantti". | Hallusinaatioiden väheneminen |
4. Arviointi ja iterointi (tiedä mihin säätää)
Ilman mittareita ei voi optimoida.
| Säätökohta | Toimenpide | Mittari |
|---|---|---|
| Arviointijoukon luominen | Valmistele 100–300 oikeaa käyttäjäkysymystä + oikea vastaus + oikea haettavan dokumentin ID. | Kattaa eri vaikeustasot ja eri tarkoitukset. |
| Automaattinen arviointi | Käytä RAGAS (uskollisuus, vastauksen relevanssi, kontekstin muistaminen) tai TruLens. | Kolme ydintunnuslukua: uskollisuus, vastauksen relevanssi, kontekstin muistaminen. |
| Manuaalinen arviointi | Poimi viikoittain 20 huonoa tapausta, analysoi virhetyyppi (haku epäonnistui / generointivirhe / tietokannan puute). | Parannusprioriteettien järjestys. |
| A/B-testaus | Jaa tuotantoympäristössä liikennettä eri hakustrategioille (esim. BM25 vs. yhdistelmähaku). | Verkkomittarit: käyttäjätyytyväisyys, vastaamattomien kysymysten osuus. |
5. Haastattelussa mainittavaa "käytännön kokemusta" (lisäpisteitä)
"Vastuullani olleessa RAG-projektissa alkuperäinen osumatarkkuus oli vain 67 %. Tein kolme asiaa:
1. Vaihdoin kiinteästä 1024 pituisesta lohkosta dynaamiseen semanttiseen jakamiseen (otsikon ja kappaleen mukaan), osumatarkkuus nousi 74 %:iin;
2. Lisäsin yhdistelmähaun (vektori + BM25) ja pienen rerank-mallin, osumatarkkuus nousi 83 %:iin;
3. Paransin kehotetta ja pakotin käyttämään[tietoa ei löytynyt], hallusinaatioiden määrä laski 22 %:sta alle 5 %:iin.Lisäksi loimme jatkuvan arviointiputken: ennen jokaista muutosta ajamme RAGAS-pisteet 200 kysymykselle varmistaaksemme, ettei taantumaa tapahdu."
Lopuksi: Kattava RAG:n optimointisuunnitelma
Tietokerros ─→ Dokumenttien puhdistus, lohkojen optimointi, metadatan lisäys, alakohtainen upotus
Hakukerros ─→ Yhdistelmähaku, rerank, kyselyn uudelleenkirjoitus, HyDE, Top-K -säätö
Generointikerros ─→ Kehotteen tehostus, ohjeiden asetus, pakkaus, lähteet, kieltäytymiskynnys
Arviointikerros ─→ Arviointijoukko, RAGAS, manuaalinen analyysi, A/B-kokeet
评论
暂无已展示的评论。
发表评论(匿名)