Oppaat

Mikä on RAG? Retrieval-Augmented Generation selitettynä yksinkertaisesti

RAG (retrieval-augmented generation) on tapa saada tekoälymalli vastaamaan kysymyksiin omalla tiedollasi. Kun joku esittää kysymyksen, sovelluksesi etsii ensin dokumenteistasi olennaisimmat kohdat ja antaa ne sitten mallille kysymyksen mukana. Malli kirjoittaa vastauksensa tuon tekstin pohjalta sen sijaan, että luottaisi vain siihen, mitä se sattui oppimaan koulutuksessa.

Miksi RAG on tärkeä, kun rakennat tekoälyllä

Suuri kielimalli tuntee maailmaa yleisesti, mutta ei yritystäsi: hintojasi, käytäntöjäsi, tuotteen käsikirjaa tai viime viikon tukipyyntöjä. Sillä on myös koulutuksen katkaisupäivä, joten se ei tiedä mitään uutta. Jos kysyt siltä silti, se voi tuottaa itsevarman, uskottavan ja väärän vastauksen.

Tähän on kolme laajaa tapaa:

LähestymistapaMitä se tekeeSopii parhaiten
Liitä kaikki kehotteeseenLähetä kaikki dokumentit joka kysymyksen mukanaPieni määrä tekstiä, muutama sivu
RAGEtsi dokumenteista ja lähetä vain olennaiset osatSuuremmat tai muuttuvat kokoelmat: ohjekeskukset, käsikirjat, muistiinpanot
HienosäätöKouluta mallia lisää esimerkeilläSävy, muoto ja toistuvat tehtävät, ei muuttuvat faktat

Nykyiset mallit hyväksyvät pitkiä kehotteita, joten lyhyelle FAQ:lle ensimmäinen vaihtoehto on usein riittävä. RAG ansaitsee paikkansa, kun tekstiä on enemmän kuin haluat lähettää joka kerta, koska jokainen lähettämäsi sana maksaa rahaa ja aikaa (katso miten LLM-rajapinnat laskutetaan).

Jos rakennat ominaisuutta ”chatti dokumenttiemme kanssa”, tukiavustajaa tai sisäistä tietotyökalua, rakennat melko varmasti jonkinlaista RAG:ia.

Arkinen vertaus

Kuvittele avoimen kirjan koe. Opiskelija, joka vastaa muistista, voi muistaa väärin tai bluffata. Opiskelija, jonka saa ensin selata oikeat sivut, lukea ne ja sitten vastata, on paljon luotettavampi, kunhan hän löytää oikeat sivut.

  • Opiskelija on kielimalli.
  • Oppikirja on dokumenttisi.
  • Oikeiden sivujen löytäminen on hakua (retrieval).
  • Vastauksen kirjoittaminen näiden sivujen pohjalta on generointia.

RAG on avoimen kirjan versio. Ja kuten kokeessa, vastauksen laatu riippuu paljon siitä, löytyivätkö oikeat sivut.

Miten RAG toimii askel askeleelta

Tyypillisessä RAG-ratkaisussa on kaksi vaihetta.

Dokumenttien valmistelu (tehdään etukäteen):

  1. Kerää lähdemateriaali: ohjeartikkelit, PDF-tiedostot, käytännöt, tuotetiedot.
  2. Pilko se: jaa pitkät dokumentit pienempiin paloihin, usein muutaman kappaleen kokoisiksi, jotta haku voi palauttaa vain olennaisen osan.
  3. Upota jokainen pala: lähetä se upotusmallille (embedding model), joka muuttaa tekstin upotukseksi eli pitkäksi lukulistaksi, joka kuvaa sen merkitystä. Samoista asioista kertovilla teksteillä on samankaltaiset luvut.
  4. Tallenna palat ja niiden upotukset tietokantaan, joka osaa hakea samankaltaisuuden perusteella. Sitä kutsutaan usein vektoritietokannaksi tai vektori-indeksiksi.

Kysymykseen vastaaminen (tehdään joka kerta):

  1. Upota kysymys samalla upotusmallilla.
  2. Hae palat, joiden upotukset ovat lähimpänä kysymyksen upotusta, esimerkiksi viisi parasta.
  3. Rakenna kehote: ohjeet, haetut palat ja kysymys.
  4. Generoi: kielimalli kirjoittaa vastauksen näiden palojen pohjalta, mieluiten mainiten, mitä paloja se käytti.

Merkitykseen perustuva haku tekee tästä toimivan. Kysymys ”rahani takaisin” voi löytää palan otsikolla ”Palautuskäytäntö”, vaikka niillä ei ole yhteisiä sanoja.

Työstetty esimerkki: kuntosalin ohjeavustaja

Oletetaan, että kuntosalilla on 40 ohjeartikkelia ja se haluaa chat-avustajan verkkosivulleen. Jäsen kysyy: „Voinko keskeyttää jäsenyyteni matkustaessani?”

Sovellus upottaa kysymyksen ja hakee kolme lähintä palaa. Yksi niistä kuuluu:

Jäsenyyden jäädytys: Kuukausisopimuksen jäsenet voivat jäädyttää
jäsenyytensä enintään 2 kuukaudeksi vuodessa. Pyydä sitä vastaanotosta
tai sovelluksesta vähintään 7 päivää ennen jäädytyksen alkua.

Malliin lähetettävä kehote näyttää suunnilleen tältä:

Olet Northside Gymin ohjeavustaja.
Vastaa vain alla olevien lähteiden perusteella. Jos vastausta ei ole niissä,
sano, ettet tiedä, ja ehdota ottamaan yhteyttä vastaanottoon.
Mainitse, mitä lähdettä käytit.

[Lähde 1: Jäsenyyden jäädytys] Kuukausisopimuksen jäsenet voivat jäädyttää...
[Lähde 2: Jäsenyyden peruminen] ...
[Lähde 3: Vierasliput] ...

Kysymys: Voinko keskeyttää jäsenyyteni matkustaessani?

Malli vastaa: „Kyllä. Kuukausisopimuksella voit jäädyttää jäsenyytesi enintään kahdeksi kuukaudeksi vuodessa. Pyydä sitä vastaanotosta tai sovelluksesta vähintään 7 päivää ennen (lähde: Jäsenyyden jäädytys).”

Kuntosali ei kouluttanut mitään uudelleen. Kun se muuttaa jäädytyskäytäntöä, se päivittää artikkelin, sovellus upottaa palan uudelleen ja seuraava vastaus heijastaa muutosta.

Keskeiset termit

TermiMerkitys
LLMSuuri kielimalli, joka kirjoittaa vastauksen. Katso mikä LLM on.
Upotus (embedding)Lukulista, joka kuvaa tekstin merkitystä.
UpotusmalliMalli, joka tuottaa upotuksia. Yleensä erillinen ja huomattavasti chat-mallia halvempi.
Pala (chunk)Osa dokumenttia, kooltaan sellainen, että se voidaan palauttaa itsenäisesti.
Vektoritietokanta / vektorihakuTallennus, joka löytää samankaltaisia upotuksia. Joku tavallinen tietokanta tarjoaa sitä myös, esimerkiksi Postgres pgvector-laajennuksen kautta.
Top-kKuinka monta palaa haetaan kysymystä kohden.
HybridihakuMerkitykseen perustuvan ja tavallisen avainsanahaun yhdistäminen. Auttaa tarkoissa termeissä, kuten tuotekoodeissa.
KontekstiikkunaSuurin tekstimäärä, jonka malli ottaa vastaan yhdessä pyynnössä.
Maadoitus / lainauksetVastauksen sitominen tiettyihin haettuihin lähteisiin ja niiden näyttäminen.

Yleiset väärinkäsitykset

  • ”RAG kouluttaa mallin datallani.” Ei kouluta. Mallin mikään ei muutu. Se vain lukee ylimääräistä tekstiä kysymyshetkellä.
  • ”RAG tarkoittaa, ettei hallusinaatioita enää ole.” Se tarkoittaa vähemmän niitä. Jos haku ohittaa oikean palan tai vastausta ei ole dokumenteissasi, malli voi silti arvata. Ohjeista sitä sanomaan ”en tiedä” ja testaa kysymyksillä, joiden vastaukset tiedät.
  • ”Tarvitsen erityisen vektoritietokannan.” Usein et tarvitse. Pieneen datamäärään riittää jo olemassa olevan tietokantasi vektorilaajennus, tai jopa tavallinen avainsanahaku.
  • ”Isommat palat ovat aina parempia.” Liian suuret palat lähettävät paljon epäolennaista tekstiä, mikä lisää kustannuksia ja sekaannusta. Liian pienet palat menettävät kontekstin, joka teki niistä merkityksellisiä. Odota säätämistä.
  • ”Lataa vain kaikki.” Vanhentuneet, päällekkäiset tai ristiriitaiset dokumentit tuottavat ristiriitaisia vastauksia. Lähdemateriaalin siivoaminen on usein suurin parannus, jonka voit tehdä.
  • ”Kuka tahansa voi nähdä minkä tahansa dokumentin.” Vain jos rakennat sen niin. Jos jotkin dokumentit ovat yksityisiä tietyille käyttäjille, haun täytyy suodattaa sen mukaan, kuka kysyy. Muuten avustaja voi lainata yhden asiakkaan tietoja toiselle.

Mitä se maksaa

RAG-ominaisuudella on yleensä kolme juoksevaa kustannusta: dokumenttien upottaminen (pieni ja enimmäkseen kertaluonteinen), jokaisen kysymyksen upottaminen (hyvin pieni) ja kielimallikutsu. Viimeinen on pääkustannus, ja se kasvaa lähetettävien palojen määrän mukana. Lisäksi tulee tallennus tietokannassasi. Tekoälyntarjoajasi laskuttaa nämä omalta tililtäsi, joten aseta kulutusraja siellä.

Mitä kysyä tekoälyrakentajalta

  • ”Ennen RAG:in rakentamista tarkista: onko sisältömme tarpeeksi pieni, jotta se voi vain sisältyä kehotteeseen?”
  • ”Pilko tukiartikkelit muutaman kappaleen paloihin, säilytä jokaisen palan otsikko ja lähdelinkki ja tallenna upotukset tietokantaamme.”
  • ”Käytä hybridihakua, eli merkitykseen perustuvaa ja avainsanahakua, jotta tuotekoodit löytyvät.”
  • ”Ohjeista malli vastaamaan vain haettujen lähteiden perusteella, sanomaan kun se ei tiedä ja näyttämään lähteet jokaisen vastauksen alla.”
  • ”Hae vain dokumentteja, joihin kirjautunut käyttäjä saa päästä.”
  • ”Upota dokumentti uudelleen automaattisesti aina, kun sitä muokataan.”
  • ”Pidä tekoälyntarjoajan avain palvelimella salaisuutena, ei selaimessa.”
  • ”Kirjaa jokainen kysymys, haetut palat ja vastaus, jotta voin tarkistaa huonot vastaukset.”

RAG Mythexissä

Mythex ei sisällä valmista tietämyskanta- tai RAG-tuotetta. Se kirjoittaa sellaisen koodin sovellukseesi: tuot omat dokumenttisi ja oman tekoälyntarjoajasi avaimen, joka tallennetaan projektin salaisuutena. Agentti rakentaa haku- ja chat-osat ja käyttää tallennukseen projektin Postgres-tietokantaa. Tarjoajan käyttö laskutetaan tekoälyntarjoajan tililtä, ei Mythex-krediiteistä. Dokumentaation mukaan kannattaa aloittaa yhdellä yksinkertaisella tekoälyominaisuudella ja lisätä RAG, kun se toimii. Katso tekoälysovelluksen rakentaminen, tekoälychatbot-sovelluksen rakentaminen ja tekoälyominaisuuksien lisääminen sovellukseen.

Kysymykset

Mitä RAG on yksinkertaisesti?

RAG (retrieval-augmented generation) on tapa saada tekoäly vastaamaan omasta tiedostasi. Ennen kuin malli vastaa, sovelluksesi etsii dokumenteistasi kysymykseen liittyvimmät kohdat ja lisää ne kehotteeseen, joten vastaus perustuu tuohon tekstiin eikä vain siihen, mitä malli oppi koulutuksessa.

Kouluttaako RAG tekoälyn datallani?

Ei. RAG ei muuta mallia lainkaan. Se etsii olennaisen tekstin juuri kysymyshetkellä ja välittää sen mallille kysymyksen mukana. Kun päivität dokumentin, seuraava vastaus voi käyttää uutta versiota heti.

Onko RAG sama asia kuin hienosäätö?

Ei. Hienosäätö muuttaa mallin käyttäytymistä kouluttamalla sitä lisää esimerkeillä. Se on hitaampaa ja sopii paremmin tyyliin tai muotoon. RAG antaa mallille faktat luettaviksi kysymyshetkellä, mikä sopii paremmin tietoon, joka muuttuu tai joka on siteerattava tarkasti.

Estääkö RAG tekoälyn hallusinaatiot?

Se vähentää niitä, mutta ei poista kokonaan. Jos haku löytää väärät kohdat tai vastausta ei ole dokumenteissasi, malli voi silti arvata. Hyvät RAG-sovellukset ohjeistavat mallin sanomaan, kun se ei tiedä, ja näyttävät käyttämänsä lähteet.

Mythex · Pricing · Rakenna mitä tahansa tekoälyllä · Verkkosivu- ja sovellusmallipohjat · Mythex vertailussa · Tekoälysovellusten rakentamisen sanasto · Ilmaiset työkalut tekoälysovellusten rakentamiseen · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)